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
92 lines (80 loc) · 2.86 KB
/
background.ts
File metadata and controls
92 lines (80 loc) · 2.86 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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';
import { checkPomodoro } from './functions/pomodoro';
import { Messages } from './utils/messages';
import { injectTabsRepositorySingleton } from './repository/inject-tabs-repository';
logger.log('Start background script');
let pomodoroTimer: number;
self.onerror = err => {
console.error('Unhandled error:', err);
};
Browser.storage.onChanged.addListener(async (changes, namespace) => {
for (var key in changes) {
if (Object.values(StorageParams).includes(key as StorageParams))
await Settings.getInstance().reloadSetting(key as StorageParams);
if (key == StorageParams.IS_POMODORO_ENABLED) {
const value = changes[StorageParams.IS_POMODORO_ENABLED].newValue;
pomodoro(value);
}
}
});
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');
});
async function pomodoro(value?: boolean) {
if (value == undefined) {
const settingsStorage = injecStorage();
value = await settingsStorage.getValue(StorageParams.IS_POMODORO_ENABLED);
}
if (value == true) pomodoroTimer = setInterval(checkPomodoro, 1000);
else clearInterval(pomodoroTimer);
}
pomodoro();
scheduleJobs();
initTracker();
Browser.runtime.onMessage.addListener(async message => {
if (message == Messages.ClearAllData) {
const storage = injecStorage();
const repo = await injectTabsRepositorySingleton();
repo.removeAllTabs();
await storage.saveTabs([]);
}
if (message.message == Messages.Restore) {
const storage = injecStorage();
await storage.saveTabs(message.data);
const repo = await injectTabsRepositorySingleton();
repo.initAsync();
}
});