diff --git a/src/core/config/__tests__/importExport.test.ts b/src/core/config/__tests__/importExport.test.ts index 8330187b3b..eef83959cc 100644 --- a/src/core/config/__tests__/importExport.test.ts +++ b/src/core/config/__tests__/importExport.test.ts @@ -56,6 +56,7 @@ describe("importExport", () => { setValues: jest.fn(), setValue: jest.fn(), export: jest.fn().mockImplementation(() => Promise.resolve({})), + setProviderSettings: jest.fn(), } as unknown as jest.Mocked // Setup customModesManager mock diff --git a/src/core/config/importExport.ts b/src/core/config/importExport.ts index e16314cb6c..f2456c7cab 100644 --- a/src/core/config/importExport.ts +++ b/src/core/config/importExport.ts @@ -6,6 +6,7 @@ import * as vscode from "vscode" import { z } from "zod" import { globalSettingsSchema } from "../../schemas" + import { ProviderSettingsManager, providerProfilesSchema } from "./ProviderSettingsManager" import { ContextProxy } from "./ContextProxy" import { CustomModesManager } from "./CustomModesManager" @@ -38,6 +39,7 @@ export const importSettings = async ({ providerSettingsManager, contextProxy, cu try { const previousProviderProfiles = await providerSettingsManager.export() + const { providerProfiles: newProviderProfiles, globalSettings } = schema.parse( JSON.parse(await fs.readFile(uris[0].fsPath, "utf-8")), ) @@ -59,9 +61,20 @@ export const importSettings = async ({ providerSettingsManager, contextProxy, cu ) await providerSettingsManager.import(newProviderProfiles) - await contextProxy.setValues(globalSettings) - contextProxy.setValue("currentApiConfigName", providerProfiles.currentApiConfigName) + + // Set the current provider. + const currentProviderName = providerProfiles.currentApiConfigName + const currentProvider = providerProfiles.apiConfigs[currentProviderName] + contextProxy.setValue("currentApiConfigName", currentProviderName) + + // TODO: It seems like we don't need to have the provider settings in + // the proxy; we can just use providerSettingsManager as the source of + // truth. + if (currentProvider) { + contextProxy.setProviderSettings(currentProvider) + } + contextProxy.setValue("listApiConfigMeta", await providerSettingsManager.listConfig()) return { providerProfiles, globalSettings, success: true } diff --git a/webview-ui/src/components/welcome/WelcomeView.tsx b/webview-ui/src/components/welcome/WelcomeView.tsx index 8e21b643ce..536a654844 100644 --- a/webview-ui/src/components/welcome/WelcomeView.tsx +++ b/webview-ui/src/components/welcome/WelcomeView.tsx @@ -1,5 +1,5 @@ import { useCallback, useState } from "react" -import { VSCodeButton } from "@vscode/webview-ui-toolkit/react" +import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react" import { useExtensionState } from "@src/context/ExtensionStateContext" import { validateApiConfiguration } from "@src/utils/validate" import { vscode } from "@src/utils/vscode" @@ -114,6 +114,17 @@ const WelcomeView = () => {
+
+ { + e.preventDefault() + vscode.postMessage({ type: "importSettings" }) + }} + className="text-sm"> + {t("welcome:importSettings")} + +
{t("welcome:start")} diff --git a/webview-ui/src/i18n/locales/ca/welcome.json b/webview-ui/src/i18n/locales/ca/welcome.json index bbc2c5d64c..d1c73ee6b6 100644 --- a/webview-ui/src/i18n/locales/ca/welcome.json +++ b/webview-ui/src/i18n/locales/ca/welcome.json @@ -23,5 +23,6 @@ "allow": "Permetre", "deny": "Denegar" }, - "or": "o" + "or": "o", + "importSettings": "Importar configuració" } diff --git a/webview-ui/src/i18n/locales/de/welcome.json b/webview-ui/src/i18n/locales/de/welcome.json index 8c8202f672..e92f63b149 100644 --- a/webview-ui/src/i18n/locales/de/welcome.json +++ b/webview-ui/src/i18n/locales/de/welcome.json @@ -23,5 +23,6 @@ "allow": "Erlauben", "deny": "Ablehnen" }, - "or": "oder" + "or": "oder", + "importSettings": "Einstellungen importieren" } diff --git a/webview-ui/src/i18n/locales/en/welcome.json b/webview-ui/src/i18n/locales/en/welcome.json index 5f46a80a03..f4b6e044bd 100644 --- a/webview-ui/src/i18n/locales/en/welcome.json +++ b/webview-ui/src/i18n/locales/en/welcome.json @@ -23,5 +23,6 @@ "allow": "Allow", "deny": "Deny" }, - "or": "or" + "or": "or", + "importSettings": "Import Settings" } diff --git a/webview-ui/src/i18n/locales/es/welcome.json b/webview-ui/src/i18n/locales/es/welcome.json index ccbf65bc6b..819bb485de 100644 --- a/webview-ui/src/i18n/locales/es/welcome.json +++ b/webview-ui/src/i18n/locales/es/welcome.json @@ -23,5 +23,6 @@ "allow": "Permitir", "deny": "Denegar" }, - "or": "o" + "or": "o", + "importSettings": "Importar configuración" } diff --git a/webview-ui/src/i18n/locales/fr/welcome.json b/webview-ui/src/i18n/locales/fr/welcome.json index 4b3bb43540..6dbe4534c4 100644 --- a/webview-ui/src/i18n/locales/fr/welcome.json +++ b/webview-ui/src/i18n/locales/fr/welcome.json @@ -23,5 +23,6 @@ "allow": "Autoriser", "deny": "Refuser" }, - "or": "ou" + "or": "ou", + "importSettings": "Importer les paramètres" } diff --git a/webview-ui/src/i18n/locales/hi/welcome.json b/webview-ui/src/i18n/locales/hi/welcome.json index 2c858d50b9..960e22164b 100644 --- a/webview-ui/src/i18n/locales/hi/welcome.json +++ b/webview-ui/src/i18n/locales/hi/welcome.json @@ -23,5 +23,6 @@ "allow": "अनुमति दें", "deny": "अस्वीकार करें" }, - "or": "या" + "or": "या", + "importSettings": "सेटिंग्स आयात करें" } diff --git a/webview-ui/src/i18n/locales/it/welcome.json b/webview-ui/src/i18n/locales/it/welcome.json index f521778b25..45c7bf58a9 100644 --- a/webview-ui/src/i18n/locales/it/welcome.json +++ b/webview-ui/src/i18n/locales/it/welcome.json @@ -23,5 +23,6 @@ "allow": "Consenti", "deny": "Nega" }, - "or": "o" + "or": "o", + "importSettings": "Importa impostazioni" } diff --git a/webview-ui/src/i18n/locales/ja/welcome.json b/webview-ui/src/i18n/locales/ja/welcome.json index d4af12478d..4374895cc3 100644 --- a/webview-ui/src/i18n/locales/ja/welcome.json +++ b/webview-ui/src/i18n/locales/ja/welcome.json @@ -23,5 +23,6 @@ "allow": "許可", "deny": "拒否" }, - "or": "または" + "or": "または", + "importSettings": "設定をインポート" } diff --git a/webview-ui/src/i18n/locales/ko/welcome.json b/webview-ui/src/i18n/locales/ko/welcome.json index 320e2f4af6..42d790f33a 100644 --- a/webview-ui/src/i18n/locales/ko/welcome.json +++ b/webview-ui/src/i18n/locales/ko/welcome.json @@ -23,5 +23,6 @@ "allow": "허용", "deny": "거부" }, - "or": "또는" + "or": "또는", + "importSettings": "설정 가져오기" } diff --git a/webview-ui/src/i18n/locales/pl/welcome.json b/webview-ui/src/i18n/locales/pl/welcome.json index b85aa0029b..4a49b95328 100644 --- a/webview-ui/src/i18n/locales/pl/welcome.json +++ b/webview-ui/src/i18n/locales/pl/welcome.json @@ -23,5 +23,6 @@ "allow": "Zezwól", "deny": "Odmów" }, - "or": "lub" + "or": "lub", + "importSettings": "Importuj ustawienia" } diff --git a/webview-ui/src/i18n/locales/pt-BR/welcome.json b/webview-ui/src/i18n/locales/pt-BR/welcome.json index 561655cf7b..a36cd511ed 100644 --- a/webview-ui/src/i18n/locales/pt-BR/welcome.json +++ b/webview-ui/src/i18n/locales/pt-BR/welcome.json @@ -23,5 +23,6 @@ "allow": "Permitir", "deny": "Negar" }, - "or": "ou" + "or": "ou", + "importSettings": "Importar configurações" } diff --git a/webview-ui/src/i18n/locales/ru/welcome.json b/webview-ui/src/i18n/locales/ru/welcome.json index 676bc1594b..5695a41993 100644 --- a/webview-ui/src/i18n/locales/ru/welcome.json +++ b/webview-ui/src/i18n/locales/ru/welcome.json @@ -23,5 +23,6 @@ "allow": "Разрешить", "deny": "Запретить" }, - "or": "или" + "or": "или", + "importSettings": "Импорт настроек" } diff --git a/webview-ui/src/i18n/locales/tr/welcome.json b/webview-ui/src/i18n/locales/tr/welcome.json index a2d6cc7cfa..b7d8141813 100644 --- a/webview-ui/src/i18n/locales/tr/welcome.json +++ b/webview-ui/src/i18n/locales/tr/welcome.json @@ -23,5 +23,6 @@ "allow": "İzin Ver", "deny": "Reddet" }, - "or": "veya" + "or": "veya", + "importSettings": "Ayarları İçe Aktar" } diff --git a/webview-ui/src/i18n/locales/vi/welcome.json b/webview-ui/src/i18n/locales/vi/welcome.json index 4a80252b66..aee957d6c0 100644 --- a/webview-ui/src/i18n/locales/vi/welcome.json +++ b/webview-ui/src/i18n/locales/vi/welcome.json @@ -23,5 +23,6 @@ "allow": "Cho phép", "deny": "Từ chối" }, - "or": "hoặc" + "or": "hoặc", + "importSettings": "Nhập cài đặt" } diff --git a/webview-ui/src/i18n/locales/zh-CN/welcome.json b/webview-ui/src/i18n/locales/zh-CN/welcome.json index 580d84cb66..95cffd131c 100644 --- a/webview-ui/src/i18n/locales/zh-CN/welcome.json +++ b/webview-ui/src/i18n/locales/zh-CN/welcome.json @@ -23,5 +23,6 @@ "allow": "允许", "deny": "拒绝" }, - "or": "或" + "or": "或", + "importSettings": "导入设置" } diff --git a/webview-ui/src/i18n/locales/zh-TW/welcome.json b/webview-ui/src/i18n/locales/zh-TW/welcome.json index ab3ac52fcb..62e543add3 100644 --- a/webview-ui/src/i18n/locales/zh-TW/welcome.json +++ b/webview-ui/src/i18n/locales/zh-TW/welcome.json @@ -23,5 +23,6 @@ "allow": "允許", "deny": "拒絕" }, - "or": "或是" + "or": "或是", + "importSettings": "匯入設定" }