22 <div class =" review-block" v-if =" showReview" >
33 <p >{{ t('enjoyAndReview.message') }}</p >
44 <img height =" 15" src =" ../assets/icons/close.svg" @click =" closeBlock()" />
5- <input type =" button" :value =" t('enjoyAndReview.description')" />
5+ <input type =" button" :value =" t('enjoyAndReview.description')" @click = " openStore() " />
66 </div >
77</template >
88
@@ -15,17 +15,52 @@ export default {
1515<script lang="ts" setup>
1616import { onMounted , ref } from ' vue' ;
1717import { useI18n } from ' vue-i18n' ;
18+ import { injecStorage } from ' ../storage/inject-storage' ;
19+ import { StorageParams } from ' ../storage/storage-params' ;
20+ import { addDays , startOfToday } from ' date-fns' ;
21+ import { addHours } from ' date-fns/esm' ;
1822
1923const { t } = useI18n ();
2024
25+ const settingsStorage = injecStorage ();
26+ const PROMPT_AT_TIME_OF_DAY = 12 ;
27+ const ADD_DAYS_FIRST = 2 ;
28+ const ADD_DAYS_NEXT = 5 ;
29+ const CHROME_STORE_URL = ` https://chrome.google.com/webstore/detail/web-activity-time-tracker/${__APP_ID__ }/reviews ` ;
30+
2131const showReview = ref <boolean >();
2232
23- onMounted (() => {
24- showReview .value = true ;
33+ onMounted (async () => {
34+ showReview .value = false ;
35+ if (__BROWSER__ == ' chrome' ) {
36+ const reviewDate = await settingsStorage .getValue (StorageParams .REVIEW_DATE );
37+
38+ if (reviewDate == undefined ) {
39+ let nextTime = await settingsStorage .getValue (StorageParams .REVIEW_PROMPT_AT );
40+ if (nextTime == undefined ) {
41+ await settingsStorage .saveValue (
42+ StorageParams .REVIEW_PROMPT_AT ,
43+ addDays (addHours (startOfToday (), PROMPT_AT_TIME_OF_DAY ), ADD_DAYS_FIRST ).toString (),
44+ );
45+ } else {
46+ nextTime = new Date (nextTime );
47+ if (nextTime < new Date ()) showReview .value = true ;
48+ }
49+ }
50+ }
2551});
2652
27- function closeBlock() {
53+ async function closeBlock() {
2854 showReview .value = false ;
55+ await settingsStorage .saveValue (
56+ StorageParams .REVIEW_PROMPT_AT ,
57+ addDays (addHours (startOfToday (), PROMPT_AT_TIME_OF_DAY ), ADD_DAYS_NEXT ).toString (),
58+ );
59+ }
60+
61+ async function openStore() {
62+ window .open (CHROME_STORE_URL , ' _blank' );
63+ await settingsStorage .saveValue (StorageParams .REVIEW_DATE , new Date ().toString ());
2964}
3065 </script >
3166
0 commit comments