diff --git a/src/interface/obsidian/src/settings.ts b/src/interface/obsidian/src/settings.ts index 875bd40a..5e0e3494 100644 --- a/src/interface/obsidian/src/settings.ts +++ b/src/interface/obsidian/src/settings.ts @@ -2,6 +2,15 @@ import { App, Notice, PluginSettingTab, Setting, TFile } from 'obsidian'; import Khoj from 'src/main'; import { canConnectToBackend, getBackendStatusMessage, updateContentIndex } from './utils'; +export interface UserInfo { + username?: string; + photo?: string; + is_active?: boolean; + has_documents?: boolean; + email?: string; +} + + export interface KhojSetting { resultsCount: number; khojUrl: string; @@ -9,7 +18,7 @@ export interface KhojSetting { connectedToBackend: boolean; autoConfigure: boolean; lastSync: Map; - userEmail: string; + userInfo: UserInfo | null; } export const DEFAULT_SETTINGS: KhojSetting = { @@ -19,7 +28,7 @@ export const DEFAULT_SETTINGS: KhojSetting = { connectedToBackend: false, autoConfigure: true, lastSync: new Map(), - userEmail: '', + userInfo: null, } export class KhojSettingTab extends PluginSettingTab { @@ -38,7 +47,7 @@ export class KhojSettingTab extends PluginSettingTab { let backendStatusEl = containerEl.createEl('small', { text: getBackendStatusMessage( this.plugin.settings.connectedToBackend, - this.plugin.settings.userEmail, + this.plugin.settings.userInfo?.email, this.plugin.settings.khojUrl, this.plugin.settings.khojApiKey )} @@ -55,7 +64,7 @@ export class KhojSettingTab extends PluginSettingTab { this.plugin.settings.khojUrl = value.trim().replace(/\/$/, ''); ({ connectedToBackend: this.plugin.settings.connectedToBackend, - userEmail: this.plugin.settings.userEmail, + userInfo: this.plugin.settings.userInfo, statusMessage: backendStatusMessage, } = await canConnectToBackend(this.plugin.settings.khojUrl, this.plugin.settings.khojApiKey)); @@ -71,7 +80,7 @@ export class KhojSettingTab extends PluginSettingTab { this.plugin.settings.khojApiKey = value.trim(); ({ connectedToBackend: this.plugin.settings.connectedToBackend, - userEmail: this.plugin.settings.userEmail, + userInfo: this.plugin.settings.userInfo, statusMessage: backendStatusMessage, } = await canConnectToBackend(this.plugin.settings.khojUrl, this.plugin.settings.khojApiKey)); await this.plugin.saveSettings(); diff --git a/src/interface/obsidian/src/utils.ts b/src/interface/obsidian/src/utils.ts index 11b6ac07..3f34864e 100644 --- a/src/interface/obsidian/src/utils.ts +++ b/src/interface/obsidian/src/utils.ts @@ -1,5 +1,5 @@ import { FileSystemAdapter, Notice, Vault, Modal, TFile, request } from 'obsidian'; -import { KhojSetting } from 'src/settings' +import { KhojSetting, UserInfo } from 'src/settings' export function getVaultAbsolutePath(vault: Vault): string { let adaptor = vault.adapter; @@ -173,31 +173,30 @@ export async function canConnectToBackend( khojUrl: string, khojApiKey: string, showNotice: boolean = false -): Promise<{ connectedToBackend: boolean; statusMessage: string, userEmail: string }> { +): Promise<{ connectedToBackend: boolean; statusMessage: string, userInfo: UserInfo | null }> { let connectedToBackend = false; - let userEmail: string = ''; + let userInfo: UserInfo | null = null; if (!!khojUrl) { let headers = !!khojApiKey ? { "Authorization": `Bearer ${khojApiKey}` } : undefined; - await request({ url: `${khojUrl}/api/health`, method: "GET", headers: headers }) - .then(response => { + try { + let response = await request({ url: `${khojUrl}/api/v1/user`, method: "GET", headers: headers }) connectedToBackend = true; - userEmail = JSON.parse(response)?.email; - }) - .catch(error => { + userInfo = JSON.parse(response); + } catch (error) { connectedToBackend = false; console.log(`Khoj connection error:\n\n${error}`); - }); + }; } - let statusMessage: string = getBackendStatusMessage(connectedToBackend, userEmail, khojUrl, khojApiKey); + let statusMessage: string = getBackendStatusMessage(connectedToBackend, userInfo?.email, khojUrl, khojApiKey); if (showNotice) new Notice(statusMessage); - return { connectedToBackend, statusMessage, userEmail }; + return { connectedToBackend, statusMessage, userInfo }; } export function getBackendStatusMessage( connectedToServer: boolean, - userEmail: string, + userEmail: string | undefined, khojUrl: string, khojApiKey: string ): string {