From ae97a96379ed85d14e2b70cbd5ede233f1178534 Mon Sep 17 00:00:00 2001 From: Anuraag Jain Date: Sun, 18 Feb 2024 21:29:47 +0200 Subject: [PATCH] WIP feat: cancel model download --- .../components/chat/Settings/Models.svelte | 44 +++++++++++++++++-- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/src/lib/components/chat/Settings/Models.svelte b/src/lib/components/chat/Settings/Models.svelte index aafa333f39..cb557b55ce 100644 --- a/src/lib/components/chat/Settings/Models.svelte +++ b/src/lib/components/chat/Settings/Models.svelte @@ -52,15 +52,17 @@ // Remove the downloaded model delete modelDownloadStatus[modelName]; - console.log(data); + modelDownloadStatus = {...modelDownloadStatus} + + console.log('Cleaned:',modelDownloadStatus); if (!data.success) { toast.error(data.error); } else { - toast.success(`Model '${modelName}' has been successfully downloaded.`); + toast.success(`Model '${sanitizedModelTag}' has been successfully downloaded.`); const notification = new Notification(WEBUI_NAME, { - body: `Model '${modelName}' has been successfully downloaded.`, + body: `Model '${sanitizedModelTag}' has been successfully downloaded.`, icon: '/favicon.png' }); @@ -266,6 +268,7 @@ downloadProgress = 100; } modelDownloadStatus[opts.modelName] = { + reader, pullProgress: downloadProgress, digest: data.digest }; @@ -286,6 +289,15 @@ opts.callback({ success: true, modelName: opts.modelName }); } }; + const deleteModelPull = async(model: string) => { + const {reader} = modelDownloadStatus[model]; + if(reader){ + await reader.cancel(); + toast.success(`${model} download has been canceled`); + delete modelDownloadStatus[model]; + } + + }
@@ -364,12 +376,36 @@
{model}
-
+
{modelDownloadStatus[model].pullProgress ?? 0}% +
+ + +
+
{modelDownloadStatus[model].digest}