Skip to content

Commit d282eff

Browse files
committed
Merge remote-tracking branch 'origin/master' into feat/manifest-v3
2 parents 673073e + bf24d66 commit d282eff

8 files changed

+95
-19
lines changed

.jshintrc

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"smarttabs": true,
2121
"globals" : {
2222
"chrome": true,
23-
"jQuery": true
23+
"jQuery": true,
24+
"browser": true
2425
}
2526
}

CHANGELOG.md

+28
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
## [3.0.1](https://github.com/sanemat/do-not-merge-wip-for-github/compare/v3.0.0...v3.0.1) (2024-06-03)
2+
3+
4+
### Bug Fixes
5+
6+
* **permission:** drop activetab ([3c2500e](https://github.com/sanemat/do-not-merge-wip-for-github/commit/3c2500edfe98a1aafb59017baaa39ec8949a9dc6)), closes [#364](https://github.com/sanemat/do-not-merge-wip-for-github/issues/364)
7+
8+
9+
10+
# [3.0.0](https://github.com/sanemat/do-not-merge-wip-for-github/compare/v2.0.4...v3.0.0) (2024-06-01)
11+
12+
### Features
13+
14+
Preparing for manifest v3, closes [#361](https://github.com/sanemat/do-not-merge-wip-for-github/issues/361)
15+
16+
* Add migration script from localStorage to browser.storage (chrome.storage)
17+
* Set/Get value from browser.storage
18+
* Add storage permission
19+
* Add activeTab permission
20+
* Add `https://github.com/*/*/pull/*` permission
21+
* background persistent
22+
23+
### Bug Fixes
24+
25+
* **contentscript:** avoid null access ([92a6ed2](https://github.com/sanemat/do-not-merge-wip-for-github/commit/92a6ed2f509a4f46ab9a3c9d053a793e5861c44b)), closes [#335](https://github.com/sanemat/do-not-merge-wip-for-github/issues/335)
26+
27+
28+
129
## [2.0.4](https://github.com/sanemat/do-not-merge-wip-for-github/compare/v2.0.3...v2.0.4) (2024-05-30)
230

331
* Update dev dependencies

app/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "__MSG_appName__",
3-
"version": "2.0.4",
3+
"version": "3.0.1",
44
"manifest_version": 3,
55
"description": "__MSG_appDescription__",
66
"icons": {

app/scripts/background.js

+42-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,48 @@
11
'use strict';
22

3-
chrome.runtime.onInstalled.addListener(function (details) {
4-
console.log('previousVersion', details.previousVersion);
3+
// Define browser for cross-browser compatibility
4+
var browser = (typeof browser !== 'undefined') ? browser : chrome;
5+
6+
function migrateLocalStorageToBrowserStorage() {
7+
// Check if localStorage is not null and contains any keys
8+
if (!localStorage || Object.keys(localStorage).length === 0) {
9+
console.log('No localStorage data to migrate.');
10+
return;
11+
}
12+
13+
// Get all localStorage keys
14+
const localStorageKeys = Object.keys(localStorage);
15+
const dataToMigrate = {};
16+
17+
localStorageKeys.forEach((key) => {
18+
dataToMigrate[key] = localStorage.getItem(key);
19+
});
20+
21+
// Store data in broswer.storage
22+
browser.storage.local.set(dataToMigrate, () => {
23+
console.log('Data migrated to browser.storage', dataToMigrate);
24+
25+
// Clear localStorage after migration
26+
localStorage.clear();
27+
});
28+
}
29+
30+
browser.runtime.onInstalled.addListener(function (details) {
31+
if (details.reason === 'install') {
32+
// Handle installation logic
33+
console.log('Extension installed');
34+
} else if (details.reason === 'update') {
35+
console.log('previousVersion', details.previousVersion);
36+
// Handle update logic
37+
migrateLocalStorageToBrowserStorage();
38+
}
539
});
640

7-
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
8-
if (request.subject === 'localStorage') {
9-
sendResponse({localStorage: localStorage});
41+
browser.runtime.onMessage.addListener(function (request, sender, sendResponse) {
42+
if (request.subject === 'getStorage') {
43+
browser.storage.local.get(null, function (items) {
44+
sendResponse({ storageData: items });
45+
});
46+
return true; // Keep the message channel open for sendResponse
1047
}
1148
});

app/scripts/contentscript.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,20 @@
22
'use strict';
33

44
function changeMergeButtonState() {
5+
// Define browser for cross-browser compatibility
6+
var browser = (typeof browser !== 'undefined') ? browser : chrome;
7+
58
let container = document.querySelector('#js-repo-pjax-container');
69
let issueTitle = container.querySelector('.js-issue-title')?.textContent;
710
let buttonMerges = container.querySelectorAll('.merge-message button[data-details-container]');
811
let buttonMergeOptions = container.querySelectorAll('.merge-message button[data-details-container] + .select-menu-button');
912
let disabled = false;
1013
let buttonHtml = '';
1114

12-
chrome.runtime.sendMessage({from: 'content', subject: 'localStorage'}, function(response){
15+
browser.runtime.sendMessage({ from: 'content', subject: 'getStorage' }, function (response) {
1316
if (!response) { return; }
1417

15-
let localStorage = response.localStorage;
18+
let storageData = response.storageData;
1619
const wipTitleRegex = /[\[(^](do\s*n[o']?t\s*merge|wip|dnm)[\]):]/i;
1720
const wipTagRegex = /(wip|do\s*not\s*merge|dnm)/i;
1821

@@ -32,8 +35,8 @@
3235

3336
let buttonMessage = '';
3437

35-
if (localStorage && localStorage.buttonMessage) {
36-
buttonMessage = localStorage.buttonMessage;
38+
if (storageData && storageData.buttonMessage) {
39+
buttonMessage = storageData.buttonMessage;
3740
} else {
3841
buttonMessage = 'WIP! You can\'t merge!';
3942
}
@@ -56,9 +59,10 @@
5659
buttonMergeOptions = null;
5760
buttonHtml = null;
5861
buttonMessage = null;
59-
localStorage = null;
62+
storageData = null;
6063
isSquashCommits = null;
6164
isWipTag = null;
65+
browser = null;
6266

6367
setTimeout(changeMergeButtonState, 1000);
6468
});

app/scripts/options.js

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
(() => {
22
'use strict';
33

4+
// Define browser for cross-browser compatibility
5+
var browser = (typeof browser !== 'undefined') ? browser : chrome;
6+
47
window.addEventListener('DOMContentLoaded', () => {
5-
document.getElementById('buttonMessage').value = localStorage.buttonMessage;
8+
browser.storage.local.get('buttonMessage', function (result) {
9+
document.getElementById('buttonMessage').value = result.buttonMessage || '';
10+
});
611

712
document.getElementById('save_btn').closest('form').addEventListener('submit', e => {
813
e.preventDefault();
9-
localStorage.buttonMessage = e.target.buttonMessage.value;
10-
11-
window.alert('The options have been saved!');
14+
const buttonMessage = e.target.buttonMessage.value;
15+
browser.storage.local.set({ buttonMessage: buttonMessage }, function () {
16+
window.alert('The options have been saved!');
17+
});
1218
});
1319
});
1420
})();

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "do-not-merge-wip-for-github",
3-
"version": "2.0.4",
3+
"version": "3.0.1",
44
"author": {
55
"name": "sanemat",
66
"email": "[email protected]",

0 commit comments

Comments
 (0)