Skip to content

Commit 24a235c

Browse files
committed
Saving tabs to the storage every 5 seconds
1 parent 8474196 commit 24a235c

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/repository/tabs-repository-interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Tab } from "../entity/tab";
22
import Browser from 'webextension-polyfill';
33

44
export interface ITabsRepository {
5+
getTabs(): Tab[];
56
getTab(domain:string): Tab | undefined;
67
addTab(tab:Browser.Tabs.Tab): Promise<void>;
78
}

src/repository/tabs-repository.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ export class TabsRepository implements ITabsRepository {
2020
this.tabs = await injecStorage().getTabs();
2121
}
2222

23+
getTabs(): Tab[] {
24+
return this.tabs;
25+
}
26+
2327
getTab(domain: string): Tab | undefined {
2428
return this.tabs?.find(x => x.url === domain);
2529
}

src/tracker.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { injectTabsRepository } from "./repository/inject-tabs-repository";
55
import { isInBlackList } from "./compositions/black-list";
66
import { useBadge } from "./compositions/set-badge";
77
import { BadgeColor } from "./compositions/types";
8-
import { INTERVAL_INACTIVITY_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params";
8+
import { INTERVAL_INACTIVITY_DEFAULT, INTERVAL_SAVE_STORAGE_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params";
99
import { injecStorage } from "./storage/inject-storage";
1010
import { closeInterval } from "./compositions/daily-intervals";
1111
import { ActiveTab } from "./compositions/activeTab";
@@ -14,8 +14,16 @@ import { Tab } from "./entity/tab";
1414
import { useBlockPage } from "./compositions/block-page";
1515
import { convertSummaryTimeToBadgeString } from "./common/utility";
1616

17+
const activeTabInstance = ActiveTab.getInstance();
18+
const storage = injecStorage();
19+
20+
export async function initTracker() {
21+
setInterval(trackTime, 1000);
22+
setInterval(saveTabs, INTERVAL_SAVE_STORAGE_DEFAULT);
23+
}
24+
1725
async function trackTime(){
18-
const activeTabInstance = ActiveTab.getInstance();
26+
const repo = await injectTabsRepository();
1927
const window = await Browser.windows.getLastFocused({ populate: true });
2028
if (window.focused) {
2129
const activeTab = window.tabs?.find((t) => t.active === true);
@@ -30,12 +38,10 @@ async function trackTime(){
3038
color: BadgeColor.red,
3139
});
3240
} else {
33-
const repo = await injectTabsRepository();
3441
const tab = repo.getTab(activeUrl);
3542
if (tab == undefined) {
3643
await repo.addTab(activeTab!);
3744
} else {
38-
const storage = injecStorage();
3945
const inactivityInterval = (await storage.getValue(
4046
StorageParams.INTERVAL_INACTIVITY,
4147
INTERVAL_INACTIVITY_DEFAULT
@@ -87,6 +93,9 @@ async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tab
8793
}
8894
}
8995

90-
export async function initTracker() {
91-
setInterval(trackTime, 1000);
96+
async function saveTabs(){
97+
const storage = injecStorage();
98+
const repo = await injectTabsRepository();
99+
const tabs = repo.getTabs();
100+
await storage.saveTabs(tabs);
92101
}

0 commit comments

Comments
 (0)