diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/bulkDownload.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/bulkDownload.tsx similarity index 89% rename from invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/bulkDownload.ts rename to invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/bulkDownload.tsx index 39d7e574c2..69adfb5b67 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/bulkDownload.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/bulkDownload.tsx @@ -1,5 +1,5 @@ import type { UseToastOptions } from '@invoke-ai/ui-library'; -import { createStandaloneToast, theme, TOAST_OPTIONS } from '@invoke-ai/ui-library'; +import { createStandaloneToast, ExternalLink, theme, TOAST_OPTIONS } from '@invoke-ai/ui-library'; import { logger } from 'app/logging/logger'; import { startAppListening } from 'app/store/middleware/listenerMiddleware'; import { t } from 'i18next'; @@ -68,19 +68,19 @@ export const addBulkDownloadListeners = () => { // TODO(psyche): This URL may break in in some environments (e.g. Nvidia workbench) but we need to test it first const url = `/api/v1/images/download/${bulk_download_item_name}`; - const a = document.createElement('a'); - a.style.display = 'none'; - a.href = url; - a.download = bulk_download_item_name; - document.body.appendChild(a); - a.click(); const toastOptions: UseToastOptions = { id: bulk_download_item_name, - title: t('gallery.bulkDownloadStarting'), + title: t('gallery.bulkDownloadReady', 'Download ready'), status: 'success', - description: bulk_download_item_name, - duration: 5000, + description: ( + + ), + duration: null, isClosable: true, };