Skip to content

Commit a93eed6

Browse files
committed
wip
1 parent 2a0ebdc commit a93eed6

File tree

6 files changed

+74
-21
lines changed

6 files changed

+74
-21
lines changed

src/_locales/en/messages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,10 @@
214214
"review": {
215215
"message": "Leave a review!"
216216
},
217+
"promoClearYoutube": {
218+
"message": "Хотели бы вы блокировать шортсы, комментарии, рекомендованные видео, подписки и другие отвлекающие элементы YouTube? Мы создали еще одно расширение, которое поможет вам смотреть YouTube без отвлекающих факторов.",
219+
"description": "Установить"
220+
},
217221
"block": {
218222
"message": "You've reached your limit for today on "
219223
},

src/_locales/ru/messages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,10 @@
239239
"message": "Вам нравится расширение?",
240240
"description": "Оцените Web Activity Time Tracker"
241241
},
242+
"promoClearYoutube": {
243+
"message": "Хотели бы вы блокировать шортсы, комментарии, рекомендованные видео, подписки и другие отвлекающие элементы YouTube? Мы создали еще одно расширение, которое поможет вам смотреть YouTube без отвлекающих факторов.",
244+
"description": "Установить"
245+
},
242246
"removeAllData": {
243247
"message": "Удалить все данные",
244248
"description": "Вы можете удалить все данные и статистику посещенных сайтов за все время"

src/components/PromoClearYouTube.vue

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,44 @@ export default {
1515
</script>
1616

1717
<script lang="ts" setup>
18-
import { ref } from 'vue';
18+
import { computed, ref } from 'vue';
1919
import { useI18n } from 'vue-i18n';
2020
import { injecStorage } from '../storage/inject-storage';
2121
import { StorageParams } from '../storage/storage-params';
2222
import { CHROME_STORE_CLEAR_YOUTUBE_URL } from '../utils/chrome-url';
2323
import { usePromoExtension } from '../compositions/usePromoExtension';
2424
import { computedAsync } from '@vueuse/core';
25+
import { useExtensionPage } from '../compositions/useExtensionPage';
2526
2627
const { t } = useI18n();
2728
2829
const settingsStorage = injecStorage();
30+
const extensionPage = useExtensionPage();
31+
2932
const showReview = ref<boolean>(true);
3033
3134
const canShowPromo = computedAsync(async () => await usePromoExtension());
35+
const isBlockPage = computed(() => extensionPage.isBlockPage);
3236
3337
async function closeBlock() {
3438
showReview.value = false;
35-
await settingsStorage.saveValue(StorageParams.PROMO_CLEAR_YOUTUBE, true);
39+
await settingsStorage.saveValue(
40+
isBlockPage.value
41+
? StorageParams.PROMO_CLEAR_YOUTUBE_ON_BLOCK
42+
: StorageParams.PROMO_CLEAR_YOUTUBE_ON_LIMITS,
43+
true,
44+
);
3645
}
3746
3847
async function openStore() {
3948
showReview.value = false;
4049
window.open(CHROME_STORE_CLEAR_YOUTUBE_URL, '_blank');
41-
await settingsStorage.saveValue(StorageParams.PROMO_CLEAR_YOUTUBE, true);
50+
await settingsStorage.saveValue(
51+
isBlockPage.value
52+
? StorageParams.PROMO_CLEAR_YOUTUBE_ON_BLOCK
53+
: StorageParams.PROMO_CLEAR_YOUTUBE_ON_LIMITS,
54+
true,
55+
);
4256
}
4357
</script>
4458

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { computed } from 'vue';
2+
3+
export const QUERY_PARAMS_DASHBOARD = 'dashboard.html';
4+
export const QUERY_PARAMS_DASHBOARD_TAB = 'tab';
5+
export const QUERY_PARAMS_DASHBOARD_TAB_SETTINGS = 'settings';
6+
export const QUERY_PARAMS_BLOCK = 'block.html';
7+
export const QUERY_PARAMS_BLOCK_DOMAIN = 'domain';
8+
9+
export function useExtensionPage() {
10+
const urlObj = new URL(location.href);
11+
12+
const isLimitPage = computed(
13+
() =>
14+
urlObj.hostname == __APP_ID__ &&
15+
urlObj.pathname.includes(QUERY_PARAMS_DASHBOARD) &&
16+
urlObj.searchParams.get(QUERY_PARAMS_DASHBOARD_TAB) == QUERY_PARAMS_DASHBOARD_TAB_SETTINGS,
17+
);
18+
19+
const isBlockPage = computed(
20+
() =>
21+
urlObj.hostname == __APP_ID__ &&
22+
urlObj.pathname.includes(QUERY_PARAMS_BLOCK) &&
23+
urlObj.searchParams.get(QUERY_PARAMS_BLOCK_DOMAIN) == 'youtube.com',
24+
);
25+
26+
return {
27+
isLimitPage,
28+
isBlockPage,
29+
};
30+
}

src/compositions/usePromoExtension.ts

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { computed } from 'vue';
22
import { Restriction } from '../entity/restriction';
33
import { injecStorage } from '../storage/inject-storage';
44
import { StorageParams } from '../storage/storage-params';
5+
import { useExtensionPage } from './useExtensionPage';
56

67
export const QUERY_PARAMS_DASHBOARD = 'dashboard.html';
78
export const QUERY_PARAMS_DASHBOARD_TAB = 'tab';
@@ -11,10 +12,14 @@ export const QUERY_PARAMS_BLOCK_DOMAIN = 'domain';
1112

1213
export async function usePromoExtension() {
1314
const settingsStorage = injecStorage();
15+
const extensionPage = useExtensionPage();
1416

15-
const hasReview = await settingsStorage.getValue(StorageParams.PROMO_CLEAR_YOUTUBE);
16-
17-
if (hasReview != undefined && hasReview == true) return false;
17+
const hasReviewOnLimits = await settingsStorage.getValue(
18+
StorageParams.PROMO_CLEAR_YOUTUBE_ON_LIMITS,
19+
);
20+
const hasReviewOnBlock = await settingsStorage.getValue(
21+
StorageParams.PROMO_CLEAR_YOUTUBE_ON_BLOCK,
22+
);
1823

1924
const whitelist = Object.values(
2025
await settingsStorage.getValue(StorageParams.RESTRICTION_LIST, []),
@@ -24,23 +29,17 @@ export async function usePromoExtension() {
2429
() => whitelist.find(x => x.domain == 'youtube.com') != undefined,
2530
);
2631

27-
const urlObj = new URL(location.href);
28-
const isLimitPage = computed(
32+
const showOnLimitPage = computed(
2933
() =>
30-
urlObj.hostname == __APP_ID__ &&
31-
urlObj.pathname.includes(QUERY_PARAMS_DASHBOARD) &&
32-
urlObj.searchParams.get(QUERY_PARAMS_DASHBOARD_TAB) == QUERY_PARAMS_DASHBOARD_TAB_SETTINGS,
34+
(hasReviewOnLimits == undefined || hasReviewOnLimits == false) &&
35+
extensionPage.isLimitPage.value &&
36+
isIncludeYoutube.value,
3337
);
34-
35-
const isBlockPage = computed(
38+
const showOnBlockPage = computed(
3639
() =>
37-
urlObj.hostname == __APP_ID__ &&
38-
urlObj.pathname.includes(QUERY_PARAMS_BLOCK) &&
39-
urlObj.searchParams.get(QUERY_PARAMS_BLOCK_DOMAIN) == 'youtube.com',
40+
(hasReviewOnBlock == undefined || hasReviewOnBlock == false) &&
41+
extensionPage.isBlockPage.value,
4042
);
4143

42-
const showOnLimitPage = computed(() => isLimitPage.value && isIncludeYoutube.value);
43-
const showOnBlockPage = computed(() => isBlockPage.value);
44-
4544
return showOnLimitPage || showOnBlockPage;
4645
}

src/storage/storage-params.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ export enum StorageParams {
1818
REVIEW_DATE = 'review_date',
1919
REVIEW_PROMPT_AT = 'review_prompt_at',
2020
INSTALL_DATE = 'install-date',
21-
PROMO_CLEAR_YOUTUBE = 'promo-clear-youtube',
21+
PROMO_CLEAR_YOUTUBE_ON_LIMITS = 'promo-clear-youtube-on-limits',
22+
PROMO_CLEAR_YOUTUBE_ON_BLOCK = 'promo-clear-youtube-on-block',
2223
}
2324

2425
export enum StorageDeserializeParam {
@@ -89,7 +90,8 @@ export function getDefaultValue(param: StorageParams) {
8990
return DAILY_NOTIFICATION_DEFAULT;
9091
case StorageParams.SHOW_CHANGELOG:
9192
return SHOW_CHANGELOG_DEFAULT;
92-
case StorageParams.PROMO_CLEAR_YOUTUBE:
93+
case StorageParams.PROMO_CLEAR_YOUTUBE_ON_BLOCK:
94+
case StorageParams.PROMO_CLEAR_YOUTUBE_ON_LIMITS:
9395
return SHOW_PROMO_CLEAR_YOUTUBE_DEFAULT;
9496
}
9597
}

0 commit comments

Comments
 (0)