|
15 | 15 | import ListRow from "./ListRow.svelte"; |
16 | 16 | import SectionCard from "./SectionCard.svelte"; |
17 | 17 |
|
| 18 | + const electronDev = isElectronDev(); |
| 19 | +
|
18 | 20 | const copy = $derived.by(() => { |
19 | 21 | void i18n.locale; |
20 | 22 | return { |
21 | 23 | title: t("proxy.title"), |
22 | 24 | description: t("proxy.description", { path: "/{providerId}/{modelId}/{apiStyle}/v1" }), |
23 | 25 | service: t("proxy.service"), |
24 | | - statusLine: store.proxyRunning |
25 | | - ? t("proxy.running", { url: store.proxyBaseUrl }) |
26 | | - : t("proxy.stopped"), |
| 26 | + serviceLine: store.proxyRunning ? t("proxy.runningShort") : t("proxy.stopped"), |
27 | 27 | appVersion: t("proxy.appVersion"), |
28 | 28 | appVersionLine: store.appVersion |
29 | 29 | ? t("proxy.appVersionLine", { version: store.appVersion }) |
30 | 30 | : t("proxy.appVersionUnknown"), |
31 | 31 | coreVersion: t("proxy.coreVersion"), |
32 | | - coreVersionLine: store.coreVersion |
33 | | - ? t("proxy.coreVersionLine", { version: store.coreVersion }) |
34 | | - : t("proxy.coreVersionUnknown"), |
| 32 | + coreTitle: store.coreVersion |
| 33 | + ? t("proxy.coreTitle", { version: store.coreVersion }) |
| 34 | + : t("proxy.coreVersion"), |
35 | 35 | test: t("common.test"), |
36 | 36 | testing: t("common.testing"), |
37 | 37 | restart: t("proxy.restart"), |
|
43 | 43 | }; |
44 | 44 | }); |
45 | 45 |
|
46 | | - const electronDev = isElectronDev(); |
| 46 | + const coreLines = $derived.by(() => { |
| 47 | + void i18n.locale; |
| 48 | + const lines: string[] = []; |
| 49 | + if (store.proxyRunning) { |
| 50 | + lines.push(t("proxy.coreProxyAddress", { url: store.proxyBaseUrl })); |
| 51 | + } else if (!store.coreVersion) { |
| 52 | + lines.push(t("proxy.coreVersionUnknown")); |
| 53 | + } |
| 54 | + if (electronDev) { |
| 55 | + lines.push(t("proxy.updateDisabledInDev")); |
| 56 | + } |
| 57 | + return lines; |
| 58 | + }); |
47 | 59 |
|
48 | 60 | const proxyHealthTest = $derived(store.proxyHealthTest); |
49 | 61 | const proxyHealthTesting = $derived(proxyHealthTest?.status === "testing"); |
|
53 | 65 | const coreUpdateCheck = $derived(store.coreUpdateCheck); |
54 | 66 | const coreUpdateTesting = $derived(coreUpdateCheck?.status === "testing" || store.coreUpdating); |
55 | 67 | const coreUpdateBusy = $derived(store.running || coreUpdateTesting); |
| 68 | + const coreActionBusy = $derived(store.running || proxyHealthTesting); |
56 | 69 |
|
57 | 70 | function rowTestStatus(value: string | undefined): "" | ModelTestStatus { |
58 | 71 | if (value === "testing" || value === "pass" || value === "fail") return value; |
|
61 | 74 | </script> |
62 | 75 |
|
63 | 76 | <SectionCard title={copy.title} description={copy.description}> |
64 | | - <ListRow |
65 | | - title={copy.service} |
66 | | - lines={[copy.statusLine]} |
67 | | - showStatusDot={Boolean(proxyHealthTest?.status)} |
68 | | - testStatus={rowTestStatus(proxyHealthTest?.status)} |
69 | | - testSummary={proxyHealthTest?.summary || ""} |
70 | | - > |
71 | | - {#snippet actions()} |
72 | | - <Button |
73 | | - size="sm" |
74 | | - variant="outline" |
75 | | - disabled={store.running || proxyHealthTesting} |
76 | | - onclick={() => void runProxyHealthTest()} |
77 | | - > |
78 | | - {proxyHealthTesting ? copy.testing : copy.test} |
79 | | - </Button> |
80 | | - <Button size="sm" disabled={store.running || proxyHealthTesting} onclick={() => void restartLocalProxy()}> |
81 | | - {copy.restart} |
82 | | - </Button> |
83 | | - {/snippet} |
84 | | - </ListRow> |
| 77 | + <ListRow title={copy.service} lines={[copy.serviceLine]} /> |
85 | 78 |
|
86 | 79 | <ListRow |
87 | 80 | title={copy.appVersion} |
|
109 | 102 | </ListRow> |
110 | 103 |
|
111 | 104 | <ListRow |
112 | | - title={copy.coreVersion} |
113 | | - lines={electronDev ? [copy.coreVersionLine, copy.updateDisabledInDev] : [copy.coreVersionLine]} |
114 | | - testStatus={electronDev ? "" : rowTestStatus(coreUpdateCheck?.status)} |
115 | | - testSummary={electronDev ? "" : coreUpdateCheck?.summary || ""} |
| 105 | + title={copy.coreTitle} |
| 106 | + lines={coreLines} |
| 107 | + showStatusDot={Boolean(proxyHealthTest?.status)} |
| 108 | + testStatus={rowTestStatus(proxyHealthTest?.status)} |
| 109 | + testSummary={proxyHealthTest?.summary || ""} |
116 | 110 | > |
117 | 111 | {#snippet actions()} |
| 112 | + <Button |
| 113 | + size="sm" |
| 114 | + variant="outline" |
| 115 | + disabled={coreActionBusy} |
| 116 | + onclick={() => void runProxyHealthTest()} |
| 117 | + > |
| 118 | + {proxyHealthTesting ? copy.testing : copy.test} |
| 119 | + </Button> |
| 120 | + <Button size="sm" disabled={coreActionBusy} onclick={() => void restartLocalProxy()}> |
| 121 | + {copy.restart} |
| 122 | + </Button> |
118 | 123 | {#if !electronDev} |
119 | 124 | <Button |
120 | 125 | size="sm" |
|
0 commit comments