@@ -24,7 +24,7 @@ export default class RateState {
2424 StorageKeys . rateInfo ,
2525 ) ;
2626 const now = Date . now ( ) ;
27- const popupTime = Date . now ( ) + POPUP_TIME ;
27+ const popupTime = now + POPUP_TIME ;
2828
2929 /**
3030 * Case 1: if the user has already been asked after activity
@@ -33,22 +33,24 @@ export default class RateState {
3333 * Case 2: if the user has not rated (this means that the user got asked after activity)
3434 * - askedAfterActivity is already true
3535 * - set popupTime to now + 30 days
36+ * - set true if user rates it, if feedback, reset the timer
3637 * Case 3: if the user has already rated
3738 * - always return false
3839 * Case 4: if no state exists
3940 * - create a new state with askedAfterActivity = false
4041 * - set popupTime to now + 30 days
41- * - return immediate
42+ * - return immediate (should be false at this point)
4243 */
4344
4445 if ( state ) {
4546 if ( ! state . askedAfterActivity ) {
4647 state . askedAfterActivity = true ;
48+ state . popupTime = popupTime ;
4749
4850 await this . storage . set ( StorageKeys . rateInfo , state ) ;
4951 return true ;
5052 }
51- if ( ! state . alreadyRated ) {
53+ else if ( ! state . alreadyRated ) {
5254 if ( state . popupTime < now ) {
5355 state . popupTime = popupTime ;
5456
@@ -58,17 +60,15 @@ export default class RateState {
5860 } else {
5961 return false ;
6062 }
61-
62- if ( immediate ) return false
6363 }
6464
6565 const newState : IState = {
6666 popupTime,
6767 alreadyRated : false ,
68- askedAfterActivity : immediate ,
68+ askedAfterActivity : false ,
6969 } ;
7070
71- this . storage . set ( StorageKeys . rateInfo , newState ) ;
71+ await this . storage . set ( StorageKeys . rateInfo , newState ) ;
7272 return immediate ;
7373 }
7474
@@ -95,11 +95,15 @@ export default class RateState {
9595 }
9696
9797 async setRated ( ) : Promise < void > {
98- const state : IState = {
98+ const state : IState | undefined = await this . storage . get (
99+ StorageKeys . rateInfo ,
100+ ) ;
101+ const newState : IState = {
99102 alreadyRated : true ,
100103 popupTime : 0 ,
104+ askedAfterActivity : state ?. askedAfterActivity || true ,
101105 } ;
102106
103- await this . storage . set ( StorageKeys . rateInfo , state ) ;
107+ await this . storage . set ( StorageKeys . rateInfo , newState ) ;
104108 }
105109}
0 commit comments