diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json index 7b4a26b..f56a439 100644 --- a/src-tauri/tauri.linux.conf.json +++ b/src-tauri/tauri.linux.conf.json @@ -9,7 +9,7 @@ "minWidth": 960, "minHeight": 640, "transparent": false, - "decorations": true + "decorations": false } ] }, diff --git a/src/components/AddDownloadsModal.tsx b/src/components/AddDownloadsModal.tsx index 558fa28..95bdd7e 100644 --- a/src/components/AddDownloadsModal.tsx +++ b/src/components/AddDownloadsModal.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useRef } from 'react'; +import { useCallback, useState, useEffect, useRef } from 'react'; import { useDownloadStore, getSiteLogin, @@ -154,6 +154,15 @@ export const AddDownloadsModal = () => { return hasExtensionRequestContext ? '' : pendingAddFilename; }; + const closeModalFromDismissAction = useCallback(() => { + if (isSubmitting) return; + const hasPendingInput = Boolean( + urls.trim() || pendingAddUrls.trim() || parsedItems.length || headers.trim() || cookies.trim() + ); + if (hasPendingInput && !window.confirm('Discard this download setup?')) return; + toggleAddModal(false); + }, [cookies, headers, isSubmitting, parsedItems.length, pendingAddUrls, toggleAddModal, urls]); + useEffect(() => { if (!isAddModalOpen) { modalSessionRef.current = false; @@ -233,18 +242,20 @@ export const AddDownloadsModal = () => { }, [isQueueMenuOpen]); useEffect(() => { - if (!isQueueMenuOpen && !showingDuplicates) return; + if (!isAddModalOpen) return; const closeOnEscape = (event: KeyboardEvent) => { if (event.key !== 'Escape') return; if (showingDuplicates) { setShowingDuplicates(false); - } else { + } else if (isQueueMenuOpen) { setIsQueueMenuOpen(false); + } else { + closeModalFromDismissAction(); } }; window.addEventListener('keydown', closeOnEscape); return () => window.removeEventListener('keydown', closeOnEscape); - }, [isQueueMenuOpen, showingDuplicates]); + }, [closeModalFromDismissAction, isAddModalOpen, isQueueMenuOpen, showingDuplicates]); useEffect(() => { const requestId = ++freeSpaceRequestRef.current; @@ -859,7 +870,14 @@ export const AddDownloadsModal = () => { onCancel={() => setShowingDuplicates(false)} /> )} -