CW-33 Add app review after successful transactions and exchange (#864)
* Add app reveiw on transactions and exchange * Update Onramper page * Fix issues in popup review
Godwin Asuquo committed
Apr 17, 2023 at 21:06 UTC
a472527c6f19f2a3a96956e4dc0a5ca1c7bd7022
6 files changed
+44
-6
lib/entities/preferences_key.dart
+2
@@ -31,6 +31,8 @@ class PreferencesKey {
31
static const pinTimeOutDuration = 'pin_timeout_duration';
32
static const lastAuthTimeMilliseconds = 'last_auth_time_milliseconds';
33
static const lastPopupDate = 'last_popup_date';
34
+ static const lastAppReviewDate = 'last_app_review_date';
35
+
36
37
38
static String moneroWalletUpdateV1Key(String name)
lib/src/screens/exchange_trade/exchange_trade_page.dart
+5
-2
@@ -1,4 +1,5 @@
1
import 'dart:ui';
2
+import 'package:cake_wallet/utils/request_review_handler.dart';
3
import 'package:mobx/mobx.dart';
4
import 'package:flutter_mobx/flutter_mobx.dart';
5
import 'package:flutter/material.dart';
@@ -351,8 +352,10 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
352
right: 24,
353
bottom: 24,
354
child: PrimaryButton(
354
- onPressed: () =>
355
- Navigator.of(popupContext).pop(),
355
+ onPressed: () {
356
+ Navigator.of(popupContext).pop();
357
+ RequestReviewHandler.requestReview();
358
+ },
359
text: S.of(popupContext).send_got_it,
360
color: Theme.of(popupContext)
361
.accentTextTheme!
lib/src/screens/send/send_page.dart
+6
-3
@@ -6,6 +6,7 @@ import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
6
import 'package:cake_wallet/src/widgets/picker.dart';
7
import 'package:cake_wallet/src/widgets/template_tile.dart';
8
import 'package:cake_wallet/utils/payment_request.dart';
9
+import 'package:cake_wallet/utils/request_review_handler.dart';
10
import 'package:cake_wallet/utils/responsive_layout_util.dart';
11
import 'package:cake_wallet/view_model/send/output.dart';
12
import 'package:flutter/material.dart';
@@ -383,9 +384,11 @@ class SendPage extends BasePage {
384
alertContent: S.of(context).send_success(
385
sendViewModel.selectedCryptoCurrency.toString()),
386
buttonText: S.of(context).ok,
386
- buttonAction: () =>
387
- Navigator.of(context).pop());
388
- }
387
+ buttonAction: () {
388
+ Navigator.of(context).pop();
389
+ RequestReviewHandler.requestReview();
390
+ });
391
+ }
392
393
return Offstage();
394
});
lib/utils/request_review_handler.dart
new
+29
@@ -0,0 +1,29 @@
1
+import 'package:cake_wallet/entities/preferences_key.dart';
2
+import 'package:shared_preferences/shared_preferences.dart';
3
+import 'package:in_app_review/in_app_review.dart';
4
+
5
+class RequestReviewHandler {
6
+ static const _coolDownDurationInDays = 30;
7
+
8
+ static void requestReview() async {
9
+ final sharedPrefs = await SharedPreferences.getInstance();
10
+
11
+ final lastReviewRequestDate =
12
+ DateTime.tryParse(sharedPrefs.getString(PreferencesKey.lastAppReviewDate) ?? '') ??
13
+ DateTime.now().subtract(Duration(days: _coolDownDurationInDays + 1));
14
+
15
+ final durationSinceLastRequest = DateTime.now().difference(lastReviewRequestDate).inDays;
16
+
17
+ if (durationSinceLastRequest < _coolDownDurationInDays) {
18
+ return;
19
+ }
20
+
21
+ sharedPrefs.setString(PreferencesKey.lastAppReviewDate, DateTime.now().toString());
22
+
23
+ final InAppReview inAppReview = InAppReview.instance;
24
+
25
+ if (await inAppReview.isAvailable()) {
26
+ inAppReview.requestReview();
27
+ }
28
+ }
29
+}
lib/view_model/dashboard/dashboard_view_model.dart
+1
-1
@@ -146,7 +146,7 @@ abstract class DashboardViewModelBase with Store {
146
}
147
148
reaction((_) => appStore.wallet, _onWalletChange);
149
-
149
+
150
connectMapToListWithTransform(
151
appStore.wallet!.transactionHistory.transactions,
152
transactions,
pubspec_base.yaml
+1
@@ -67,6 +67,7 @@ dependencies:
67
wakelock: ^0.6.2
68
flutter_mailer: ^2.0.2
69
device_info_plus: 8.1.0
70
+ in_app_review: ^2.0.6
71
cake_backup:
72
git:
73
url: https://github.com/cake-tech/cake_backup.git