Przeglądaj źródła

fixed cancel all

Former-commit-id: 11fd125d53a9cff407a630999210b1282d820498
Gildas 6 lat temu
rodzic
commit
21a27ead22

+ 7 - 3
extension/core/bg/business.js

@@ -51,6 +51,10 @@ singlefile.extension.core.bg.business = (() => {
 		saveTabs,
 		saveLink,
 		cancelTab,
+		cancelAllTabs: () => {
+			Array.from(pendingSaves).forEach(([tabId]) => cancelTab(tabId, "pending"));
+			Array.from(currentSaves).forEach(([tabId]) => cancelTab(tabId, "current"));
+		},
 		getTabsInfo: () => ({ pending: Array.from(pendingSaves).map(mapSaveInfo), processing: Array.from(currentSaves).map(mapSaveInfo) }),
 		getTabInfo: tabId => currentSaves.get(tabId) || pendingSaves.get(tabId),
 		setCancelCallback: (tabId, cancelCallback) => {
@@ -128,8 +132,8 @@ singlefile.extension.core.bg.business = (() => {
 		await saveTabs([tab], options);
 	}
 
-	function cancelTab(tabId) {
-		if (currentSaves.has(tabId)) {
+	function cancelTab(tabId, hintType) {
+		if (currentSaves.has(tabId) && (!hintType || hintType == "current")) {
 			const saveInfo = currentSaves.get(tabId);
 			saveInfo.cancelled = true;
 			singlefile.extension.core.bg.tabs.sendMessage(tabId, { method: "content.cancelSave" });
@@ -141,7 +145,7 @@ singlefile.extension.core.bg.business = (() => {
 			}
 			singlefile.extension.ui.bg.main.onCancelled(saveInfo.tab);
 			saveInfo.resolve();
-		} else if (pendingSaves.has(tabId)) {
+		} else if (pendingSaves.has(tabId) && (!hintType || hintType == "pending")) {
 			const saveInfo = pendingSaves.get(tabId);
 			pendingSaves.delete(tabId);
 			singlefile.extension.ui.bg.main.onCancelled(saveInfo.tab);

+ 5 - 1
extension/core/bg/downloads.js

@@ -67,7 +67,11 @@ singlefile.extension.core.bg.downloads = (() => {
 			return singlefile.extension.core.bg.business.getTabsInfo();
 		}
 		if (message.method.endsWith(".cancel")) {
-			singlefile.extension.core.bg.business.cancelTab(message.tabId);
+			singlefile.extension.core.bg.business.cancelTab(message.tabId, message.hintType);
+			return {};
+		}
+		if (message.method.endsWith(".cancelAll")) {			
+			singlefile.extension.core.bg.business.cancelAllTabs(message.tabId);
 			return {};
 		}
 	}

+ 2 - 3
extension/ui/bg/ui-pendings.js

@@ -40,8 +40,7 @@
 	};
 	const noPendingsText = browser.i18n.getMessage("pendingsNoPendings");
 	cancelAllButton.onclick = async () => {
-		const results = await browser.runtime.sendMessage({ method: "downloads.getInfo" });
-		await Promise.all(results.pending.concat(results.processing).map(([tabId]) => browser.runtime.sendMessage({ method: "downloads.cancel", tabId })));
+		await browser.runtime.sendMessage({ method: "downloads.cancelAll" });
 		await refresh();
 	};
 	let previousState;
@@ -86,7 +85,7 @@
 	}
 
 	async function cancel(type, tabId) {
-		await browser.runtime.sendMessage({ method: "downloads.cancel", tabId });
+		await browser.runtime.sendMessage({ method: "downloads.cancel", tabId, hintType: type });
 		await refresh();
 	}