diff --git a/desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte b/desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte index 9f8b8afe91..db53a93fea 100644 --- a/desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte +++ b/desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte @@ -67,7 +67,11 @@ let updating = $state(false) let confirmSwitchOpen = $state(false) let targetTag = $state("") let switching = $state(false) -let status = $derived(providerStatus(provider, $providerJobs[provider.name])) +let status = $derived( + provider + ? providerStatus(provider, $providerJobs[provider.name]) + : { kind: "uninitialized" as const, label: "" }, +) function openVersionSwitch(tag: string) { targetTag = tag @@ -91,7 +95,9 @@ let hasUnfilledRequired = $derived.by(() => { return requiredOptions.some(([key]) => !optionValues[key]?.trim()) }) -let versionEntry = $derived($providerVersions.byProvider[provider.name]) +let versionEntry = $derived( + provider ? $providerVersions.byProvider[provider.name] : undefined, +) let groupedOptions = $derived.by(() => { const groups: Record = {} @@ -135,7 +141,7 @@ async function loadOptions() { } $effect(() => { - if (!open) { + if (!open || !provider) { loadedFor = null return } @@ -147,9 +153,10 @@ $effect(() => { }) async function handleSetDefault() { + const name = provider.name try { - await providerUse(provider.name) - toasts.success(`Set ${provider.name} as default provider`) + await providerUse(name) + toasts.success(`Set ${name} as default provider`) } catch (err) { toasts.error(`Failed to set default: ${extractErrorMessage(err)}`) } @@ -177,14 +184,15 @@ function handleUpdate() { } async function runUpdate() { + const name = provider.name updating = true try { // Also re-initializes: the new binaries have not run their init, and // set-source clears the initialized flag accordingly. - await providerUpdate(provider.name) - toasts.success(`Updated ${provider.name}`) + await providerUpdate(name) + toasts.success(`Updated ${name}`) providers.set(await providerList()) - await loadVersionsFor(provider.name) + await loadVersionsFor(name) await refreshUpdates() } catch (err) { toasts.error(`Failed to update: ${extractErrorMessage(err)}`) @@ -195,12 +203,13 @@ async function runUpdate() { } async function runSwitch() { + const name = provider.name switching = true try { - await providerSetVersion(provider.name, targetTag) - toasts.success(`Switched ${provider.name} to ${targetTag}`) + await providerSetVersion(name, targetTag) + toasts.success(`Switched ${name} to ${targetTag}`) providers.set(await providerList()) - await loadVersionsFor(provider.name) + await loadVersionsFor(name) await refreshUpdates() } catch (err) { toasts.error(`Failed to switch version: ${extractErrorMessage(err)}`) @@ -227,13 +236,14 @@ function extractCliError(err: unknown): CLIError | null { } async function handleInitialize() { + const name = provider.name initializing = true initError = null try { - await providerInit(provider.name) + await providerInit(name) const updated = await providerList() providers.set(updated) - toasts.success(`Initialized ${provider.name}`) + toasts.success(`Initialized ${name}`) } catch (err) { const cliError = extractCliError(err) if (cliError) { @@ -241,10 +251,7 @@ async function handleInitialize() { } else { initError = { code: "UNKNOWN", - message: - err instanceof Error - ? err.message - : `Failed to initialize ${provider.name}.`, + message: err instanceof Error ? err.message : `Failed to initialize ${name}.`, } } } finally { @@ -253,10 +260,11 @@ async function handleInitialize() { } async function handleDelete() { + const name = provider.name deleting = true try { - await providerDelete(provider.name) - toasts.success(`Deleted ${provider.name}`) + await providerDelete(name) + toasts.success(`Deleted ${name}`) confirmDeleteOpen = false open = false ondeleted?.() @@ -318,6 +326,7 @@ async function handleSaveOptions() { } +{#if provider} @@ -537,3 +546,4 @@ async function handleSaveOptions() { loading={switching} onconfirm={runSwitch} /> +{/if}