|
1 | | -import semverLT from 'semver/functions/lt'; |
2 | | -import semverValid from 'semver/functions/valid'; |
3 | | - |
4 | | -import { GetCategories } from './background/categories'; |
5 | | -import { ImportFilters } from './background/filters'; |
6 | | -import { MENUS, OnMenuClicked, OnMenuShown } from './background/menus'; |
| 1 | +import { InitMenus } from './background/menus'; |
7 | 2 | import { OnRuntimeMessage } from './background/messages'; |
8 | | -import { OnLocalStorageChanged } from './background/storage'; |
9 | | - |
10 | | -import { REGEX } from './constants/url'; |
11 | | - |
12 | | -browser.runtime.onInstalled.addListener(async (details) => { |
13 | | - const { previousVersion } = details; |
14 | | - |
15 | | - if (semverValid(previousVersion) && semverLT(previousVersion, '6.0.0')) { |
16 | | - const data = await browser.storage.local.get('tags'); |
17 | | - if (data?.tags) { |
18 | | - console.warn('Converting tag filters to keyword filters'); |
19 | | - await ImportFilters(data); |
20 | | - // TODO: is it appropriate to delete tag filters from previous versions? |
21 | | - // await browser.storage.local.remove('tags'); |
22 | | - } |
23 | | - } |
24 | | - |
25 | | - // fetch and store the latest category paths |
26 | | - await GetCategories(); |
27 | | -}); |
28 | | - |
29 | | -/* Page Action */ |
30 | | -browser.pageAction.onClicked.addListener(async (tab) => { |
31 | | - const MANAGEMENT_URL = browser.runtime.getURL('pages/manage.html'); |
32 | | - |
33 | | - const tabs = await browser.tabs.query({ |
34 | | - 'currentWindow': true, |
35 | | - 'url': MANAGEMENT_URL |
36 | | - }); |
| 3 | +import { OnNotificationClicked } from './background/notifications'; |
| 4 | +import { OnInstalled } from './background/runtime'; |
| 5 | +import { OnStorageChanged } from './background/storage'; |
| 6 | +import { OpenOrShowURL, OnTabUpdate } from './background/tabs'; |
37 | 7 |
|
38 | | - if (tabs.length) { |
39 | | - return browser.tabs.update(tabs[0].id, { |
40 | | - 'active': true |
41 | | - }); |
42 | | - } |
43 | 8 |
|
44 | | - return browser.tabs.create({ |
45 | | - 'url': MANAGEMENT_URL |
46 | | - }); |
47 | | -}); |
48 | | - |
49 | | -browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { |
50 | | - if (REGEX.test(tab.url)) { |
51 | | - browser.pageAction.show(tabId); |
52 | | - } else { |
53 | | - chrome.pageAction.hide(tabId); |
54 | | - } |
55 | | -}); |
56 | | - |
57 | | - |
58 | | -/* Runtime Messages */ |
| 9 | +browser.notifications.onClicked.addListener(OnNotificationClicked); |
| 10 | +browser.pageAction.onClicked.addListener(() => OpenOrShowURL(browser.runtime.getURL('pages/manage.html'))); |
| 11 | +browser.runtime.onInstalled.addListener(OnInstalled); |
59 | 12 | browser.runtime.onMessage.addListener(OnRuntimeMessage); |
| 13 | +browser.storage.onChanged.addListener(OnStorageChanged); |
| 14 | +browser.tabs.onUpdated.addListener(OnTabUpdate); |
60 | 15 |
|
61 | | - |
62 | | -/* Storage */ |
63 | | -browser.storage.onChanged.addListener((changes, areaName) => { |
64 | | - switch (areaName) { |
65 | | - case 'local': |
66 | | - OnLocalStorageChanged(changes); |
67 | | - break; |
68 | | - } |
69 | | -}); |
70 | | - |
71 | | - |
72 | | -/* Context Menus */ |
73 | | -try { |
74 | | - MENUS.forEach(menu => browser.contextMenus.remove(menu.id).finally(browser.contextMenus.create(menu))); |
75 | | - browser.contextMenus.onClicked.addListener(OnMenuClicked); |
76 | | -} catch (ex) { |
77 | | - console.error('Failed to setup context menus', ex); |
78 | | -} |
79 | | - |
80 | | -try { |
81 | | - browser.contextMenus.onShown.addListener(OnMenuShown); |
82 | | -} catch (ex) { |
83 | | - // chrome doesn't support the onShown event, but we don't use it for major functionality, so just ignore it |
84 | | - void(ex); |
85 | | -} |
| 16 | +InitMenus(); |
0 commit comments