diff --git a/src/store/useDownloadStore.test.ts b/src/store/useDownloadStore.test.ts index 889631c..a5df8ee 100644 --- a/src/store/useDownloadStore.test.ts +++ b/src/store/useDownloadStore.test.ts @@ -392,13 +392,7 @@ describe('useDownloadStore', () => { expect(state.pendingAddCookies).toBe('session=secret'); }); - it('starts silent extension captures through backend queue', async () => { - vi.mocked(ipc.invokeCommand).mockImplementation(async (command: string) => { - if (command === 'get_pending_order') return ['silent-id']; - return undefined; - }); - vi.spyOn(crypto, 'randomUUID').mockReturnValueOnce('silent-id' as `${string}-${string}-${string}-${string}-${string}`); - + it('routes silent extension captures to the Add Modal instead of queuing immediately', async () => { await useDownloadStore.getState().handleExtensionDownload({ urls: ['https://example.com/downloads/report.pdf'], referer: 'https://example.com/page', @@ -409,24 +403,11 @@ describe('useDownloadStore', () => { }); const state = useDownloadStore.getState(); - expect(state.isAddModalOpen).toBe(false); - expect(state.downloads[0]).toEqual(expect.objectContaining({ - id: 'silent-id', - url: 'https://example.com/downloads/report.pdf', - fileName: 'report.pdf', - category: 'Documents', - queueId: '00000000-0000-0000-0000-000000000001', - hasBeenDispatched: true - })); - expect(ipc.invokeCommand).toHaveBeenCalledWith( - 'enqueue_download', - expect.objectContaining({ - item: expect.objectContaining({ - id: 'silent-id', - headers: 'User-Agent: Test', - cookies: 'session=secret' - }) - }) - ); + expect(state.isAddModalOpen).toBe(true); + expect(state.pendingAddUrls).toBe('https://example.com/downloads/report.pdf'); + expect(state.pendingAddReferer).toBe('https://example.com/page'); + expect(state.pendingAddFilename).toBe('report.pdf'); + expect(state.pendingAddHeaders).toBe('User-Agent: Test'); + expect(state.pendingAddCookies).toBe('session=secret'); }); }); diff --git a/src/store/useDownloadStore.ts b/src/store/useDownloadStore.ts index 21656c2..97abb45 100644 --- a/src/store/useDownloadStore.ts +++ b/src/store/useDownloadStore.ts @@ -7,7 +7,7 @@ import type { DownloadStatus } from '../bindings/DownloadStatus'; import type { ExtensionDownload } from '../bindings/ExtensionDownload'; import type { Queue } from '../bindings/Queue'; import { useSettingsStore } from './useSettingsStore'; -import { canonicalizeDownloadFileName, categoryForFileName, isActiveDownloadStatus, normalizeSpeedLimitForBackend, redactDownloadForPersistence } from '../utils/downloads'; +import { categoryForFileName, isActiveDownloadStatus, normalizeSpeedLimitForBackend, redactDownloadForPersistence } from '../utils/downloads'; import { resolveCategoryDestination } from '../utils/downloadLocations'; @@ -128,16 +128,6 @@ export const getSiteLogin = (url: string, settings: ReturnType { - try { - const url = new URL(rawUrl); - const lastSegment = decodeURIComponent(url.pathname.split('/').filter(Boolean).pop() || ''); - return lastSegment || 'download'; - } catch { - return 'download'; - } -}; - const syncSystemIntegrations = () => { const settings = useSettingsStore.getState(); const activeCount = useDownloadStore.getState().downloads.filter(d => d.status === 'downloading').length; @@ -321,51 +311,6 @@ export const useDownloadStore = create((set, get) => ({ const urls = [...new Set(request.urls.map(url => url.trim()).filter(Boolean))]; if (urls.length === 0) return; - if (request.silent) { - let failedUrls: string[] = []; - for (const url of urls) { - const id = crypto.randomUUID(); - const filename = canonicalizeDownloadFileName( - urls.length === 1 && request.filename ? request.filename : suggestedFileNameFromUrl(url) - ); - try { - const added = await get().addDownload({ - id, - url, - fileName: filename, - category: categoryForFileName(filename), - dateAdded: new Date().toISOString(), - headers: request.headers?.trim() || undefined, - cookies: urls.length === 1 ? request.cookies?.trim() || undefined : undefined, - }, { type: 'start-now' }); - - if (!added) { - set(state => ({ - downloads: state.downloads.filter(d => d.id !== id), - pendingOrder: state.pendingOrder.filter(x => x !== id) - })); - failedUrls.push(url); - } - } catch (error) { - set(state => ({ - downloads: state.downloads.filter(d => d.id !== id), - pendingOrder: state.pendingOrder.filter(x => x !== id) - })); - failedUrls.push(url); - } - } - if (failedUrls.length > 0) { - get().openAddModalWithUrls( - failedUrls.join('\n'), - request.referer, - failedUrls.length === 1 ? request.filename : null, - request.headers, - request.cookies - ); - } - return; - } - get().openAddModalWithUrls( urls.join('\n'), request.referer,