Skip to content

Commit 8474196

Browse files
committed
View time in badge
1 parent 9ab390e commit 8474196

File tree

4 files changed

+34
-4
lines changed

4 files changed

+34
-4
lines changed

src/common/utility.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,14 @@ export function convertStringTimeToSummaryTime(time:string) {
1717
resultTimeValue += min * 60;
1818

1919
return resultTimeValue;
20+
}
21+
22+
export function convertSummaryTimeToBadgeString(summaryTime:number):string {
23+
const sec = summaryTime;
24+
const min = Number((summaryTime / 60).toFixed(0));
25+
const hours = Number((summaryTime / (60 * 60)).toFixed(1));
26+
27+
if (sec < 60) return `${sec}s`;
28+
else if (min < 60) return `${min}m`;
29+
else return `${hours}h`;
2030
}

src/compositions/daily-intervals.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export async function closeInterval(domain:string | null): Promise<void>{
77
if (domain == null) return;
88
const storage = injecStorage();
99
const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[];
10-
const item = timeIntervalList.find(x => x.domain === domain && x.day == todayLocalDate());
10+
const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate());
1111
item?.closeInterval();
1212
await storage.saveValue(StorageParams.TIMEINTERVAL_LIST, timeIntervalList);
1313
}
@@ -17,7 +17,7 @@ export async function addInterval(domain:string | null): Promise<void>{
1717

1818
const storage = injecStorage();
1919
const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[];
20-
const item = timeIntervalList.find(x => x.domain === domain && x.day == todayLocalDate());
20+
const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate());
2121
if (item != undefined) {
2222
if (item.day == todayLocalDate())
2323
item.addInterval();

src/compositions/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ export interface BadgeState {
66

77
export enum BadgeColor {
88
red = '#fdb8b8',
9-
green = '#e7e7e7',
9+
green = '#6ec05e',
1010
none = '#000'
1111
}

src/tracker.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ 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, } from "./storage/storage-params";
8+
import { INTERVAL_INACTIVITY_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";
1212
import { isLimitExceeded } from "./compositions/limit-list";
1313
import { Tab } from "./entity/tab";
1414
import { useBlockPage } from "./compositions/block-page";
15+
import { convertSummaryTimeToBadgeString } from "./common/utility";
1516

1617
async function trackTime(){
1718
const activeTabInstance = ActiveTab.getInstance();
@@ -64,6 +65,25 @@ async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tab
6465
}
6566

6667
tab.incSummaryTime();
68+
69+
const storage = injecStorage();
70+
const viewInBadge = (await storage.getValue(
71+
StorageParams.VIEW_TIME_IN_BADGE,
72+
VIEW_TIME_IN_BADGE_DEFAULT
73+
)) as boolean;
74+
75+
if (viewInBadge)
76+
useBadge({
77+
tabId: activeTab!.id!,
78+
text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary),
79+
color: BadgeColor.green,
80+
});
81+
else
82+
useBadge({
83+
tabId: activeTab!.id!,
84+
text: "",
85+
color: BadgeColor.red,
86+
});
6787
}
6888
}
6989

0 commit comments

Comments
 (0)