Skip to content

Commit 70b01e4

Browse files
committed
Change tracker
1 parent 57c3259 commit 70b01e4

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

src/tracker.ts

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { useBadge } from "./compositions/set-badge";
77
import { BadgeColor } from "./compositions/types";
88
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";
10-
import { closeInterval } from "./compositions/daily-intervals";
10+
import { addInterval, closeInterval } from "./compositions/daily-intervals";
1111
import { ActiveTab } from "./compositions/activeTab";
1212
import { isLimitExceeded } from "./compositions/limit-list";
1313
import { Tab } from "./entity/tab";
@@ -28,48 +28,59 @@ async function trackTime(){
2828
if (window.focused) {
2929
const activeTab = window.tabs?.find((t) => t.active === true);
3030
if (isValidPage(activeTab)) {
31-
const activeUrl = extractHostname(activeTab!.url);
32-
activeTabInstance.setActiveTab(activeUrl);
31+
const activeDomain = extractHostname(activeTab!.url);
3332

34-
if (await isInBlackList(activeUrl)) {
33+
if (await isInBlackList(activeDomain)) {
3534
useBadge({
3635
tabId: activeTab!.id!,
3736
text: "n/a",
3837
color: BadgeColor.red,
3938
});
4039
} else {
41-
const tab = repo.getTab(activeUrl);
40+
let tab = repo.getTab(activeDomain);
4241
if (tab == undefined) {
43-
await repo.addTab(activeTab!);
44-
} else {
42+
tab = await repo.addTab(activeTab!);
43+
}
44+
if (tab != undefined){
4545
const inactivityInterval = (await storage.getValue(
4646
StorageParams.INTERVAL_INACTIVITY,
4747
INTERVAL_INACTIVITY_DEFAULT
4848
)) as number;
4949
const state = await Browser.idle.queryState(inactivityInterval);
50-
mainTracker(state, activeTab!, activeUrl, tab);
50+
mainTracker(state, activeTab!, activeDomain, tab);
5151
}
5252
}
5353
}
5454
} else {
55-
await closeInterval(activeTabInstance.getActiveTab());
55+
await closeInterval(activeTabInstance.getActiveTabDomain());
5656
activeTabInstance.setActiveTab(null);
5757
}
5858
}
5959

60-
async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tabs.Tab, activeUrl: string, tab: Tab){
60+
async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tabs.Tab, activeDomain: string, tab: Tab){
6161
function isAudible(){
6262
return state === 'idle' && activeTab.audible;
6363
}
6464

65-
if (state === 'active' || isAudible()){
66-
if (await isLimitExceeded(activeUrl, tab)){
65+
function isActiveTabWasChanged(){
66+
return activeDomain != activeTabInstance.getActiveTabDomain();
67+
}
68+
69+
const isAudibleValue = isAudible();
70+
if (state === 'active' || isAudibleValue){
71+
if (await isLimitExceeded(activeDomain, tab)){
6772
const summaryTime = tab.days.at(-1)!.summary;
6873
const summaryCounter = tab.days.at(-1)!.counter;
69-
await useBlockPage(activeUrl, summaryTime, summaryCounter);
74+
await useBlockPage(activeDomain, summaryTime, summaryCounter);
7075
return;
7176
}
7277

78+
if (isActiveTabWasChanged()){
79+
tab.incCounter();
80+
await closeInterval(activeTabInstance.getActiveTabDomain());
81+
activeTabInstance.setActiveTab(activeTab.url!);
82+
await addInterval(activeTabInstance.getActiveTabDomain());
83+
}
7384
tab.incSummaryTime();
7485

7586
const storage = injecStorage();

0 commit comments

Comments
 (0)