From 8e1423709de222f4c32818d773e19acf72b89e30 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 9 Jul 2024 11:47:53 -0400 Subject: [PATCH] warn subscribed users to delete their subscription before deleting their accounts --- assets/l10n/intl_en.arb | 6 +++- .../settings_security/settings_security.dart | 30 ++++++++++++++++--- lib/pangea/models/base_subscription_info.dart | 15 ++++++++++ 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 09fa273e0..7d853de70 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4105,5 +4105,9 @@ "placeholders": {} }, "changeAnalyticsView": "Change Analytics View", - "l1TranslationBody": "Oops! It looks like this message wasn't sent in your target language. Messages not sent in your target language will not be translated." + "l1TranslationBody": "Oops! It looks like this message wasn't sent in your target language. Messages not sent in your target language will not be translated.", + "continueText": "Continue", + "deleteSubscriptionWarningTitle": "You have an active subscription", + "deleteSubscriptionWarningBody": "Deleting your account will not automatically cancel your subscription.", + "manageSubscription": "Manage Subscription" } \ No newline at end of file diff --git a/lib/pages/settings_security/settings_security.dart b/lib/pages/settings_security/settings_security.dart index 69069d693..859e33e89 100644 --- a/lib/pages/settings_security/settings_security.dart +++ b/lib/pages/settings_security/settings_security.dart @@ -1,12 +1,12 @@ -import 'package:flutter/material.dart'; - import 'package:adaptive_dialog/adaptive_dialog.dart'; +import 'package:fluffychat/widgets/app_lock.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher_string.dart'; -import 'package:fluffychat/widgets/app_lock.dart'; -import 'package:fluffychat/widgets/matrix.dart'; import '../bootstrap/bootstrap_dialog.dart'; import 'settings_security_view.dart'; @@ -51,6 +51,28 @@ class SettingsSecurityController extends State { } void deleteAccountAction() async { + // #Pangea + final subscriptionController = + MatrixState.pangeaController.subscriptionController; + if (subscriptionController.subscription?.isPaidSubscription == true && + subscriptionController.subscription?.defaultManagementURL != null) { + final resp = await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context)!.deleteSubscriptionWarningTitle, + message: L10n.of(context)!.deleteSubscriptionWarningBody, + okLabel: L10n.of(context)!.manageSubscription, + cancelLabel: L10n.of(context)!.continueText, + ); + if (resp == OkCancelResult.ok) { + launchUrlString( + subscriptionController.subscription!.defaultManagementURL!, + mode: LaunchMode.externalApplication, + ); + return; + } + } + // Pangea# if (await showOkCancelAlertDialog( useRootNavigator: false, context: context, diff --git a/lib/pangea/models/base_subscription_info.dart b/lib/pangea/models/base_subscription_info.dart index 399ba042c..469ac5786 100644 --- a/lib/pangea/models/base_subscription_info.dart +++ b/lib/pangea/models/base_subscription_info.dart @@ -1,4 +1,5 @@ import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/pangea/config/environment.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/controllers/subscription_controller.dart'; import 'package:fluffychat/pangea/repo/subscription_repo.dart'; @@ -51,6 +52,11 @@ class SubscriptionInfo { bool get currentSubscriptionIsPromotional => currentSubscriptionId?.startsWith("rc_promo") ?? false; + bool get isPaidSubscription => + (currentSubscription != null || currentSubscriptionId != null) && + !isNewUserTrial && + !currentSubscriptionIsPromotional; + bool get isLifetimeSubscription => currentSubscriptionIsPromotional && expirationDate != null && @@ -86,4 +92,13 @@ class SubscriptionInfo { } Future setCustomerInfo() async {} + + String? get defaultManagementURL { + final String? purchaseAppId = currentSubscription?.appId; + return purchaseAppId == appIds?.androidId + ? AppConfig.googlePlayMangementUrl + : purchaseAppId == appIds?.appleId + ? AppConfig.appleMangementUrl + : Environment.stripeManagementUrl; + } }