forked from Stigmatoz/web-activity-time-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuseDailyIntervals.ts
More file actions
48 lines (44 loc) · 1.72 KB
/
useDailyIntervals.ts
File metadata and controls
48 lines (44 loc) · 1.72 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
import { TimeInterval } from '../entity/time-interval';
import { injecStorage } from '../storage/inject-storage';
import { StorageDeserializeParam } from '../storage/storage-params';
import { todayLocalDate } from '../utils/date';
export async function useDailyIntervals() {
async function closeInterval(domain: string | null): Promise<void> {
if (domain == null) return;
const storage = injecStorage();
const timeIntervalList = (await storage.getDeserializeList(
StorageDeserializeParam.TIMEINTERVAL_LIST,
)) as TimeInterval[];
const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate());
item?.closeInterval();
await storage.saveIntervalList(timeIntervalList);
}
async function addInterval(domain: string | null): Promise<void> {
if (domain == null) return;
const storage = injecStorage();
let timeIntervalList = (await storage.getDeserializeList(
StorageDeserializeParam.TIMEINTERVAL_LIST,
)) as TimeInterval[];
if (timeIntervalList == undefined) timeIntervalList = [];
const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate());
if (item != undefined) {
if (item.day == todayLocalDate()) item.addInterval();
else {
const newInterval = new TimeInterval();
newInterval.init(todayLocalDate(), domain);
newInterval.addInterval();
timeIntervalList.push(newInterval);
}
} else {
const newInterval = new TimeInterval();
newInterval.init(todayLocalDate(), domain);
newInterval.addInterval();
timeIntervalList.push(newInterval);
}
await storage.saveIntervalList(timeIntervalList);
}
return {
closeInterval,
addInterval,
};
}