Bladeren bron

fix save as dialog when background save is disabled for compressed files

Gildas 1 jaar geleden
bovenliggende
commit
bc14cb0627
1 gewijzigde bestanden met toevoegingen van 29 en 20 verwijderingen
  1. 29 20
      src/core/common/download.js

+ 29 - 20
src/core/common/download.js

@@ -120,31 +120,40 @@ async function downloadPage(pageData, options) {
 		browser.runtime.sendMessage({ method: "ping" }).then(() => { });
 	}, 15000);
 	if (options.compressContent) {
-		const blob = new Blob([await yabson.serialize(pageData)], { type: pageData.mimeType });
-		const blobURL = URL.createObjectURL(blob);
-		message.blobURL = blobURL;
-		const result = await browser.runtime.sendMessage(message);
-		URL.revokeObjectURL(blobURL);
-		if (result.error) {
-			message.embeddedImage = embeddedImage;
-			message.blobURL = null;
-			message.pageData = pageData;
-			const serializer = yabson.getSerializer(message);
-			for await (const chunk of serializer) {
+		if ((!options.backgroundSave || options.saveToGDrive || options.saveToGitHub || options.saveWithCompanion || options.saveWithWebDAV || options.saveToDropbox || options.saveToRestFormApi || options.saveToS3) && options.confirmFilename && !options.openEditor) {
+			pageData.filename = ui.prompt("Save as", pageData.filename);
+		}
+		if (pageData.filename) {
+			const blob = new Blob([await yabson.serialize(pageData)], { type: pageData.mimeType });
+			const blobURL = URL.createObjectURL(blob);
+			message.filename = pageData.filename;
+			message.blobURL = blobURL;
+			const result = await browser.runtime.sendMessage(message);
+			URL.revokeObjectURL(blobURL);
+			if (result.error) {
+				message.embeddedImage = embeddedImage;
+				message.blobURL = null;
+				message.pageData = pageData;
+				const serializer = yabson.getSerializer(message);
+				for await (const chunk of serializer) {
+					await browser.runtime.sendMessage({
+						method: "downloads.download",
+						compressContent: true,
+						data: Array.from(chunk)
+					});
+				}
 				await browser.runtime.sendMessage({
 					method: "downloads.download",
 					compressContent: true,
-					data: Array.from(chunk)
+					mimeType: pageData.mimeType
 				});
 			}
-			await browser.runtime.sendMessage({
-				method: "downloads.download",
-				compressContent: true,
-				mimeType: pageData.mimeType
-			});
-		}
-		if (options.backgroundSave) {
-			await browser.runtime.sendMessage({ method: "downloads.end", taskId: options.taskId });
+			if (options.backgroundSave) {
+				await browser.runtime.sendMessage({ method: "downloads.end", taskId: options.taskId });
+			}
+		} else {
+			browser.runtime.sendMessage({ method: "downloads.cancel" });
+			browser.runtime.sendMessage({ method: "ui.processCancelled" });
 		}
 	} else {
 		if ((options.backgroundSave && !options.sharePage) || options.openEditor || options.saveToGDrive || options.saveToGitHub || options.saveWithCompanion || options.saveWithWebDAV || options.saveToDropbox || options.saveToRestFormApi || options.saveToS3) {