Explorar o código

fixed download issue on android with invalid characters

Gildas %!s(int64=7) %!d(string=hai) anos
pai
achega
a2991afd5e
Modificáronse 1 ficheiros con 12 adicións e 13 borrados
  1. 12 13
      extension/core/bg/download.js

+ 12 - 13
extension/core/bg/download.js

@@ -49,15 +49,18 @@ singlefile.download = (() => {
 		return downloadPage(message, { confirmFilename: message.confirmFilename, incognito: sender.tab.incognito, filenameConflictAction: message.filenameConflictAction })
 			.catch(error => {
 				if (error.message) {
-					if (!error.message.toLowerCase().includes("canceled")) {
-						if (error.message.includes("'incognito'")) {
-							return downloadPage(message, { confirmFilename: message.confirmFilename, filenameConflictAction: message.filenameConflictAction });
-						} else if (error.message == "conflictAction prompt not yet implemented") {
-							return downloadPage(message, { confirmFilename: message.confirmFilename });
-						} else {
-							throw error;
-						}
+					if (error.message.includes("'incognito'")) {
+						return downloadPage(message, { confirmFilename: message.confirmFilename, filenameConflictAction: message.filenameConflictAction });
+					} else if (error.message == "conflictAction prompt not yet implemented") {
+						return downloadPage(message, { confirmFilename: message.confirmFilename });
+					} else if (error.message.includes("illegal characters")) {
+						message.filename = message.filename.replace(/,/, "_").replace(/[^\x00-\x7f]+/g, "_"); // eslint-disable-line no-control-regex
+						return downloadPage(message, { confirmFilename: message.confirmFilename, incognito: sender.tab.incognito, filenameConflictAction: message.filenameConflictAction });
+					} else {
+						throw error;
 					}
+				} else {
+					throw error;
 				}
 			});
 	}
@@ -78,11 +81,7 @@ singlefile.download = (() => {
 		} catch (error) {
 			if (error.message) {
 				if (!error.message.toLowerCase().includes("canceled")) {
-					if (error.message.includes("'incognito'")) {
-						return downloadPage(page, { confirmFilename: options.confirmFilename, filenameConflictAction: options.filenameConflictAction });
-					} else {
-						throw error;
-					}
+					throw error;
 				}
 			} else {
 				throw error;