소스 검색

detect "interupted" errors

Gildas 7 년 전
부모
커밋
b2ca2a9663
1개의 변경된 파일12개의 추가작업 그리고 5개의 파일을 삭제
  1. 12 5
      extension/core/bg/core.js

+ 12 - 5
extension/core/bg/core.js

@@ -162,14 +162,21 @@ singlefile.core = (() => {
 			downloadInfo.incognito = true;
 		}
 		const downloadId = await browser.downloads.download(downloadInfo);
-		return new Promise(resolve => {
+		return new Promise((resolve, reject) => {
 			browser.downloads.onChanged.addListener(onChanged);
 
 			function onChanged(event) {
-				if (event.id == downloadId && event.state && event.state.current == "complete") {
-					URL.revokeObjectURL(page.url);
-					resolve({});
-					browser.downloads.onChanged.removeListener(onChanged);
+				if (event.id == downloadId && event.state) {
+					if (event.state.current == "complete") {
+						URL.revokeObjectURL(page.url);
+						resolve({});
+						browser.downloads.onChanged.removeListener(onChanged);
+					}
+					if (event.state.current == "interrupted") {
+						URL.revokeObjectURL(page.url);
+						reject(new Error(event.state.current));
+						browser.downloads.onChanged.removeListener(onChanged);
+					}
 				}
 			}
 		});