Skip to content

Commit 1aa1223

Browse files
committed
Refact functions
1 parent edec433 commit 1aa1223

31 files changed

+945
-26
lines changed

src/background.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Browser from 'webextension-polyfill';
22
import { initTracker } from './tracker';
33
import { logger } from './utils/logger';
44
import { scheduleJobs } from './jobs/sheduler';
5-
import { Settings } from './compositions/settings';
5+
import { Settings } from './functions/settings';
66
import { StorageParams } from './storage/storage-params';
77
import { injecStorage } from './storage/inject-storage';
88
import { todayLocalDate } from './utils/date';

src/components/BadgeIcons.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default {
1515
import { computed } from 'vue';
1616
import { useI18n } from 'vue-i18n';
1717
import { TypeOfList, TypeOfUrl } from '../utils/enums';
18-
import { isDomainInLimits } from '../compositions/limit-list';
18+
import { isDomainInLimits } from '../functions/limit-list';
1919
import { computedAsync } from '@vueuse/core';
2020
2121
const { t } = useI18n();

src/components/ByDays.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ import NoDataByDays from './NoDataByDays.vue';
7777
import ByDaysChart from '../components/ByDaysChart.vue';
7878
import Expander from '../components/Expander.vue';
7979
import { TabListByDays } from '../dto/tabListSummary';
80-
import { useTabListByDays } from '../compositions/useTabListByDays';
80+
import { useTabListByDays } from '../functions/useTabListByDays';
8181
import { convertSummaryTimeToString } from '../utils/converter';
8282
import { ranges, ThisWeekRange } from '../utils/date';
83-
import { useImportToCsvWithData } from '../compositions/useImportToCsv';
84-
import { useFile, FileType } from '../compositions/useFile';
83+
import { useImportToCsvWithData } from '../functions/useImportToCsv';
84+
import { useFile, FileType } from '../functions/useFile';
8585
8686
const { t } = useI18n();
8787

src/components/GeneralSettings.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,11 @@ import {
151151
SHOW_CHANGELOG_DEFAULT,
152152
} from '../storage/storage-params';
153153
import { ranges, ThisWeekRange, todayLocalDate } from '../utils/date';
154-
import { useImportToCsv } from '../compositions/useImportToCsv';
155-
import { FileType, useFile } from '../compositions/useFile';
156-
import { useRemoveAllData } from '../compositions/useRemoveAllData';
154+
import { useImportToCsv } from '../functions/useImportToCsv';
155+
import { FileType, useFile } from '../functions/useFile';
156+
import { useRemoveAllData } from '../functions/useRemoveAllData';
157157
import { injectTabsRepository } from '../repository/inject-tabs-repository';
158-
import { useRestoreData } from '../compositions/useRestoreData';
158+
import { useRestoreData } from '../functions/useRestoreData';
159159
160160
const { t } = useI18n();
161161

src/components/TabList.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ import DonutChart from '../components/DonutChart.vue';
5252
import OverallStatistics from '../components/OverallStatistics.vue';
5353
import { Tab } from '../entity/tab';
5454
import { SortingBy, TypeOfList } from '../utils/enums';
55-
import { useTodayTabListSummary } from '../compositions/useTodayTabListSummary';
56-
import { useAllTabListSummary } from '../compositions/useAllTabListSummary';
55+
import { useTodayTabListSummary } from '../functions/useTodayTabListSummary';
56+
import { useAllTabListSummary } from '../functions/useAllTabListSummary';
5757
import { CurrentTabItem } from '../dto/currentTabItem';
5858
import { todayLocalDate } from '../utils/date';
5959
import { OverallStats } from '../dto/tabListSummary';

src/components/WebsiteStats.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ import { openPage } from '../utils/open-page';
7272
import { computed, onMounted, ref } from 'vue';
7373
import { SettingsTab } from '../utils/enums';
7474
import { ThisWeekRange, ranges } from '../utils/date';
75-
import { useTabStatsByDays } from '../compositions/useTabStatsByDays';
75+
import { useTabStatsByDays } from '../functions/useTabStatsByDays';
7676
import { TabListByDays } from '../dto/tabListSummary';
7777
import { Tab } from '../entity/tab';
7878
import { getTypeOfUrl } from '../utils/get-type-of-url';

src/functions/black-list.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { StorageParams } from '../storage/storage-params';
2+
import { isDomainEquals } from '../utils/common';
3+
import { extractHostname } from '../utils/extract-hostname';
4+
import { Settings } from './settings';
5+
6+
export async function isInBlackList(url: string): Promise<boolean> {
7+
const blackList = (await Settings.getInstance().getSetting(StorageParams.BLACK_LIST)) as string[];
8+
const array = Object.values(blackList);
9+
return array?.find(x => isDomainEquals(extractHostname(x), extractHostname(url))) !== undefined;
10+
}

src/functions/current-tab.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import Browser from 'webextension-polyfill';
2+
3+
export async function getCurrentTab() {
4+
const tabs = await Browser.tabs.query({ active: true, currentWindow: true });
5+
// since only one tab should be active and in the current window at once
6+
// the return variable should only have one entry
7+
return tabs[0];
8+
}

src/functions/deferList.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { differenceInHours } from 'date-fns';
2+
import { StorageParams } from '../storage/storage-params';
3+
import { isDomainEquals } from '../utils/common';
4+
import { Settings } from './settings';
5+
import { Deffering } from '../entity/deffering';
6+
import { injecStorage } from '../storage/inject-storage';
7+
import { MINUTE } from '../utils/time';
8+
import { log } from '../utils/logger';
9+
10+
export async function isInDeferList(url: string): Promise<boolean> {
11+
const deferList = (await Settings.getInstance().getSetting(
12+
StorageParams.BLOCK_DEFERRAL_TIME,
13+
)) as Deffering[];
14+
const array = Object.values(deferList);
15+
const item = array?.find(x => isDomainEquals(x.domain, url));
16+
if (item != undefined)
17+
log(
18+
`Deferring time ${url} ${new Date(item.time)} diff ${differenceInHours(
19+
new Date(item.time),
20+
new Date(),
21+
)}`,
22+
);
23+
return item != undefined && item.time > Date.now();
24+
}
25+
26+
export async function canDefering(url: string): Promise<boolean> {
27+
const deferList = (await Settings.getInstance().getSetting(
28+
StorageParams.BLOCK_DEFERRAL_TIME,
29+
)) as Deffering[];
30+
const array = Object.values(deferList);
31+
const item = array?.find(x => isDomainEquals(x.domain, url));
32+
if (item != undefined)
33+
log(
34+
`Deferring time ${url} ${new Date(item.time)} diff ${differenceInHours(
35+
new Date(item.time),
36+
new Date(),
37+
)}`,
38+
);
39+
if (item == undefined) return true;
40+
41+
return item != undefined && differenceInHours(new Date(item.time), new Date()) > 24;
42+
}
43+
44+
export async function defering(url: string, timeInMinutes: number): Promise<void> {
45+
const settingsStorage = injecStorage();
46+
47+
const deferList = (await Settings.getInstance().getSetting(
48+
StorageParams.BLOCK_DEFERRAL_TIME,
49+
)) as Deffering[];
50+
const array = Object.values(deferList);
51+
const item = array?.find(x => isDomainEquals(x.domain, url));
52+
if (item != undefined) item.time = Date.now() + timeInMinutes * MINUTE;
53+
else array.push(new Deffering(url, 5));
54+
55+
await settingsStorage.saveValue(StorageParams.BLOCK_DEFERRAL_TIME, array);
56+
}

src/functions/limit-list.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { Restriction } from '../entity/restriction';
2+
import { Tab } from '../entity/tab';
3+
import { StorageParams } from '../storage/storage-params';
4+
import { isDomainEquals } from '../utils/common';
5+
import { todayLocalDate } from '../utils/date';
6+
import { isInDeferList } from './deferList';
7+
import { log } from '../utils/logger';
8+
import { Settings } from './settings';
9+
10+
export type LimitExceed = {
11+
IsLimitExceeded: boolean;
12+
LimitTime: number | null;
13+
};
14+
15+
export async function isLimitExceeded(url: string, tab: Tab): Promise<LimitExceed> {
16+
const limitList = (await Settings.getInstance().getSetting(
17+
StorageParams.RESTRICTION_LIST,
18+
)) as Restriction[];
19+
const array = Object.values(limitList);
20+
const item = array?.find(x => isDomainEquals(x.domain, url));
21+
if (item != undefined) {
22+
const date = tab.days.find(x => x.date == todayLocalDate());
23+
if (date != undefined) {
24+
if (date.summary >= item.time) {
25+
log(`Limit Exceeded: website ${url} limit ${item.time} summary time ${date.summary}`);
26+
if (await isInDeferList(url)) {
27+
log(`Page ${url} is in deffering list`);
28+
return {
29+
IsLimitExceeded: false,
30+
LimitTime: null,
31+
};
32+
}
33+
34+
return {
35+
IsLimitExceeded: true,
36+
LimitTime: item.time,
37+
};
38+
}
39+
}
40+
}
41+
42+
return {
43+
IsLimitExceeded: false,
44+
LimitTime: null,
45+
};
46+
}
47+
48+
export async function isDomainInLimits(url: string): Promise<boolean> {
49+
const limitList = (await Settings.getInstance().getSetting(
50+
StorageParams.RESTRICTION_LIST,
51+
)) as Restriction[];
52+
const array = Object.values(limitList);
53+
const item = array?.find(x => isDomainEquals(x.domain, url));
54+
return item != undefined;
55+
}

0 commit comments

Comments
 (0)