Skip to content

Commit 095a004

Browse files
authored
chore: delete custom engine (#4581)
* chore: delete custom engine * chore: fix linter
1 parent 7f4155c commit 095a004

File tree

3 files changed

+88
-11
lines changed

3 files changed

+88
-11
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { memo, useState } from 'react'
2+
3+
import { InferenceEngine } from '@janhq/core'
4+
import { Button, Modal, ModalClose } from '@janhq/joi'
5+
6+
import { Trash2Icon } from 'lucide-react'
7+
8+
import { uninstallEngine } from '@/hooks/useEngineManagement'
9+
10+
const ModalDeleteCustomEngine = ({ engine }: { engine: InferenceEngine }) => {
11+
const [open, setOpen] = useState(false)
12+
13+
return (
14+
<Modal
15+
title={<span>Delete Engine</span>}
16+
open={open}
17+
onOpenChange={() => setOpen(!open)}
18+
trigger={
19+
<Button theme="icon" variant="outline" onClick={() => setOpen(!open)}>
20+
<Trash2Icon
21+
size={14}
22+
className="text-[hsla(var(--text-secondary))]"
23+
/>
24+
</Button>
25+
}
26+
content={
27+
<div>
28+
<p className="text-[hsla(var(--text-secondary))]">
29+
Are you sure you want to delete {engine}? This action cannot be
30+
undone.
31+
</p>
32+
<div className="mt-4 flex justify-end gap-x-2">
33+
<ModalClose
34+
asChild
35+
onClick={(e) => {
36+
setOpen(!open)
37+
e.stopPropagation()
38+
}}
39+
>
40+
<Button theme="ghost">No</Button>
41+
</ModalClose>
42+
<ModalClose asChild>
43+
<Button
44+
theme="destructive"
45+
onClick={() => {
46+
uninstallEngine(engine, {})
47+
}}
48+
autoFocus
49+
>
50+
Yes
51+
</Button>
52+
</ModalClose>
53+
</div>
54+
</div>
55+
}
56+
/>
57+
)
58+
}
59+
60+
export default memo(ModalDeleteCustomEngine)

web/screens/Settings/Engines/RemoteEngineItem.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import { SettingsIcon } from 'lucide-react'
88

99
import { getTitleByEngine } from '@/utils/modelEngine'
1010

11+
import { getLogoEngine } from '@/utils/modelEngine'
12+
13+
import ModalDeleteCustomEngine from './ModalDeleteCustomEngine'
14+
1115
import { showSettingActiveRemoteEngineAtom } from '@/helpers/atoms/Extension.atom'
1216
import { selectedSettingAtom } from '@/helpers/atoms/Setting.atom'
1317

@@ -18,7 +22,7 @@ const RemoteEngineItems = ({
1822
values: EngineConfig[]
1923
}) => {
2024
const setSelectedSetting = useSetAtom(selectedSettingAtom)
21-
25+
const customEngineLogo = getLogoEngine(engine)
2226
const [showSettingActiveRemoteEngine, setShowSettingActiveRemoteEngineAtom] =
2327
useAtom(showSettingActiveRemoteEngineAtom)
2428

@@ -60,6 +64,7 @@ const RemoteEngineItems = ({
6064
checked={!showSettingActiveRemoteEngine.includes(engine)}
6165
onChange={() => onSwitchChange(engine)}
6266
/>
67+
{!customEngineLogo && <ModalDeleteCustomEngine engine={engine} />}
6368
<Button
6469
theme="icon"
6570
variant="outline"

web/screens/Settings/Engines/RemoteEngineSettings.tsx

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import { updateEngine, useGetEngines } from '@/hooks/useEngineManagement'
2727

2828
import { getTitleByEngine } from '@/utils/modelEngine'
2929

30+
import { getLogoEngine } from '@/utils/modelEngine'
31+
3032
import ModalAddModel from './ModalAddModel'
3133
import ModalDeleteModel from './ModalDeleteModel'
3234

@@ -43,6 +45,8 @@ const RemoteEngineSettings = ({
4345
const remoteModels = downloadedModels.filter((e) => e.engine === name)
4446
const [isActiveAdvanceSetting, setisActiveAdvanceSetting] = useState(false)
4547

48+
const customEngineLogo = getLogoEngine(name)
49+
4650
const engine =
4751
engines &&
4852
Object.entries(engines)
@@ -134,17 +138,25 @@ const RemoteEngineSettings = ({
134138
<div className="w-full sm:w-3/4">
135139
<h6 className="line-clamp-1 font-semibold">API Key</h6>
136140
<p className="mt-1 text-[hsla(var(--text-secondary))]">
137-
Enter your authentication key to activate this engine.
138-
{engine.engine && engine.url && (
141+
{!customEngineLogo ? (
139142
<span>
140-
&nbsp;Get your API key from{' '}
141-
<a
142-
target="_blank"
143-
href={engine.url}
144-
className="text-[hsla(var(--app-link))]"
145-
>
146-
{getTitleByEngine(engine.engine)}.
147-
</a>
143+
Enter your authentication key to activate this engine.{' '}
144+
</span>
145+
) : (
146+
<span>
147+
Enter your authentication key to activate this engine.
148+
{engine.engine && engine.url && (
149+
<span>
150+
&nbsp;Get your API key from{' '}
151+
<a
152+
target="_blank"
153+
href={engine.url}
154+
className="text-[hsla(var(--app-link))]"
155+
>
156+
{getTitleByEngine(engine.engine)}.
157+
</a>
158+
</span>
159+
)}
148160
</span>
149161
)}
150162
</p>

0 commit comments

Comments
 (0)