Skip to content

Commit 8be64e6

Browse files
committed
Fix daily notifications
1 parent 00629e4 commit 8be64e6

File tree

9 files changed

+54
-19
lines changed

9 files changed

+54
-19
lines changed

src/_locales/en/messages.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,5 +213,14 @@
213213
},
214214
"5mins": {
215215
"message": "+ 5 minutes"
216+
},
217+
"todayUsageTime": {
218+
"message": "Today's total usage time "
219+
},
220+
"comparedToYesterday": {
221+
"message": " compared to yesterday "
222+
},
223+
"mostVisited": {
224+
"message": "Most visited website "
216225
}
217226
}

src/_locales/ru/messages.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,5 +213,14 @@
213213
},
214214
"5mins": {
215215
"message": "+ 5 минут"
216+
},
217+
"todayUsageTime": {
218+
"message": "Общее время использования на сегодняшний день "
219+
},
220+
"comparedToYesterday": {
221+
"message": " по сравнению \u0441\u043e вчерашним днем "
222+
},
223+
"mostVisited": {
224+
"message": "Самый посещаемый сайт "
216225
}
217226
}

src/components/Notifications.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ async function saveNotificationMessage() {
113113
async function handleDate(modelData: Time) {
114114
if (modelData != null) {
115115
notificationTime.value = modelData;
116-
save(
116+
await save(
117117
StorageParams.DAILY_SUMMARY_NOTIFICATION_TIME,
118118
convertHHMMToSeconds(notificationTime.value.hours, notificationTime.value.minutes),
119119
);

src/compositions/notification-list.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export async function isNeedToShowNotification(url: string, tab: Tab): Promise<b
2020
if (item != undefined) {
2121
const date = tab.days.find(x => x.date == todayLocalDate());
2222
if (date != undefined) {
23-
if (date.summary == item.time || date.summary % item.time == 0) {
23+
if (date.summary != 0 && (date.summary == item.time || date.summary % item.time == 0)) {
2424
log(`Time for notification: website ${url} time ${item.time} summary time ${date.summary}`);
2525
return true;
2626
}

src/compositions/summary-data-today.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,28 @@ import { getPercentage } from '../utils/common';
88
export async function useWebUsageSummaryForDay(): Promise<DaySummary | null> {
99
const repo = await injectTabsRepository();
1010
const unSortedTabs = repo.getTodayTabs();
11-
let tabs: Tab[] = [];
1211

1312
if (unSortedTabs.length == 0) return null;
1413

1514
const dataToday = getData(todayLocalDate(), unSortedTabs);
1615
const dataYesterday = getData(startOfYesterday().toLocaleDateString('en-US'), unSortedTabs);
1716

1817
return {
19-
time: dataToday.time,
20-
mostVisitedSite: dataToday.mostVisitedSite,
21-
mostVisitedSiteTime: dataToday.mostVisitedSiteTime,
22-
timeYesterDay: dataYesterday.time,
23-
percentageFromYesterday: `${getPercentage(dataToday.time, dataYesterday.time)}%`,
18+
time: dataToday?.time,
19+
mostVisitedSite: dataToday?.mostVisitedSite,
20+
mostVisitedSiteTime: dataToday?.mostVisitedSiteTime,
21+
timeYesterDay: dataYesterday?.time,
22+
percentageFromYesterday:
23+
dataToday == null
24+
? '0%'
25+
: dataYesterday == null
26+
? '100%'
27+
: `${getPercentage(dataToday.time, dataYesterday.time)}%`,
2428
};
2529
}
2630

2731
function getData(date: string, unSortedTabs: Tab[]) {
32+
if (unSortedTabs.find(x => x.days.find(d => d.date == date)) == null) return null;
2833
const tabs = unSortedTabs.sort(function (a: Tab, b: Tab) {
2934
return b.days.find(s => s.date === date)!.summary - a.days.find(s => s.date === date)!.summary;
3035
});

src/dto/daySummary.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export type DaySummary = {
2-
time: number;
3-
timeYesterDay: number;
4-
percentageFromYesterday: string;
5-
mostVisitedSite: string;
6-
mostVisitedSiteTime: number;
2+
time: number | undefined;
3+
timeYesterDay: number | undefined;
4+
percentageFromYesterday: string | undefined;
5+
mostVisitedSite: string | undefined;
6+
mostVisitedSiteTime: number | undefined;
77
};

src/jobs/daily-summary-notification.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { convertLimitTimeToString } from '../utils/converter';
33
import { Settings } from '../compositions/settings';
44
import { StorageParams } from '../storage/storage-params';
55
import { NotificationType, showNotification } from '../compositions/show-notification';
6+
import i18n from '../plugins/i18n';
67

78
export async function dailySummaryNotification() {
89
const showDailyNotifacation = (await Settings.getInstance().getSetting(
@@ -13,10 +14,14 @@ export async function dailySummaryNotification() {
1314
const data = await useWebUsageSummaryForDay();
1415
if (data == null) return;
1516

16-
const title = `Today's total usage time ${convertLimitTimeToString(data.time)}`;
17-
const message = `${data?.percentageFromYesterday} compared to yesterday \n${
18-
data.mostVisitedSite
19-
} most visited website ${convertLimitTimeToString(data.mostVisitedSiteTime)}`;
17+
const title = `${i18n.global.t('todayUsageTime.message')} ${convertLimitTimeToString(
18+
data.time!,
19+
)}`;
20+
const message = `${data?.percentageFromYesterday} ${i18n.global.t(
21+
'comparedToYesterday.message',
22+
)} \n${data.mostVisitedSite} ${i18n.global.t('mostVisited.message')} ${convertLimitTimeToString(
23+
data.mostVisitedSiteTime!,
24+
)}`;
2025

2126
await showNotification(NotificationType.DailySummaryNotification, title, message);
2227
}

src/jobs/sheduler.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ async function rescheduleJobs(): Promise<void> {
4242
StorageParams.DAILY_SUMMARY_NOTIFICATION_TIME,
4343
)) as number;
4444
await Browser.alarms.clear(JobId.DailySummaryNotification);
45+
const nextTime = getNextTimeOfDay(dailySummaryNotificationTime * SECOND);
46+
log(`[schedule-jobs] ${JobId.DailySummaryNotification} start time ${new Date(nextTime)}`);
4547
Browser.alarms.create(JobId.DailySummaryNotification, {
46-
when: getNextTimeOfDay(dailySummaryNotificationTime * SECOND),
48+
when: nextTime,
4749
periodInMinutes: DAY_MINUTES,
4850
});
4951

@@ -59,6 +61,11 @@ async function createAlarmIfMissing(
5961
): Promise<void> {
6062
const existing = await Browser.alarms.get(name).catch(() => undefined);
6163
if (existing == null) {
64+
log(
65+
`[schedule-jobs] ${name} start time ${
66+
alarmInfo.when != undefined ? new Date(alarmInfo.when) : null
67+
}`,
68+
);
6269
Browser.alarms.create(name, alarmInfo);
6370
}
6471
}

vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default defineConfig(({ mode }) => ({
3636

3737
emptyOutDir: true,
3838
sourcemap: mode === 'development' ? 'inline' : false,
39-
minify: true,
39+
minify: mode === 'development' ? false : true,
4040
},
4141
define: {
4242
'process.env': process.env,

0 commit comments

Comments
 (0)