Skip to content

Commit dc69854

Browse files
committed
Add description for block and pass domain favicon on blocked page
1 parent 1f3e96a commit dc69854

File tree

7 files changed

+44
-4
lines changed

7 files changed

+44
-4
lines changed

src/_locales/de/messages.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@
132132
"message": "Zeitindikator anzeigen",
133133
"description": "Sie können die aktuellen Informationen zur verbrauchten Zeit im Kurzformat auf dem Erweiterungssymbol anzeigen"
134134
},
135+
"deferringDescription": {
136+
"message": "Sie können die Sperre nur einmal während des Tages um 5 Minuten verschieben"
137+
},
135138
"allowDeferringBlock": {
136139
"message": "Verzögerung der Sperre um 5 Minuten zulassen",
137140
"description": "Nachdem die Site gesperrt wurde, können Sie die Sperrung einmal täglich um 5 Minuten verschieben"

src/_locales/en/messages.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@
132132
"message": "Display time tracker in icon",
133133
"description": "You are able to see current 'spent time' information in short format on the extension icon"
134134
},
135+
"deferringDescription": {
136+
"message": "You can postpone the blocking for 5 minutes only once during the day"
137+
},
135138
"allowDeferringBlock": {
136139
"message": "Allow deferring block for 5 minutes",
137140
"description": "After the site is blocked, you can postpone the blocking for 5 minutes once during the day"

src/_locales/ru/messages.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@
132132
"message": "Показывать индикатор времени",
133133
"description": "Вы можете увидеть текущее затраченное время в сокращенном формате на значке расширения"
134134
},
135+
"deferringDescription": {
136+
"message": "Вы можете отложить блокировку на 5 минут только один раз в течение дня"
137+
},
135138
"allowDeferringBlock": {
136139
"message": "Разрешить отсрочку блокировки на 5 минут",
137140
"description": "После того, как сайт будет заблокирован, вы можете один раз в течение дня отложить блокировку на 5 минут"

src/compositions/block-page.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
import Browser from 'webextension-polyfill';
22
import { buildBlockQuery } from '../utils/block-page';
3+
import { NO_FAVICON_URL } from '../utils/consts';
34

45
export async function useBlockPage(
56
domain: string,
67
url: string,
78
liimitTime: number,
89
summaryCounter: number,
10+
favIconUrl: string | undefined,
911
): Promise<void> {
12+
const favicon =
13+
favIconUrl == undefined || favIconUrl == '' || favIconUrl.startsWith('chrome://favicon/')
14+
? NO_FAVICON_URL
15+
: favIconUrl;
1016
const blockUrl =
1117
Browser.runtime.getURL('src/block.html') +
12-
buildBlockQuery(domain, url, liimitTime, summaryCounter);
18+
buildBlockQuery(domain, url, liimitTime, summaryCounter, favicon);
1319
const tab = await Browser.tabs.query({ currentWindow: true, active: true });
1420
Browser.tabs.update(tab[0].id, { url: blockUrl });
1521
}

src/pages/Block.vue

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55
<p class="d-inline-block header">Web Activity Time Tracker</p>
66
</div>
77
<p>
8-
{{ t('block.message') }}<span>{{ webSite }}</span>
8+
{{ t('block.message') }}
99
</p>
10+
<div>
11+
<img class="favicon" height="35" :src="favicon" />
12+
<span>{{ webSite }}</span>
13+
</div>
1014
<table>
1115
<tr>
1216
<td class="title">{{ t('limit.message') }}:</td>
@@ -24,6 +28,7 @@
2428
:value="t('5mins.message')"
2529
@click="deferring()"
2630
/>
31+
<p class="desctiption">{{ t('deferringDescription.message') }}</p>
2732
</div>
2833
</template>
2934

@@ -43,6 +48,7 @@ const settingsStorage = injecStorage();
4348
const webSite = ref<string>();
4449
const sourceUrl = ref<string>();
4550
const limitTime = ref<number>();
51+
const favicon = ref<string>();
4652
const limitTimeString = ref<string>();
4753
const summaryCounter = ref<number>();
4854
const allowDeferringBlock = ref<boolean>();
@@ -53,6 +59,7 @@ onMounted(async () => {
5359
webSite.value = queryObj.domain ?? '';
5460
sourceUrl.value = queryObj.url ?? '';
5561
limitTime.value = queryObj.limitTime;
62+
favicon.value = queryObj.favicon ?? '';
5663
limitTimeString.value = convertLimitTimeToString(queryObj.limitTime);
5764
summaryCounter.value = queryObj.summaryCounter ?? 0;
5865
@@ -101,6 +108,7 @@ body {
101108
.block-container span {
102109
font-weight: 600;
103110
font-size: 21px;
111+
vertical-align: top;
104112
}
105113
106114
.header {
@@ -130,4 +138,11 @@ table .title {
130138
table .value {
131139
font-weight: 600;
132140
}
141+
.desctiption {
142+
font-size: 13px !important;
143+
color: #4a4a4a;
144+
}
145+
.favicon {
146+
margin: 0 10px;
147+
}
133148
</style>

src/tracker.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,13 @@ async function mainTracker(
9191
const limitExceeded = await isLimitExceeded(activeDomain, tab);
9292
if (limitExceeded.IsLimitExceeded) {
9393
const summaryCounter = tab.days.at(-1)!.counter;
94-
await useBlockPage(activeDomain, activeTab.url!, limitExceeded.LimitTime!, summaryCounter);
94+
await useBlockPage(
95+
activeDomain,
96+
activeTab.url!,
97+
limitExceeded.LimitTime!,
98+
summaryCounter,
99+
activeTab.favIconUrl,
100+
);
95101
return;
96102
}
97103

src/utils/block-page.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@ export enum BlockParams {
33
URL = 'url',
44
LimitTime = 'summaryTime',
55
SummaryCounter = 'summaryCounter',
6+
Favicon = 'favicon',
67
}
78

89
export function buildBlockQuery(
910
domain: string,
1011
url: string,
1112
liimitTime: number,
1213
summaryCounter: number,
14+
favicon: string,
1315
) {
14-
return `?domain=${domain}&url=${url}&summaryTime=${liimitTime}&summaryCounter=${summaryCounter}`;
16+
return `?domain=${domain}&url=${url}&summaryTime=${liimitTime}&summaryCounter=${summaryCounter}&favicon=${favicon}`;
1517
}
1618

1719
export function getValueFromQuery(url: string) {
1820
const urlObj = new URL(url);
1921
const domain = urlObj.searchParams.get(BlockParams.Domain);
2022
const sourceUrl = urlObj.searchParams.get(BlockParams.URL);
23+
const favicon = urlObj.searchParams.get(BlockParams.Favicon);
2124
const limitTime = Number(urlObj.searchParams.get(BlockParams.LimitTime));
2225
const summaryCounter = Number(urlObj.searchParams.get(BlockParams.SummaryCounter));
2326

@@ -26,5 +29,6 @@ export function getValueFromQuery(url: string) {
2629
url: sourceUrl,
2730
limitTime: limitTime,
2831
summaryCounter: summaryCounter,
32+
favicon: favicon,
2933
};
3034
}

0 commit comments

Comments
 (0)