Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions packages/extension/src/libs/rate-state/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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;

Expand All @@ -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;
}

Expand All @@ -95,11 +95,15 @@ export default class RateState {
}

async setRated(): Promise<void> {
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);
}
}