|
38 | 38 | );
|
39 | 39 | }
|
40 | 40 |
|
41 |
| - // eslint-disable-next-line no-self-assign -- Signals to Svelte that the content was updated |
42 | 41 | extensions = extensions;
|
43 | 42 | }
|
44 | 43 |
|
| 44 | +
|
| 45 | + function fillInTheBlanks(extension) { |
| 46 | + extension.shown = true; |
| 47 | + extension.indexedName = extension.name.toLowerCase(); |
| 48 | + return extension; |
| 49 | + } |
| 50 | +
|
45 | 51 | function hideInfoMessage() {
|
46 | 52 | localStorage.setItem('undo-info-message', 1);
|
47 | 53 | showInfoMessage = false;
|
|
72 | 78 |
|
73 | 79 | undoStack.do(toggle => {
|
74 | 80 | 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); |
77 | 82 | }
|
78 |
| -
|
79 |
| - // eslint-disable-next-line no-self-assign -- Signals to Svelte that the content was updated |
80 |
| - extensions = extensions; |
81 | 83 | });
|
82 | 84 | }
|
83 | 85 |
|
|
92 | 94 |
|
93 | 95 | return a.enabled < b.enabled ? 1 : -1; // Sort by state
|
94 | 96 | })
|
95 |
| - .map(extension => { |
96 |
| - extension.shown = true; |
97 |
| - extension.indexedName = extension.name.toLowerCase(); |
98 |
| - return extension; |
99 |
| - }); |
| 97 | + .map(extension => fillInTheBlanks(extension)); |
100 | 98 |
|
101 |
| - // Update list on uninstall |
| 99 | + // Update list on global events |
102 | 100 | chrome.management.onUninstalled.addListener(deleted => {
|
103 | 101 | extensions = extensions.filter(({id}) => id !== deleted);
|
104 | 102 | });
|
| 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 | + }); |
105 | 119 | });
|
106 | 120 |
|
107 | 121 | // Toggle extra buttons on right click on the name
|
|
0 commit comments