Skip to content

Commit cf07e61

Browse files
committed
Change logic for updating favicon and remove permission "webNavigation"
1 parent d8c311c commit cf07e61

File tree

5 files changed

+113
-117
lines changed

5 files changed

+113
-117
lines changed

.prettierrc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
singleQuote: true
22
trailingComma: all
33
endOfLine: lf
4-
printWidth: 120
4+
printWidth: 100
55
tabWidth: 2
66
singleAttributePerLine: true
77
arrowParens: avoid

src/background.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import Browser from "webextension-polyfill";
2-
import { initTracker } from "./tracker";
3-
import { logger } from "./compositions/logger";
4-
import { useFavicon } from "./compositions/update-favicon";
1+
import Browser from 'webextension-polyfill';
2+
import { initTracker } from './tracker';
3+
import { logger } from './compositions/logger';
4+
import { useFavicon } from './compositions/update-favicon';
55

6-
logger.log("Start background script");
6+
logger.log('Start background script');
77

8-
Browser.runtime.onInstalled.addListener((details) => {
9-
logger.log("Extension installed:", details);
8+
Browser.runtime.onInstalled.addListener(details => {
9+
logger.log('Extension installed:', details);
1010
});
1111

12-
Browser.webNavigation.onCompleted.addListener(async function(details) {
12+
Browser.webNavigation.onCompleted.addListener(async function (details) {
1313
await useFavicon(details.tabId);
1414
});
1515

16-
initTracker();
16+
initTracker();

src/compositions/update-favicon.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/manifest.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
"activeTab",
1818
"storage",
1919
"idle",
20-
"webNavigation",
2120
"unlimitedStorage",
2221
"alarms",
2322
"notifications"

src/tracker.ts

Lines changed: 103 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,124 @@
1-
import Browser from "webextension-polyfill";
2-
import { isValidPage } from "./compositions/valid-page";
3-
import { extractHostname } from "./compositions/extract-hostname";
4-
import { injectTabsRepository } from "./repository/inject-tabs-repository";
5-
import { isInBlackList } from "./compositions/black-list";
6-
import { useBadge } from "./compositions/set-badge";
7-
import { INTERVAL_INACTIVITY_DEFAULT, INTERVAL_SAVE_STORAGE_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params";
8-
import { BadgeColor } from "./compositions/set-badge";
9-
import { injecStorage } from "./storage/inject-storage";
10-
import { addInterval, closeInterval } from "./compositions/daily-intervals";
11-
import { ActiveTab } from "./compositions/activeTab";
12-
import { isLimitExceeded } from "./compositions/limit-list";
13-
import { Tab } from "./entity/tab";
14-
import { useBlockPage } from "./compositions/block-page";
15-
import { convertSummaryTimeToBadgeString } from "./utils/converter";
1+
import Browser from 'webextension-polyfill';
2+
import { isValidPage } from './compositions/valid-page';
3+
import { extractHostname } from './compositions/extract-hostname';
4+
import { injectTabsRepository } from './repository/inject-tabs-repository';
5+
import { isInBlackList } from './compositions/black-list';
6+
import { useBadge } from './compositions/set-badge';
7+
import {
8+
INTERVAL_INACTIVITY_DEFAULT,
9+
INTERVAL_SAVE_STORAGE_DEFAULT,
10+
StorageParams,
11+
VIEW_TIME_IN_BADGE_DEFAULT,
12+
} from './storage/storage-params';
13+
import { BadgeColor } from './compositions/set-badge';
14+
import { injecStorage } from './storage/inject-storage';
15+
import { addInterval, closeInterval } from './compositions/daily-intervals';
16+
import { ActiveTab } from './compositions/activeTab';
17+
import { isLimitExceeded } from './compositions/limit-list';
18+
import { Tab } from './entity/tab';
19+
import { useBlockPage } from './compositions/block-page';
20+
import { convertSummaryTimeToBadgeString } from './utils/converter';
1621

1722
const activeTabInstance = ActiveTab.getInstance();
1823
const storage = injecStorage();
1924

2025
export async function initTracker() {
21-
setInterval(trackTime, 1000);
22-
setInterval(saveTabs, INTERVAL_SAVE_STORAGE_DEFAULT);
26+
setInterval(trackTime, 1000);
27+
setInterval(saveTabs, INTERVAL_SAVE_STORAGE_DEFAULT);
2328
}
2429

25-
async function trackTime(){
26-
const repo = await injectTabsRepository();
27-
const window = await Browser.windows.getLastFocused({ populate: true });
28-
if (window.focused) {
29-
const activeTab = window.tabs?.find((t) => t.active === true);
30-
if (isValidPage(activeTab)) {
31-
const activeDomain = extractHostname(activeTab!.url);
30+
async function trackTime() {
31+
const repo = await injectTabsRepository();
32+
const window = await Browser.windows.getLastFocused({ populate: true });
33+
if (window.focused) {
34+
const activeTab = window.tabs?.find(t => t.active === true);
35+
if (isValidPage(activeTab)) {
36+
const activeDomain = extractHostname(activeTab!.url);
3237

33-
if (await isInBlackList(activeDomain)) {
34-
useBadge({
35-
tabId: activeTab!.id!,
36-
text: "n/a",
37-
color: BadgeColor.red,
38-
});
39-
} else {
40-
let tab = repo.getTab(activeDomain);
41-
if (tab == undefined) {
42-
tab = await repo.addTab(activeDomain, activeTab?.favIconUrl);
43-
}
44-
if (tab != undefined){
45-
const inactivityInterval = (await storage.getValue(
46-
StorageParams.INTERVAL_INACTIVITY,
47-
INTERVAL_INACTIVITY_DEFAULT
48-
)) as number;
49-
const state = await Browser.idle.queryState(inactivityInterval);
50-
mainTracker(state, activeTab!, activeDomain, tab);
51-
}
52-
}
38+
if (await isInBlackList(activeDomain)) {
39+
useBadge({
40+
tabId: activeTab!.id!,
41+
text: 'n/a',
42+
color: BadgeColor.red,
43+
});
44+
} else {
45+
let tab = repo.getTab(activeDomain);
46+
if (tab == undefined) {
47+
tab = await repo.addTab(activeDomain, activeTab?.favIconUrl);
5348
}
54-
} else {
55-
await closeInterval(activeTabInstance.getActiveTabDomain());
56-
activeTabInstance.setActiveTab(null);
49+
if (tab != undefined) {
50+
const inactivityInterval = (await storage.getValue(
51+
StorageParams.INTERVAL_INACTIVITY,
52+
INTERVAL_INACTIVITY_DEFAULT,
53+
)) as number;
54+
const state = await Browser.idle.queryState(inactivityInterval);
55+
mainTracker(state, activeTab!, activeDomain, tab);
56+
}
57+
}
5758
}
59+
} else {
60+
await closeInterval(activeTabInstance.getActiveTabDomain());
61+
activeTabInstance.setActiveTab(null);
62+
}
5863
}
5964

60-
async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tabs.Tab, activeDomain: string, tab: Tab){
61-
function isAudible(){
62-
return state === 'idle' && activeTab.audible;
63-
}
65+
async function mainTracker(
66+
state: Browser.Idle.IdleState,
67+
activeTab: Browser.Tabs.Tab,
68+
activeDomain: string,
69+
tab: Tab,
70+
) {
71+
function isAudible() {
72+
return state === 'idle' && activeTab.audible;
73+
}
6474

65-
function isActiveTabWasChanged(){
66-
return activeDomain != activeTabInstance.getActiveTabDomain();
75+
function isActiveTabWasChanged() {
76+
return activeDomain != activeTabInstance.getActiveTabDomain();
77+
}
78+
79+
const isAudibleValue = isAudible();
80+
if (state === 'active' || isAudibleValue) {
81+
if (await isLimitExceeded(activeDomain, tab)) {
82+
const summaryTime = tab.days.at(-1)!.summary;
83+
const summaryCounter = tab.days.at(-1)!.counter;
84+
await useBlockPage(activeDomain, summaryTime, summaryCounter);
85+
return;
6786
}
6887

69-
const isAudibleValue = isAudible();
70-
if (state === 'active' || isAudibleValue){
71-
if (await isLimitExceeded(activeDomain, tab)){
72-
const summaryTime = tab.days.at(-1)!.summary;
73-
const summaryCounter = tab.days.at(-1)!.counter;
74-
await useBlockPage(activeDomain, summaryTime, summaryCounter);
75-
return;
76-
}
88+
if (isActiveTabWasChanged()) {
89+
tab.incCounter();
90+
await closeInterval(activeTabInstance.getActiveTabDomain());
91+
activeTabInstance.setActiveTab(activeTab.url!);
92+
await addInterval(activeTabInstance.getActiveTabDomain());
93+
}
94+
if (tab.favicon == '' && activeTab.favIconUrl != undefined)
95+
tab.setFavicon(activeTab.favIconUrl);
7796

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

86-
const storage = injecStorage();
87-
const viewInBadge = (await storage.getValue(
88-
StorageParams.VIEW_TIME_IN_BADGE,
89-
VIEW_TIME_IN_BADGE_DEFAULT
90-
)) as boolean;
99+
const viewInBadge = (await storage.getValue(
100+
StorageParams.VIEW_TIME_IN_BADGE,
101+
VIEW_TIME_IN_BADGE_DEFAULT,
102+
)) as boolean;
91103

92-
if (viewInBadge)
93-
useBadge({
94-
tabId: activeTab!.id!,
95-
text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary),
96-
color: BadgeColor.green,
97-
});
98-
else
99-
useBadge({
100-
tabId: activeTab!.id!,
101-
text: "",
102-
color: BadgeColor.red,
103-
});
104-
}
104+
if (viewInBadge)
105+
useBadge({
106+
tabId: activeTab!.id!,
107+
text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary),
108+
color: BadgeColor.green,
109+
});
110+
else
111+
useBadge({
112+
tabId: activeTab!.id!,
113+
text: '',
114+
color: BadgeColor.red,
115+
});
116+
}
105117
}
106118

107-
async function saveTabs(){
108-
const storage = injecStorage();
109-
const repo = await injectTabsRepository();
110-
const tabs = repo.getTabs();
111-
await storage.saveTabs(tabs);
119+
async function saveTabs() {
120+
const storage = injecStorage();
121+
const repo = await injectTabsRepository();
122+
const tabs = repo.getTabs();
123+
await storage.saveTabs(tabs);
112124
}

0 commit comments

Comments
 (0)