Skip to content

Commit a5944e2

Browse files
committed
Promo
1 parent eb0993a commit a5944e2

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

src/assets/trackerjam-promo.jpg

57.2 KB
Loading

src/components/PromoTrackerJam.vue

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<template>
2+
<div class="modal" v-if="!showPromo">
3+
<div class="modal-content">
4+
<p class="title">{{ t('trackerJamPromo.message') }}</p>
5+
<div class="img-block">
6+
<img src="../assets/trackerjam-promo.jpg" />
7+
</div>
8+
<p class="text">{{ t('trackerJamPromo_description.message') }}</p>
9+
10+
<p class="text">
11+
{{ t('trackerJamPromo_description2.message') }}
12+
</p>
13+
<p class="text features">{{ t('trackerJamPromo_features.message') }}</p>
14+
<ul>
15+
<li>✅ {{ t('trackerJamPromo_features1.message') }}</li>
16+
<li>✅ {{ t('trackerJamPromo_features2.message') }}</li>
17+
<li>✅ {{ t('trackerJamPromo_features3.message') }}</li>
18+
<li>✅ {{ t('trackerJamPromo_features4.message') }}</li>
19+
</ul>
20+
<div class="text-center">
21+
<input type="button" :value="t('try.message')" @click="openUrl()" />
22+
<input type="button" class="info ml-10" :value="t('close.message')" @click="close()" />
23+
</div>
24+
</div>
25+
</div>
26+
</template>
27+
28+
<script lang="ts" setup>
29+
import { useI18n } from 'vue-i18n';
30+
import { onMounted, ref } from 'vue';
31+
import { injectStorage } from '../storage/inject-storage';
32+
import { StorageParams } from '../storage/storage-params';
33+
import { addDays, startOfToday } from 'date-fns';
34+
import { addHours } from 'date-fns/esm';
35+
36+
const { t } = useI18n();
37+
const settingsStorage = injectStorage();
38+
39+
const showPromo = ref<boolean>();
40+
41+
const PROMPT_AT_TIME_OF_DAY = 12;
42+
const ADD_DAYS_INITIAL = 2;
43+
const ADD_DAYS_COUNT = 5;
44+
45+
onMounted(async () => {
46+
const promoDate = await settingsStorage.getValue(StorageParams.PROMO_TRACKERJAM_DATE);
47+
48+
if (promoDate == undefined) {
49+
let nextTime = await settingsStorage.getValue(StorageParams.PROMO_TRACKERJAM_PROMPT_AT);
50+
if (nextTime == undefined) {
51+
await settingsStorage.saveValue(
52+
StorageParams.PROMO_TRACKERJAM_PROMPT_AT,
53+
addDays(addHours(startOfToday(), PROMPT_AT_TIME_OF_DAY), ADD_DAYS_INITIAL).toString(),
54+
);
55+
} else {
56+
nextTime = new Date(nextTime);
57+
if (nextTime < new Date()) showPromo.value = true;
58+
}
59+
}
60+
});
61+
62+
async function close() {
63+
showPromo.value = false;
64+
await settingsStorage.saveValue(
65+
StorageParams.PROMO_TRACKERJAM_PROMPT_AT,
66+
addDays(addHours(startOfToday(), PROMPT_AT_TIME_OF_DAY), ADD_DAYS_COUNT).toString(),
67+
);
68+
}
69+
70+
async function openUrl() {
71+
window.open('https://trackerjam.com?utm_source=watt_extension_prom', '_blank');
72+
await settingsStorage.saveValue(StorageParams.PROMO_TRACKERJAM_DATE, new Date().toString());
73+
}
74+
</script>
75+
76+
<style scoped>
77+
.title {
78+
font-size: 22px;
79+
font-weight: 500;
80+
text-align: center;
81+
margin: 0;
82+
}
83+
ul,
84+
.text {
85+
margin-top: 10px;
86+
font-size: 14px;
87+
}
88+
.text .features {
89+
font-weight: 600;
90+
}
91+
.img-block {
92+
text-align: center;
93+
}
94+
img {
95+
max-width: 100%;
96+
height: auto;
97+
}
98+
</style>

src/pages/Dashboard.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,16 @@
152152
</div>
153153
</div>
154154
</div>
155+
156+
<PromoTrackerJam />
155157
</div>
156158
</template>
157159

158160
<script lang="ts" setup>
159161
import { onMounted, ref, watch } from 'vue';
160162
import { useI18n } from 'vue-i18n';
161163
import GeneralSettings from '../components/GeneralSettings.vue';
164+
import PromoTrackerJam from '../components/PromoTrackerJam.vue';
162165
import WhiteList from '../components/WhiteList.vue';
163166
import Limits from '../components/Limits.vue';
164167
import DailyNotifications from '../components/Notifications.vue';

src/storage/storage-params.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ export enum StorageParams {
2929
POMODORO_AUDIO_AFTER_FINISHED = 'pomodoro-audio-after-finished',
3030
POMODORO_INTERVAL_REST = 'pomodoro-interval-rest',
3131
POMODORO_FREQUENCY = 'pomodoro-frequency',
32+
PROMO_TRACKERJAM_DATE = 'promo-trackerjam-date',
33+
PROMO_TRACKERJAM_PROMPT_AT = 'promo-trackerjam-prompt-at',
3234
}
3335

3436
export enum StorageDeserializeParam {

0 commit comments

Comments
 (0)