diff --git a/lib/iap.dart b/lib/iap.dart index bcc8b486..716834be 100644 --- a/lib/iap.dart +++ b/lib/iap.dart @@ -6,10 +6,18 @@ import 'package:gitjournal/.env.dart'; class InAppPurchases { static void confirmProPurchase() async { - // FIXME: Only check this if pro mode is expired + var currentDt = DateTime.now().toUtc().toIso8601String(); + var exp = Settings.instance.proExpirationDate; + if (exp.isNotEmpty && exp.compareTo(currentDt) > 0) { + print("Not checking PurchaseInfo as exp = $exp and cur = $currentDt"); + return; + } - //Purchases.setDebugLogsEnabled(true); - await Purchases.setup(environment['revenueCat']); + Purchases.setDebugLogsEnabled(false); + await Purchases.setup( + environment['revenueCat'], + appUserId: Settings.instance.pseudoId, + ); PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo(); print("Got PurchaserInfo $purchaserInfo"); @@ -20,6 +28,9 @@ class InAppPurchases { Log.i("Pro mode changed to $isPro"); Settings.instance.proMode = isPro; Settings.instance.save(); + } else { + Settings.instance.proExpirationDate = purchaserInfo.latestExpirationDate; + Settings.instance.save(); } } } diff --git a/lib/screens/purchase_screen.dart b/lib/screens/purchase_screen.dart index ddfd79e0..1014bdc8 100644 --- a/lib/screens/purchase_screen.dart +++ b/lib/screens/purchase_screen.dart @@ -201,6 +201,8 @@ class PurchaseButton extends StatelessWidget { var isPro = purchaserInfo.entitlements.all["pro"].isActive; if (isPro) { Settings.instance.proMode = true; + Settings.instance.proExpirationDate = + purchaserInfo.latestExpirationDate; Settings.instance.save(); getAnalytics().logEvent( diff --git a/lib/settings.dart b/lib/settings.dart index 309dad42..69718fa9 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -35,6 +35,7 @@ class Settings { int version = 0; bool proMode = false; + String proExpirationDate = ""; String _pseudoId; String get pseudoId => _pseudoId; @@ -76,6 +77,8 @@ class Settings { version = pref.getInt("settingsVersion") ?? version; proMode = pref.getBool("proMode") ?? proMode; + proExpirationDate = + pref.getString("proExpirationDate") ?? proExpirationDate; _pseudoId = pref.getString("pseudoId"); if (_pseudoId == null) { @@ -103,6 +106,7 @@ class Settings { "markdownDefaultView", markdownDefaultView.toInternalString()); pref.setBool("showNoteSummary", showNoteSummary); pref.setString("folderViewHeaderType", folderViewHeaderType); + pref.setString("proExpirationDate", proExpirationDate); pref.setInt("settingsVersion", version); pref.setBool("proMode", proMode);