fix: remove from list dropdown when deleted remote model (#4616)

* fix: remove from list dropdown when deleted remote model

* chore: update logic
This commit is contained in:
Faisal Amir 2025-02-10 20:19:47 +07:00 committed by GitHub
parent 45edb9cc51
commit 6e891d9a3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 83 additions and 76 deletions

View File

@ -509,61 +509,61 @@ __metadata:
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension": "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension":
version: 0.1.10 version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=a48b38&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension" resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=3d036d&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension"
dependencies: dependencies:
rxjs: "npm:^7.8.1" rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0" ulidx: "npm:^2.3.0"
checksum: 10c0/c8c1596e7031923552572136a2aab8c12567a2ab9a5a1cd0b72d7a4d56e41a10135f272331c90762b859b29065aa6313f3f8764d2704130b6a4151cb02924fbc checksum: 10c0/17705794156b91070790dc0bc9adf1ff65405c06b057c9103f325c350f22e25e530fccd9c634b2633d842f8e95eccc30d66370353734f4620ce99657ad4307bd
languageName: node languageName: node
linkType: hard linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension": "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension":
version: 0.1.10 version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=a48b38&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension" resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=3d036d&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension"
dependencies: dependencies:
rxjs: "npm:^7.8.1" rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0" ulidx: "npm:^2.3.0"
checksum: 10c0/c8c1596e7031923552572136a2aab8c12567a2ab9a5a1cd0b72d7a4d56e41a10135f272331c90762b859b29065aa6313f3f8764d2704130b6a4151cb02924fbc checksum: 10c0/17705794156b91070790dc0bc9adf1ff65405c06b057c9103f325c350f22e25e530fccd9c634b2633d842f8e95eccc30d66370353734f4620ce99657ad4307bd
languageName: node languageName: node
linkType: hard linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension": "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension":
version: 0.1.10 version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=a48b38&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension" resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=3d036d&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension"
dependencies: dependencies:
rxjs: "npm:^7.8.1" rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0" ulidx: "npm:^2.3.0"
checksum: 10c0/c8c1596e7031923552572136a2aab8c12567a2ab9a5a1cd0b72d7a4d56e41a10135f272331c90762b859b29065aa6313f3f8764d2704130b6a4151cb02924fbc checksum: 10c0/17705794156b91070790dc0bc9adf1ff65405c06b057c9103f325c350f22e25e530fccd9c634b2633d842f8e95eccc30d66370353734f4620ce99657ad4307bd
languageName: node languageName: node
linkType: hard linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension": "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension":
version: 0.1.10 version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=a48b38&locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension" resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=3d036d&locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension"
dependencies: dependencies:
rxjs: "npm:^7.8.1" rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0" ulidx: "npm:^2.3.0"
checksum: 10c0/c8c1596e7031923552572136a2aab8c12567a2ab9a5a1cd0b72d7a4d56e41a10135f272331c90762b859b29065aa6313f3f8764d2704130b6a4151cb02924fbc checksum: 10c0/17705794156b91070790dc0bc9adf1ff65405c06b057c9103f325c350f22e25e530fccd9c634b2633d842f8e95eccc30d66370353734f4620ce99657ad4307bd
languageName: node languageName: node
linkType: hard linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension": "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension":
version: 0.1.10 version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=a48b38&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension" resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=3d036d&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension"
dependencies: dependencies:
rxjs: "npm:^7.8.1" rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0" ulidx: "npm:^2.3.0"
checksum: 10c0/c8c1596e7031923552572136a2aab8c12567a2ab9a5a1cd0b72d7a4d56e41a10135f272331c90762b859b29065aa6313f3f8764d2704130b6a4151cb02924fbc checksum: 10c0/17705794156b91070790dc0bc9adf1ff65405c06b057c9103f325c350f22e25e530fccd9c634b2633d842f8e95eccc30d66370353734f4620ce99657ad4307bd
languageName: node languageName: node
linkType: hard linkType: hard
"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension": "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension":
version: 0.1.10 version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=a48b38&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension" resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=3d036d&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension"
dependencies: dependencies:
rxjs: "npm:^7.8.1" rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0" ulidx: "npm:^2.3.0"
checksum: 10c0/c8c1596e7031923552572136a2aab8c12567a2ab9a5a1cd0b72d7a4d56e41a10135f272331c90762b859b29065aa6313f3f8764d2704130b6a4151cb02924fbc checksum: 10c0/17705794156b91070790dc0bc9adf1ff65405c06b057c9103f325c350f22e25e530fccd9c634b2633d842f8e95eccc30d66370353734f4620ce99657ad4307bd
languageName: node languageName: node
linkType: hard linkType: hard

View File

@ -549,75 +549,82 @@ const ModelDropdown = ({
(c) => c.id === model.id (c) => c.id === model.id
) )
return ( return (
<li <>
key={model.id} {isDownloaded && (
className={twMerge( <li
'flex items-center justify-between gap-4 px-3 py-2 hover:bg-[hsla(var(--dropdown-menu-hover-bg))]', key={model.id}
!isConfigured
? 'cursor-not-allowed text-[hsla(var(--text-tertiary))]'
: 'text-[hsla(var(--text-primary))]'
)}
onClick={() => {
if (!isConfigured && engine.type === 'remote')
return null
if (isDownloaded) {
onClickModelItem(model.id)
}
}}
>
<div className="flex gap-x-2">
<p
className={twMerge( className={twMerge(
'line-clamp-1', 'flex items-center justify-between gap-4 px-3 py-2 hover:bg-[hsla(var(--dropdown-menu-hover-bg))]',
!isDownloaded && !isConfigured
'text-[hsla(var(--text-secondary))]' ? 'cursor-not-allowed text-[hsla(var(--text-tertiary))]'
: 'text-[hsla(var(--text-primary))]'
)} )}
title={model.name} onClick={() => {
> if (
{model.name} !isConfigured &&
</p> engine.type === 'remote'
<ModelLabel )
metadata={model.metadata} return null
compact if (isDownloaded) {
/> onClickModelItem(model.id)
</div>
<div className="flex items-center gap-2 text-[hsla(var(--text-tertiary))]">
{!isDownloaded && (
<span className="font-medium">
{toGibibytes(model.metadata?.size)}
</span>
)}
{!isDownloading && !isDownloaded ? (
<DownloadCloudIcon
size={18}
className="cursor-pointer text-[hsla(var(--app-link))]"
onClick={() =>
downloadModel(
model.sources[0].url,
model.id
)
} }
/> }}
) : ( >
Object.values(downloadStates) <div className="flex gap-x-2">
.filter((x) => x.modelId === model.id) <p
.map((item) => ( className={twMerge(
<ProgressCircle 'line-clamp-1',
key={item.modelId} !isDownloaded &&
percentage={ 'text-[hsla(var(--text-secondary))]'
formatDownloadPercentage( )}
item?.percent, title={model.name}
{ >
hidePercentage: true, {model.name}
} </p>
) as number <ModelLabel
metadata={model.metadata}
compact
/>
</div>
<div className="flex items-center gap-2 text-[hsla(var(--text-tertiary))]">
{!isDownloaded && (
<span className="font-medium">
{toGibibytes(model.metadata?.size)}
</span>
)}
{!isDownloading && !isDownloaded ? (
<DownloadCloudIcon
size={18}
className="cursor-pointer text-[hsla(var(--app-link))]"
onClick={() =>
downloadModel(
model.sources[0].url,
model.id
)
} }
size={100}
/> />
)) ) : (
)} Object.values(downloadStates)
</div> .filter((x) => x.modelId === model.id)
</li> .map((item) => (
<ProgressCircle
key={item.modelId}
percentage={
formatDownloadPercentage(
item?.percent,
{
hidePercentage: true,
}
) as number
}
size={100}
/>
))
)}
</div>
</li>
)}
</>
) )
})} })}
</ul> </ul>