Skip to content

Commit 26b1f2f

Browse files
committed
Update to Manifest v3 and release v0.7
Note: Does not work on Firefox. Chromium-only release.
1 parent f346206 commit 26b1f2f

File tree

8 files changed

+75
-106
lines changed

8 files changed

+75
-106
lines changed

manifest.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
2-
"manifest_version": 2,
2+
"manifest_version": 3,
33
"name": "Mojira Plus",
4-
"version": "0.6",
4+
"version": "0.7",
55

66
"description": "Enables various additional features on Mojang's bug tracker Mojira for helpers, moderators, and other Mojira power users.",
77

88
"browser_specific_settings": {
99
"gecko": {
1010
"id": "mojira-plus@mojira.github.io",
11-
"strict_min_version": "68.0"
11+
"strict_min_version": "101.0"
1212
}
1313
},
1414

@@ -18,15 +18,16 @@
1818
},
1919

2020
"background": {
21-
"page": "src/background/background.html"
21+
"service_worker": "src/background.js",
22+
"type": "module"
2223
},
2324

2425
"options_ui": {
2526
"page": "src/options/options.html",
2627
"browser_style": true
2728
},
2829

29-
"browser_action": {
30+
"action": {
3031
"default_icon": "icons/mojira-logo-32.png",
3132
"default_title": "Mojira Plus",
3233
"browser_style": true

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"copylibs": "(rm -rf lib || rmdir /Q /S lib || echo>NUL) && mkdir lib && (cp -r node_modules/webextension-polyfill/dist/* ./lib || copy node_modules\\webextension-polyfill\\dist\\* .\\lib)",
88
"build": "npm run copylibs && web-ext build -o",
9-
"lint": "npm run copylibs && web-ext lint"
9+
"lint": "npm run copylibs && web-ext lint --firefox-preview"
1010
},
1111
"author": "violine1101",
1212
"license": "GPL-3.0",

src/background/background.js renamed to src/background.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import { initAutoupdate } from '../util/autoupdate.js';
2-
import { showErrorBadge } from '../util/badge.js';
3-
import { reportError } from '../util/errorReporting.js';
4-
import { getMessages, triggerMessageUpdate } from '../util/messages.js';
5-
import { getCustomSortIndex, getPostponeAction, getPrefix, setCustomSortIndex, setPopupMessage } from '../util/storage.js';
1+
import '../lib/browser-polyfill.js';
2+
3+
import { initAutoupdate } from './util/autoupdate.js';
4+
import { showErrorBadge } from './util/badge.js';
5+
import { reportError } from './util/errorReporting.js';
6+
import { getMessages, triggerMessageUpdate } from './util/messages.js';
7+
import { getCustomSortIndex, getPostponeAction, getPrefix, setCustomSortIndex, setPopupMessage } from './util/storage.js';
68

79
/**
810
* @type {{
@@ -18,7 +20,7 @@ let permissionCache = {
1820
(async () => {
1921
await setPopupMessage(undefined);
2022

21-
browser.browserAction.onClicked.addListener(() => {
23+
browser.action.onClicked.addListener(() => {
2224
browser.runtime.openOptionsPage();
2325
});
2426

src/background/background.html

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/content/permissionCheck.js

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,24 @@ function parsePermissionResponse(response) {
3232
*/
3333
function queryPermissions() {
3434
return new Promise(async (resolve, reject) => {
35-
const httpRequest = new XMLHttpRequest();
36-
httpRequest.onreadystatechange = async () => {
37-
if (httpRequest.readyState === XMLHttpRequest.DONE) {
38-
if (httpRequest.status === 200) {
39-
try {
40-
const perm = parsePermissionResponse(httpRequest.responseText);
41-
resolve(perm);
42-
} catch (error) {
43-
reject(error);
44-
}
45-
} else if (httpRequest.status === 401) {
46-
// User is not logged in
47-
resolve(false);
35+
try {
36+
const response = await fetch('https://bugs.mojang.com/rest/api/2/myself?expand=groups');
37+
const text = await response.text();
38+
39+
if (response.ok) {
40+
try {
41+
const perm = parsePermissionResponse(text);
42+
resolve(perm);
43+
} catch (error) {
44+
reject(error);
4845
}
46+
} else if (response.status === 401) {
47+
resolve(false);
48+
} else {
4949
reject(
50-
new Error(`${permissionCheckError}The server returned status code ${httpRequest.status} ${httpRequest.statusText}.`)
50+
new Error(`${permissionCheckError}The server returned status code ${response.status} ${text}.`)
5151
);
5252
}
53-
}
54-
55-
try {
56-
httpRequest.open('GET', 'https://bugs.mojang.com/rest/api/2/myself?expand=groups');
57-
httpRequest.send();
5853
} catch (error) {
5954
reject(`${permissionCheckError}${error}`);
6055
}

src/util/badge.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ let currentBadge = 'none';
1010
* @param {string} message The message that should be shown on the popup
1111
*/
1212
export async function showSuccessBadge(message) {
13-
browser.browserAction.setPopup({ popup: '/src/popup/popup.html' });
13+
browser.action.setPopup({ popup: '/src/popup/popup.html' });
1414
await setPopupMessage(message);
1515

16-
browser.browserAction.setBadgeBackgroundColor({ color: '#222288' });
17-
if (browser.browserAction.setBadgeTextColor) {
18-
browser.browserAction.setBadgeTextColor({ color: '#ffffff' });
16+
browser.action.setBadgeBackgroundColor({ color: '#222288' });
17+
if (browser.action.setBadgeTextColor) {
18+
browser.action.setBadgeTextColor({ color: '#ffffff' });
1919
}
20-
browser.browserAction.setBadgeText({ text: 'i' });
20+
browser.action.setBadgeText({ text: 'i' });
2121

2222
currentBadge = 'success';
2323
}
@@ -28,11 +28,11 @@ export async function showSuccessBadge(message) {
2828
export async function showLoadingBadge() {
2929
if (currentBadge === 'error') return;
3030

31-
browser.browserAction.setBadgeBackgroundColor({ color: '#228822' });
32-
if (browser.browserAction.setBadgeTextColor) {
33-
browser.browserAction.setBadgeTextColor({ color: '#ffffff' });
31+
browser.action.setBadgeBackgroundColor({ color: '#228822' });
32+
if (browser.action.setBadgeTextColor) {
33+
browser.action.setBadgeTextColor({ color: '#ffffff' });
3434
}
35-
browser.browserAction.setBadgeText({ text: '?' });
35+
browser.action.setBadgeText({ text: '?' });
3636

3737
currentBadge = 'loading';
3838
}
@@ -42,14 +42,14 @@ export async function showLoadingBadge() {
4242
* @param {string} message The message that should be shown on the popup
4343
*/
4444
export async function showErrorBadge(message) {
45-
browser.browserAction.setPopup({ popup: '/src/popup/popup.html' });
45+
browser.action.setPopup({ popup: '/src/popup/popup.html' });
4646
await setPopupMessage(message);
4747

48-
browser.browserAction.setBadgeBackgroundColor({ color: '#882222' });
49-
if (browser.browserAction.setBadgeTextColor) {
50-
browser.browserAction.setBadgeTextColor({ color: '#ffffff' });
48+
browser.action.setBadgeBackgroundColor({ color: '#882222' });
49+
if (browser.action.setBadgeTextColor) {
50+
browser.action.setBadgeTextColor({ color: '#ffffff' });
5151
}
52-
browser.browserAction.setBadgeText({ text: '!' });
52+
browser.action.setBadgeText({ text: '!' });
5353

5454
currentBadge = 'error';
5555
}
@@ -59,9 +59,8 @@ export async function hideBadge(delay = false) {
5959
await new Promise(resolve => setTimeout(resolve, 1000));
6060
}
6161

62-
browser.browserAction.setPopup({ popup: '' });
63-
64-
browser.browserAction.setBadgeText({ text: '' });
62+
browser.action.setPopup({ popup: '' });
63+
browser.action.setBadgeText({ text: '' });
6564

6665
currentBadge = 'none';
6766
}

src/util/changelog.js

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -37,29 +37,19 @@ async function updateLastCommits(response, lastKnownSha) {
3737
/**
3838
* Updates the commits since the last update
3939
*/
40-
export function updateChangelog() {
41-
return new Promise(async resolve => {
42-
const lastKnownSha = await getLastCommit();
40+
export async function updateChangelog() {
41+
const lastKnownSha = await getLastCommit();
4342

44-
if (!(await getCommitUpdatesEnabled())) {
45-
await setLastCommit('none');
46-
return;
47-
}
48-
49-
const httpRequest = new XMLHttpRequest();
50-
httpRequest.onreadystatechange = async () => {
51-
if (httpRequest.readyState === XMLHttpRequest.DONE) {
52-
if (httpRequest.status === 200) {
53-
await updateLastCommits(httpRequest.responseText, lastKnownSha);
54-
} else {
55-
console.error(httpRequest);
56-
}
43+
if (!(await getCommitUpdatesEnabled())) {
44+
await setLastCommit('none');
45+
return;
46+
}
5747

58-
resolve();
59-
}
60-
};
48+
const response = await fetch(await getCommitUrl());
6149

62-
httpRequest.open('GET', await getCommitUrl());
63-
httpRequest.send();
64-
});
50+
if (response.ok) {
51+
await updateLastCommits(await response.text(), lastKnownSha);
52+
} else {
53+
console.error(response);
54+
}
6555
}

src/util/messages.js

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,34 +51,26 @@ async function processMessageUpdate(response) {
5151
* Check for updated messages
5252
* @param {boolean} silent Whether the update should be executed silently (without a badge)
5353
*/
54-
function checkForMessageUpdates(silent = false) {
55-
return new Promise(async resolve => {
56-
await setLastUpdateCheck();
54+
async function checkForMessageUpdates(silent = false) {
55+
await setLastUpdateCheck();
5756

58-
if (!silent) await showLoadingBadge();
57+
if (!silent) await showLoadingBadge();
5958

60-
const httpRequest = new XMLHttpRequest();
61-
httpRequest.onreadystatechange = async () => {
62-
if (httpRequest.readyState === XMLHttpRequest.DONE) {
63-
if (httpRequest.status === 200) {
64-
if (httpRequest.responseText !== await getLastCachedMessages()) {
65-
await processMessageUpdate(httpRequest.responseText);
66-
} else {
67-
await hideBadge(!silent);
68-
}
69-
} else {
70-
await showErrorBadge(
71-
'An error occurred while trying to check whether the helper messages were updated.\n'
72-
+ `The server returned status code ${httpRequest.status} ${httpRequest.statusText}.`
73-
);
74-
}
75-
resolve();
76-
}
77-
};
78-
79-
httpRequest.open('GET', await getUrl());
80-
httpRequest.send();
81-
});
59+
const response = await fetch(await getUrl());
60+
const text = await response.text();
61+
62+
if (response.ok) {
63+
if (text !== await getLastCachedMessages()) {
64+
await processMessageUpdate(text);
65+
} else {
66+
await hideBadge(!silent);
67+
}
68+
} else {
69+
await showErrorBadge(
70+
'An error occurred while trying to check whether the helper messages were updated.\n'
71+
+ `The server returned status code ${response.status} ${text}.`
72+
);
73+
}
8274
}
8375

8476
/**

0 commit comments

Comments
 (0)