From 7fe58d6bee6679210e7bbc9f36f7169f484dbc62 Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 25 Sep 2025 13:19:14 +0700 Subject: [PATCH] fix: allow users cancel backend download (#6582) * fix: allow users cancel backend download * fix: should not redownload on cancel --- extensions/llamacpp-extension/src/backend.ts | 5 ++- web-app/src/containers/DownloadManegement.tsx | 42 ++++++++++++------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/extensions/llamacpp-extension/src/backend.ts b/extensions/llamacpp-extension/src/backend.ts index c0fc7093d..7f5e8a22b 100644 --- a/extensions/llamacpp-extension/src/backend.ts +++ b/extensions/llamacpp-extension/src/backend.ts @@ -319,7 +319,10 @@ export async function downloadBackend( events.emit('onFileDownloadSuccess', { modelId: taskId, downloadType }) } catch (error) { // Fallback: if GitHub fails, retry once with CDN - if (source === 'github') { + if ( + source === 'github' && + error?.toString() !== 'Error: Download cancelled' + ) { console.warn(`GitHub download failed, falling back to CDN:`, error) return await downloadBackend(backend, version, 'cdn') } diff --git a/web-app/src/containers/DownloadManegement.tsx b/web-app/src/containers/DownloadManegement.tsx index 92bb3ee85..e0d829740 100644 --- a/web-app/src/containers/DownloadManegement.tsx +++ b/web-app/src/containers/DownloadManegement.tsx @@ -400,23 +400,33 @@ export function DownloadManagement() { className="text-main-view-fg/70 cursor-pointer" title="Cancel download" onClick={() => { - serviceHub - .models() - .abortDownload(download.name) - .then(() => { - toast.info( - t('common:toast.downloadCancelled.title'), - { - id: 'cancel-download', - description: t( - 'common:toast.downloadCancelled.description' - ), - } + // TODO: Consolidate cancellation logic + if (download.id.startsWith('llamacpp')) { + const downloadManager = + window.core.extensionManager.getByName( + '@janhq/download-extension' ) - if (downloadProcesses.length === 0) { - setIsPopoverOpen(false) - } - }) + + downloadManager.cancelDownload(download.id) + } else { + serviceHub + .models() + .abortDownload(download.name) + .then(() => { + toast.info( + t('common:toast.downloadCancelled.title'), + { + id: 'cancel-download', + description: t( + 'common:toast.downloadCancelled.description' + ), + } + ) + if (downloadProcesses.length === 0) { + setIsPopoverOpen(false) + } + }) + } }} />