Skip to content

Commit faa2964

Browse files
authored
Update list on install (#142)
1 parent 14ee1e5 commit faa2964

File tree

3 files changed

+28
-14
lines changed

3 files changed

+28
-14
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"no-bitwise": "off",
3131
"no-inner-declarations": "off",
3232
"no-new": "off",
33+
"no-self-assign": "off",
3334
"unicorn/prefer-top-level-await": "off"
3435
},
3536
"overrides": [

source/app.svelte

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,16 @@
3838
);
3939
}
4040
41-
// eslint-disable-next-line no-self-assign -- Signals to Svelte that the content was updated
4241
extensions = extensions;
4342
}
4443
44+
45+
function fillInTheBlanks(extension) {
46+
extension.shown = true;
47+
extension.indexedName = extension.name.toLowerCase();
48+
return extension;
49+
}
50+
4551
function hideInfoMessage() {
4652
localStorage.setItem('undo-info-message', 1);
4753
showInfoMessage = false;
@@ -72,12 +78,8 @@
7278
7379
undoStack.do(toggle => {
7480
for (const extension of affectedExtensions) {
75-
extension.enabled = enable ? toggle : !toggle;
76-
chrome.management.setEnabled(extension.id, extension.enabled);
81+
chrome.management.setEnabled(extension.id, enable ? toggle : !toggle);
7782
}
78-
79-
// eslint-disable-next-line no-self-assign -- Signals to Svelte that the content was updated
80-
extensions = extensions;
8183
});
8284
}
8385
@@ -92,16 +94,28 @@
9294
9395
return a.enabled < b.enabled ? 1 : -1; // Sort by state
9496
})
95-
.map(extension => {
96-
extension.shown = true;
97-
extension.indexedName = extension.name.toLowerCase();
98-
return extension;
99-
});
97+
.map(extension => fillInTheBlanks(extension));
10098
101-
// Update list on uninstall
99+
// Update list on global events
102100
chrome.management.onUninstalled.addListener(deleted => {
103101
extensions = extensions.filter(({id}) => id !== deleted);
104102
});
103+
chrome.management.onInstalled.addListener(installed => {
104+
if (installed.type === 'extension') {
105+
// Place new extension at the top
106+
extensions = [fillInTheBlanks(installed), ...extensions];
107+
}
108+
});
109+
chrome.management.onEnabled.addListener(updated => {
110+
const extension = extensions.find(({id}) => id === updated.id);
111+
extension.enabled = true;
112+
extensions = extensions;
113+
});
114+
chrome.management.onDisabled.addListener(updated => {
115+
const extension = extensions.find(({id}) => id === updated.id);
116+
extension.enabled = false;
117+
extensions = extensions;
118+
});
105119
});
106120
107121
// Toggle extra buttons on right click on the name

source/extension.svelte

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
const wasEnabled = enabled;
3333
3434
undoStack.do(toggle => {
35-
enabled = toggle !== wasEnabled;
36-
chrome.management.setEnabled(id, enabled);
35+
chrome.management.setEnabled(id, toggle !== wasEnabled);
3736
});
3837
}
3938

0 commit comments

Comments
 (0)