diff --git a/packages/extension/src/libs/rate-state/index.ts b/packages/extension/src/libs/rate-state/index.ts index 62b498389..1ee21e893 100644 --- a/packages/extension/src/libs/rate-state/index.ts +++ b/packages/extension/src/libs/rate-state/index.ts @@ -24,7 +24,7 @@ export default class RateState { StorageKeys.rateInfo, ); const now = Date.now(); - const popupTime = Date.now() + POPUP_TIME; + const popupTime = now + POPUP_TIME; /** * Case 1: if the user has already been asked after activity @@ -33,22 +33,24 @@ export default class RateState { * Case 2: if the user has not rated (this means that the user got asked after activity) * - askedAfterActivity is already true * - set popupTime to now + 30 days + * - set true if user rates it, if feedback, reset the timer * Case 3: if the user has already rated * - always return false * Case 4: if no state exists * - create a new state with askedAfterActivity = false * - set popupTime to now + 30 days - * - return immediate + * - return immediate (should be false at this point) */ if (state) { if (!state.askedAfterActivity) { state.askedAfterActivity = true; + state.popupTime = popupTime; await this.storage.set(StorageKeys.rateInfo, state); return true; } - if (!state.alreadyRated) { + else if (!state.alreadyRated) { if (state.popupTime < now) { state.popupTime = popupTime; @@ -58,17 +60,15 @@ export default class RateState { } else { return false; } - - if (immediate) return false } const newState: IState = { popupTime, alreadyRated: false, - askedAfterActivity: immediate, + askedAfterActivity: false, }; - this.storage.set(StorageKeys.rateInfo, newState); + await this.storage.set(StorageKeys.rateInfo, newState); return immediate; } @@ -95,11 +95,15 @@ export default class RateState { } async setRated(): Promise { - const state: IState = { + const state: IState | undefined = await this.storage.get( + StorageKeys.rateInfo, + ); + const newState: IState = { alreadyRated: true, popupTime: 0, + askedAfterActivity: state?.askedAfterActivity || true, }; - await this.storage.set(StorageKeys.rateInfo, state); + await this.storage.set(StorageKeys.rateInfo, newState); } }