forked from Stigmatoz/web-activity-time-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackground.ts
More file actions
58 lines (49 loc) · 1.72 KB
/
background.ts
File metadata and controls
58 lines (49 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import Browser from 'webextension-polyfill';
import { initTracker } from './tracker';
import { logger } from './utils/logger';
import { scheduleJobs } from './jobs/sheduler';
import { Settings } from './functions/settings';
import { StorageParams } from './storage/storage-params';
import { injecStorage } from './storage/inject-storage';
import { todayLocalDate } from './utils/date';
logger.log('Start background script');
self.onerror = err => {
console.error('Unhandled error:', err);
};
Browser.storage.onChanged.addListener((changes, namespace) => {
for (var key in changes) {
if (Object.values(StorageParams).includes(key as StorageParams))
Settings.getInstance().reloadSetting(key as StorageParams);
}
});
Browser.runtime.setUninstallURL('https://webtracker.online/goodbye.html');
Browser.runtime.onInstalled.addListener(async details => {
if (details.reason == 'install') {
logger.log('Extension installed:', details);
const settingsStorage = injecStorage();
await settingsStorage.saveValue(StorageParams.INSTALL_DATE, todayLocalDate());
const initialPageUrl = Browser.runtime.getURL('src/welcome.html');
await Browser.tabs.create({
url: initialPageUrl,
active: true,
});
}
if (details.reason == 'update') {
const showChangelog = (await Settings.getInstance().getSetting(
StorageParams.SHOW_CHANGELOG,
)) as boolean;
if (showChangelog)
await Browser.tabs.create({
url: 'https://webtracker.online/releasenotes.html',
active: true,
});
}
});
Browser.runtime.onStartup.addListener(() => {
logger.log(`onStartup event`);
});
Browser.windows.onFocusChanged.addListener(() => {
logger.log('onFocusChanged');
});
scheduleJobs();
initTracker();