Просмотр исходного кода

refactored code

Former-commit-id: 9ecf86b53a725010e48bf48766f9694bf41b2db6
Gildas 6 лет назад
Родитель
Сommit
66390c1c95
1 измененных файлов с 67 добавлено и 63 удалено
  1. 67 63
      extension/core/bg/downloads.js

+ 67 - 63
extension/core/bg/downloads.js

@@ -51,69 +51,7 @@ singlefile.extension.core.bg.downloads = (() => {
 
 	async function onMessage(message, sender) {
 		if (message.method.endsWith(".download")) {
-			let contents;
-			if (message.truncated) {
-				contents = partialContents.get(sender.tab.id);
-				if (!contents) {
-					contents = [];
-					partialContents.set(sender.tab.id, contents);
-				}
-				contents.push(message.content);
-				if (message.finished) {
-					partialContents.delete(sender.tab.id);
-				}
-			} else if (message.content) {
-				contents = [message.content];
-			}
-			if (!message.truncated || message.finished) {
-				if (message.openEditor) {
-					singlefile.extension.ui.bg.main.onEdit(sender.tab.id);
-					await singlefile.extension.core.bg.editor.open({ filename: message.filename, content: contents.join("") }, {
-						backgroundSave: message.backgroundSave,
-						saveToClipboard: message.saveToClipboard,
-						saveToGDrive: message.saveToGDrive,
-						confirmFilename: message.confirmFilename,
-						incognito: sender.tab.incognito,
-						filenameConflictAction: message.filenameConflictAction,
-						filenameReplacementCharacter: message.filenameReplacementCharacter,
-						compressHTML: message.compressHTML
-					});
-				} else {
-					if (message.saveToClipboard) {
-						message.content = contents.join("");
-						saveToClipboard(message);
-					} else {
-						const blob = new Blob([contents], { type: MIMETYPE_HTML });
-						try {
-							if (message.saveToGDrive) {
-								await uploadPage(message.filename, blob, {
-									forceWebAuthFlow: message.forceWebAuthFlow,
-									extractAuthCode: message.extractAuthCode
-								}, {
-									onProgress: (offset, size) => singlefile.extension.ui.bg.button.onUploadProgress(sender.tab.id, offset, size)
-								});
-							} else {
-								message.url = URL.createObjectURL(blob);
-								await downloadPage(message, {
-									confirmFilename: message.confirmFilename,
-									incognito: sender.tab.incognito,
-									filenameConflictAction: message.filenameConflictAction,
-									filenameReplacementCharacter: message.filenameReplacementCharacter
-								});
-							}
-							singlefile.extension.ui.bg.main.onEnd(sender.tab.id);
-						} catch (error) {
-							console.error(error); // eslint-disable-line no-console
-							singlefile.extension.ui.bg.main.onError(sender.tab.id);
-						} finally {
-							if (message.url) {
-								URL.revokeObjectURL(message.url);
-							}
-						}
-					}
-				}
-			}
-			return {};
+			return downloadTabPage(message, sender.tab);
 		}
 		if (message.method.endsWith(".disableGDrive")) {
 			const authInfo = await singlefile.extension.core.bg.config.getAuthInfo();
@@ -129,6 +67,72 @@ singlefile.extension.core.bg.downloads = (() => {
 		}
 	}
 
+	async function downloadTabPage(message, tab) {
+		let contents;
+		if (message.truncated) {
+			contents = partialContents.get(tab.id);
+			if (!contents) {
+				contents = [];
+				partialContents.set(tab.id, contents);
+			}
+			contents.push(message.content);
+			if (message.finished) {
+				partialContents.delete(tab.id);
+			}
+		} else if (message.content) {
+			contents = [message.content];
+		}
+		if (!message.truncated || message.finished) {
+			if (message.openEditor) {
+				singlefile.extension.ui.bg.main.onEdit(tab.id);
+				await singlefile.extension.core.bg.editor.open({ filename: message.filename, content: contents.join("") }, {
+					backgroundSave: message.backgroundSave,
+					saveToClipboard: message.saveToClipboard,
+					saveToGDrive: message.saveToGDrive,
+					confirmFilename: message.confirmFilename,
+					incognito: tab.incognito,
+					filenameConflictAction: message.filenameConflictAction,
+					filenameReplacementCharacter: message.filenameReplacementCharacter,
+					compressHTML: message.compressHTML
+				});
+			} else {
+				if (message.saveToClipboard) {
+					message.content = contents.join("");
+					saveToClipboard(message);
+				} else {
+					const blob = new Blob([contents], { type: MIMETYPE_HTML });
+					try {
+						if (message.saveToGDrive) {
+							await uploadPage(message.filename, blob, {
+								forceWebAuthFlow: message.forceWebAuthFlow,
+								extractAuthCode: message.extractAuthCode
+							}, {
+								onProgress: (offset, size) => singlefile.extension.ui.bg.button.onUploadProgress(tab.id, offset, size)
+							});
+						} else {
+							message.url = URL.createObjectURL(blob);
+							await downloadPage(message, {
+								confirmFilename: message.confirmFilename,
+								incognito: tab.incognito,
+								filenameConflictAction: message.filenameConflictAction,
+								filenameReplacementCharacter: message.filenameReplacementCharacter
+							});
+						}
+						singlefile.extension.ui.bg.main.onEnd(tab.id);
+					} catch (error) {
+						console.error(error); // eslint-disable-line no-console
+						singlefile.extension.ui.bg.main.onError(tab.id);
+					} finally {
+						if (message.url) {
+							URL.revokeObjectURL(message.url);
+						}
+					}
+				}
+			}
+		}
+		return {};
+	}
+
 	async function getAuthInfo(authOptions, force) {
 		let authInfo = await singlefile.extension.core.bg.config.getAuthInfo();
 		const options = {