Răsfoiți Sursa

fixed refresh token usage

Former-commit-id: e93306e49dc4113f9f3f9f66c2055f8f4ae27be8
Gildas 6 ani în urmă
părinte
comite
ce894d8918

+ 1 - 1
build-extension.sh

@@ -8,7 +8,7 @@ jq "del(.options_page,.background.persistent,.optional_permissions[0],.oauth2)"
 sed -i 's/207618107333-bktohpfmdfnv5hfavi1ll18h74gqi27v/207618107333-8fpm0a5h0lho1svrhdj21sbri3via774/g' manifest.json
 zip -r singlefile-extension-firefox.zip manifest.json common extension lib _locales
 
-jq "del(.applications,.permissions[0],.permissions[1],.permissions[2],.applications,.options_ui.browser_style)" manifest.copy.json > manifest.json
+jq "del(.applications,.permissions[0],.permissions[1],.applications,.options_ui.browser_style)" manifest.copy.json > manifest.json
 sed -i 's/207618107333-bktohpfmdfnv5hfavi1ll18h74gqi27v/207618107333-8fpm0a5h0lho1svrhdj21sbri3via774/g' manifest.json
 zip -r singlefile-extension-chromium.zip manifest.json common extension lib _locales
 

+ 11 - 13
extension/core/bg/downloads.js

@@ -42,15 +42,6 @@ singlefile.extension.core.bg.downloads = (() => {
 	const manifest = browser.runtime.getManifest();
 	const gDrive = new GDrive(CLIENT_ID, SCOPES);
 
-	if (browser.alarms) {
-		browser.alarms.onAlarm.addListener(async alarmInfo => {
-			if (alarmInfo.name == "refreshAuthToken") {
-				const authInfo = await gDrive.refreshAuthToken();
-				await singlefile.extension.core.bg.config.setAuthInfo(authInfo);
-				browser.alarms.create("refreshAuthToken", { when: Date.now() + Math.max(60000, authInfo.expirationDate - 60000) });
-			}
-		});
-	}
 	return {
 		onMessage,
 		download,
@@ -163,9 +154,6 @@ singlefile.extension.core.bg.downloads = (() => {
 			}
 			await singlefile.extension.core.bg.config.setAuthInfo(authInfo);
 		}
-		if (!gDrive.managedToken() && authInfo.expirationDate) {
-			browser.alarms.create("refreshAuthToken", { when: Math.max(Date.now() + 60000, authInfo.expirationDate - 60000) });
-		}
 		return authInfo;
 	}
 
@@ -176,7 +164,17 @@ singlefile.extension.core.bg.downloads = (() => {
 		}
 		catch (error) {
 			if (error.message == "invalid_token") {
-				await getAuthInfo(true);
+				let authInfo;
+				try {
+					authInfo = await gDrive.refreshAuthToken();
+				} catch (error) {
+					if (error.message == "unknown_token") {
+						authInfo = await getAuthInfo(true);
+					} else {
+						throw error;
+					}
+				}
+				await singlefile.extension.core.bg.config.setAuthInfo(authInfo);
 				await uploadPage(filename, blob, tabId);
 			} else {
 				throw error;

+ 0 - 6
extension/lib/single-file/browser-polyfill/chrome-browser-polyfill.js

@@ -28,12 +28,6 @@
 	if (!this.browser && this.chrome) {
 		const nativeAPI = this.chrome;
 		this.__defineGetter__("browser", () => ({
-			alarms: nativeAPI.alarms && {
-				create: (name, alarmInfo) => nativeAPI.alarms.create(name, alarmInfo),
-				onAlarm: {
-					addListener: listener => nativeAPI.alarms.onAlarm.addListener(listener)
-				}
-			},
 			browserAction: {
 				onClicked: {
 					addListener: listener => nativeAPI.browserAction.onClicked.addListener(listener)

+ 3 - 0
lib/gdrive/gdrive.js

@@ -93,6 +93,9 @@ this.GDrive = this.GDrive || (() => {
 						"&refresh_token=" + this.refreshToken +
 						"&grant_type=refresh_token"
 				});
+				if (httpResponse.status == 400) {
+					throw new Error("unknown_token");
+				}
 				const response = await getJSON(httpResponse);
 				this.accessToken = response.access_token;
 				if (response.refresh_token) {

+ 0 - 1
manifest.json

@@ -153,7 +153,6 @@
 	},
 	"permissions": [
 		"identity",
-		"alarms",
 		"menus",
 		"clipboardWrite",
 		"contextMenus",