Skip to content

Commit 3d0c359

Browse files
add rules conversion when update from 1.x to 2.x
1 parent 932e404 commit 3d0c359

File tree

6 files changed

+238
-23
lines changed

6 files changed

+238
-23
lines changed

package-lock.json

Lines changed: 148 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "qjs",
3-
"version": "2.0.0-beta.5",
3+
"version": "2.0.0-beta.6",
44
"private": true,
55
"scripts": {
66
"serve": "vue-cli-service serve",
@@ -15,13 +15,15 @@
1515
"core-js": "^3.6.5",
1616
"deepmerge": "^4.2.2",
1717
"lodash": "^4.17.21",
18+
"semver": "^7.3.5",
1819
"tldts": "^5.7.38",
1920
"vue": "^3.2.21"
2021
},
2122
"devDependencies": {
2223
"@types/chrome": "0.0.75",
2324
"@types/jest": "^24.0.19",
2425
"@types/lodash": "^4.14.170",
26+
"@types/semver": "^7.3.9",
2527
"@typescript-eslint/eslint-plugin": "^4.18.0",
2628
"@typescript-eslint/parser": "^4.18.0",
2729
"@vue/cli-plugin-babel": "~4.5.0",

src/entry/background/contentsettings.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { updateIcon } from "./icon";
55
import {
66
getStorageRules,
77
QJS,
8-
setStorageRules,
9-
unsetStorageRules,
8+
setStorageRule,
9+
unsetStorageRule,
1010
} from "./storage";
1111
import { getUrlAsObject, isValidScheme } from "./utils";
1212

@@ -92,7 +92,7 @@ export const addJavascriptRule = async (rule: QJS.ContentSettingRule) => {
9292
if (chrome.runtime.lastError) {
9393
console.error(chrome.runtime.lastError.message);
9494
} else {
95-
await setStorageRules(rule);
95+
await setStorageRule(rule);
9696
}
9797
resolve();
9898
});
@@ -128,7 +128,7 @@ export const removeJavascriptRule = async (
128128
Object.entries(storageRules).forEach(([key, storageRule]) => {
129129
chrome.contentSettings.javascript.set(storageRule, async () => {});
130130
});
131-
await unsetStorageRules(rule);
131+
await unsetStorageRule(rule);
132132
}
133133
resolve();
134134
});

src/entry/background/events.ts

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,15 @@ import { rebaseJavascriptSettingsFromStorage } from "./contentsettings";
44
import { handleContextMenu, updateContextMenus } from "./contextmenus";
55
import { updateIcon } from "./icon";
66

7-
import { getStorageRules } from "./storage";
7+
import {
8+
convertOldRulesToNew,
9+
getStorageRules,
10+
QJS,
11+
setStorage,
12+
} from "./storage";
813
import { getActiveTab } from "./tabs";
914
import { cl, Log } from "./utils";
15+
import satisfies from "semver/functions/satisfies";
1016

1117
// export const handleUpdates = async () => {
1218
// await updateContextMenus();
@@ -56,10 +62,36 @@ export const initEvents = () => {
5662

5763
// chrome.tabs.onUpdated.addListener((tabId, changeInfo) => {});
5864

59-
chrome.runtime.onInstalled.addListener(async () => {
65+
const handleUpdateFromV1toV2 = async () => {
66+
const currentRules = await getStorageRules();
67+
if (Array.isArray(currentRules)) {
68+
const convertedRules = convertOldRulesToNew(currentRules);
69+
await setStorage("rules", convertedRules);
70+
}
71+
};
72+
73+
chrome.runtime.onInstalled.addListener(async (details) => {
6074
await updateContextMenus();
6175
const tab = await getActiveTab();
6276
await updateIcon(tab);
77+
78+
// Check whether new version is installed
79+
if (details.reason == "install") {
80+
//console.log("First install!");
81+
} else if (details.reason == "update") {
82+
const currentVersion = chrome.runtime.getManifest().version;
83+
const isFromV1ToV2 =
84+
details.previousVersion &&
85+
satisfies(details.previousVersion, "<2.0.0") &&
86+
satisfies(currentVersion, ">=2.0.0");
87+
88+
if (isFromV1ToV2) {
89+
console.log(
90+
`Updated from ${details.previousVersion} to ${currentVersion}, trying to convert existing rules.`
91+
);
92+
await handleUpdateFromV1toV2();
93+
}
94+
}
6395
});
6496

6597
chrome.contextMenus.onClicked.addListener((info, tab) => {

0 commit comments

Comments
 (0)