From af217184dbf126a79d38aec142de7ae9f8faede5 Mon Sep 17 00:00:00 2001 From: HugoCasa Date: Thu, 13 Jul 2023 12:33:31 +0200 Subject: [PATCH] fix(frontend): store exists openai key (#1870) * fix(frontend): store exists openai key * fix: set to false if can't reach serv --- .../src/lib/components/codeGen/ScriptFix.svelte | 5 ++--- .../src/lib/components/codeGen/ScriptGen.svelte | 5 ++--- frontend/src/lib/components/codeGen/lib.ts | 14 +++++++++++--- frontend/src/lib/stores.ts | 1 + .../(logged)/workspace_settings/+page.svelte | 3 +++ 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/frontend/src/lib/components/codeGen/ScriptFix.svelte b/frontend/src/lib/components/codeGen/ScriptFix.svelte index ffeca6c3dd..5303bd3d83 100644 --- a/frontend/src/lib/components/codeGen/ScriptFix.svelte +++ b/frontend/src/lib/components/codeGen/ScriptFix.svelte @@ -6,8 +6,7 @@ import { sendUserToast } from '$lib/toast' import type Editor from '../Editor.svelte' import { faCheck, faClose, faMagicWandSparkles } from '@fortawesome/free-solid-svg-icons' - import { WorkspaceService } from '$lib/gen' - import { workspaceStore } from '$lib/stores' + import { existsOpenaiKeyStore } from '$lib/stores' import type DiffEditor from '../DiffEditor.svelte' import { scriptLangToEditorLang } from '$lib/scripts' @@ -60,7 +59,7 @@ async function checkIfOpenAIAvailable(lang: SupportedLanguage) { try { - const exists = await WorkspaceService.existsOpenaiKey({ workspace: $workspaceStore! }) + const exists = $existsOpenaiKeyStore openAIAvailable = exists && SUPPORTED_LANGUAGES.has(lang) } catch (err) { console.error(err) diff --git a/frontend/src/lib/components/codeGen/ScriptGen.svelte b/frontend/src/lib/components/codeGen/ScriptGen.svelte index 14846bd925..4abe3f065d 100644 --- a/frontend/src/lib/components/codeGen/ScriptGen.svelte +++ b/frontend/src/lib/components/codeGen/ScriptGen.svelte @@ -9,8 +9,7 @@ import Popup from '../common/popup/Popup.svelte' import { fade } from 'svelte/transition' import { Icon } from 'svelte-awesome' - import { WorkspaceService } from '$lib/gen' - import { workspaceStore } from '$lib/stores' + import { existsOpenaiKeyStore } from '$lib/stores' import type DiffEditor from '../DiffEditor.svelte' import { scriptLangToEditorLang } from '$lib/scripts' import type { Selection } from 'monaco-editor/esm/vs/editor/editor.api' @@ -76,7 +75,7 @@ async function checkIfOpenAIAvailable(lang: SupportedLanguage) { try { - const exists = await WorkspaceService.existsOpenaiKey({ workspace: $workspaceStore! }) + const exists = $existsOpenaiKeyStore openAIAvailable = exists && SUPPORTED_LANGUAGES.has(lang) } catch (err) { console.error(err) diff --git a/frontend/src/lib/components/codeGen/lib.ts b/frontend/src/lib/components/codeGen/lib.ts index 76d30eca92..db3dbef0ce 100644 --- a/frontend/src/lib/components/codeGen/lib.ts +++ b/frontend/src/lib/components/codeGen/lib.ts @@ -1,8 +1,8 @@ import { OpenAI } from 'openai' import { OpenAPI } from '../../gen/core/OpenAPI' -import { ResourceService, Script } from '../../gen' +import { ResourceService, Script, WorkspaceService } from '../../gen' -import { workspaceStore } from '$lib/stores' +import { existsOpenaiKeyStore, workspaceStore } from '$lib/stores' import { formatResourceTypes } from './utils' import { scriptLangToEditorLang } from '$lib/scripts' @@ -77,8 +77,16 @@ export const SUPPORTED_LANGUAGES = new Set(Object.keys(PROMPTS)) let workspace: string | undefined = undefined -workspaceStore.subscribe((value) => { +workspaceStore.subscribe(async (value) => { workspace = value + if (workspace) { + try { + existsOpenaiKeyStore.set(await WorkspaceService.existsOpenaiKey({ workspace })) + } catch (err) { + existsOpenaiKeyStore.set(false) + console.error('Could not get if openai key exists') + } + } }) interface BaseOptions { diff --git a/frontend/src/lib/stores.ts b/frontend/src/lib/stores.ts index 6df9fbcc07..ad124c5871 100644 --- a/frontend/src/lib/stores.ts +++ b/frontend/src/lib/stores.ts @@ -65,6 +65,7 @@ export const hubScripts = writable< }> | undefined >(undefined) +export const existsOpenaiKeyStore = writable(false) export function switchWorkspace(workspace: string | undefined) { localStorage.removeItem('flow') diff --git a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte index e3a221e41c..06424bdcfb 100644 --- a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte @@ -27,6 +27,7 @@ } from '$lib/gen' import { enterpriseLicense, + existsOpenaiKeyStore, superadmin, userStore, usersWorkspaceStore, @@ -133,12 +134,14 @@ workspace: $workspaceStore!, requestBody: { openai_key: openAIKey } }) + existsOpenaiKeyStore.set(true) sendUserToast('OpenAI key set') } else { await WorkspaceService.editOpenaiKey({ workspace: $workspaceStore!, requestBody: { openai_key: undefined } }) + existsOpenaiKeyStore.set(false) sendUserToast(`OpenAI key removed`) } }