chore: resolve button state download engine variant (#4444)

This commit is contained in:
Faisal Amir 2025-01-13 22:13:56 +07:00 committed by GitHub
parent 395f5d41a1
commit 548dd6c027
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8,7 +8,7 @@ import {
InferenceEngine, InferenceEngine,
} from '@janhq/core' } from '@janhq/core'
import { Button, ScrollArea, Badge, Select, Progress } from '@janhq/joi' import { Button, ScrollArea, Badge, Select, Progress } from '@janhq/joi'
import { Trash2Icon } from 'lucide-react'
import { twMerge } from 'tailwind-merge' import { twMerge } from 'tailwind-merge'
import { import {
@ -18,7 +18,6 @@ import {
setDefaultEngineVariant, setDefaultEngineVariant,
installEngine, installEngine,
updateEngine, updateEngine,
uninstallEngine,
useGetReleasedEnginesByVersion, useGetReleasedEnginesByVersion,
} from '@/hooks/useEngineManagement' } from '@/hooks/useEngineManagement'
@ -109,21 +108,32 @@ const EngineSettings = ({ engine }: { engine: InferenceEngine }) => {
const variant: string | undefined = event.id.includes('.tar.gz') const variant: string | undefined = event.id.includes('.tar.gz')
? availableVariants?.find((e) => event.id.includes(`${e}.tar.gz`)) ? availableVariants?.find((e) => event.id.includes(`${e}.tar.gz`))
: availableVariants?.find((e) => event.id.includes(e)) : availableVariants?.find((e) => event.id.includes(e))
if (!variant) return
if (!variant) {
console.error(
'Variant not found for event.id:',
event.id,
availableVariants
)
return
}
// Clone the existing Map to ensure immutability
setInstallingEngines((prev) => { setInstallingEngines((prev) => {
prev.set(variant, event.percent) const updated = new Map(prev)
return prev
})
if ( if (
event.type === DownloadEvent.onFileDownloadError || event.type === DownloadEvent.onFileDownloadError ||
event.type === DownloadEvent.onFileDownloadStopped || event.type === DownloadEvent.onFileDownloadStopped ||
event.type === DownloadEvent.onFileDownloadSuccess event.type === DownloadEvent.onFileDownloadSuccess
) { ) {
setInstallingEngines((prev) => { // Remove the variant from the Map if download stops/errors/succeeds
prev.delete(variant) updated.delete(variant)
return prev } else {
}) // Update the variant with the new percentage
updated.set(variant, event.percent)
} }
return updated
})
}, },
[ [
mutateDefaultEngineVariant, mutateDefaultEngineVariant,
@ -147,6 +157,7 @@ const EngineSettings = ({ engine }: { engine: InferenceEngine }) => {
version: String(defaultEngineVariant?.version), version: String(defaultEngineVariant?.version),
}) })
} }
return ( return (
<ScrollArea className="h-full w-full"> <ScrollArea className="h-full w-full">
<div className="block w-full px-4"> <div className="block w-full px-4">
@ -296,8 +307,9 @@ const EngineSettings = ({ engine }: { engine: InferenceEngine }) => {
variant="soft" variant="soft"
onClick={() => { onClick={() => {
setInstallingEngines((prev) => { setInstallingEngines((prev) => {
prev.set(item.name, 0) const updated = new Map(prev)
return prev updated.set(item.name, 0)
return updated
}) })
installEngine(engine, { installEngine(engine, {
variant: item.name, variant: item.name,