TF-4045 Only show upgrade storage when premium is available and quota is available
This commit is contained in:
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/identities/id
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/presentation/paywall_bindings.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
|
||||
|
||||
class ManageAccountDashBoardBindings extends BaseBindings {
|
||||
@@ -41,7 +42,9 @@ class ManageAccountDashBoardBindings extends BaseBindings {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {}
|
||||
void bindingsInteractor() {
|
||||
PaywallBindings().dependencies();
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
|
||||
@@ -40,6 +40,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/notification/
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/preferences/bindings/preferences_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/storage/storage_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/presentation/paywall_controller.dart';
|
||||
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
@@ -53,6 +54,7 @@ class ManageAccountDashBoardController extends ReloadableController
|
||||
|
||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||
UpdateVacationInteractor? _updateVacationInteractor;
|
||||
PaywallController? paywallController;
|
||||
|
||||
final accountId = Rxn<AccountId>();
|
||||
final accountMenuItemSelected = AccountMenuItem.profiles.obs;
|
||||
@@ -130,6 +132,10 @@ class ManageAccountDashBoardController extends ReloadableController
|
||||
_setUpMinInputLengthAutocomplete();
|
||||
_bindingInteractorForMenuItemView(sessionCurrent, accountId.value);
|
||||
_getVacationResponse();
|
||||
paywallController = PaywallController(
|
||||
ownEmailAddress: ownEmailAddress.value,
|
||||
);
|
||||
paywallController?.loadPaywallUrl();
|
||||
}
|
||||
|
||||
void _getParametersRouter() {
|
||||
@@ -424,6 +430,8 @@ class ManageAccountDashBoardController extends ReloadableController
|
||||
if (LogTracking().isEnabled) {
|
||||
disposeTraceLogDependencies();
|
||||
}
|
||||
paywallController?.onClose();
|
||||
paywallController = null;
|
||||
super.onClose();
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,19 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/quotas/quota.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/presentation/saas_premium_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/domain/extensions/list_quotas_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/domain/state/get_quotas_state.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/domain/use_case/get_quotas_interactor.dart';
|
||||
|
||||
class StorageController extends BaseController {
|
||||
class StorageController extends BaseController with SaaSPremiumMixin {
|
||||
final dashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
|
||||
final GetQuotasInteractor _getQuotasInteractor;
|
||||
@@ -23,7 +25,7 @@ class StorageController extends BaseController {
|
||||
@override
|
||||
void onReady() {
|
||||
final accountId = dashBoardController.accountId.value;
|
||||
if(accountId != null) {
|
||||
if (accountId != null) {
|
||||
_getQuotasAction(accountId);
|
||||
} else {
|
||||
consumeState(
|
||||
@@ -43,8 +45,18 @@ class StorageController extends BaseController {
|
||||
octetsQuota.value = success.quotas.octetsQuota;
|
||||
}
|
||||
|
||||
void onUpgradeStorage() {
|
||||
bool validatePremiumIsAvailable() {
|
||||
final accountId = dashBoardController.accountId.value;
|
||||
final session = dashBoardController.sessionCurrent;
|
||||
|
||||
if (accountId == null || session == null) {
|
||||
return false;
|
||||
}
|
||||
return isPremiumAvailable(accountId: accountId, session: session);
|
||||
}
|
||||
|
||||
void onUpgradeStorage(BuildContext context) {
|
||||
dashBoardController.paywallController?.navigateToPaywall(context);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/base/setting_detail_view_builder.dart';
|
||||
@@ -77,11 +78,19 @@ class StorageView extends GetWidget<StorageController> {
|
||||
quota: octetsQuota,
|
||||
isMobile: isMobile,
|
||||
),
|
||||
UpgradeStorageWidget(
|
||||
imagePaths: controller.imagePaths,
|
||||
isMobile: isMobile,
|
||||
onUpgradeStorageAction: controller.onUpgradeStorage,
|
||||
)
|
||||
Obx(() {
|
||||
if (controller.validatePremiumIsAvailable() &&
|
||||
PlatformInfo.isWeb) {
|
||||
return UpgradeStorageWidget(
|
||||
imagePaths: controller.imagePaths,
|
||||
isMobile: isMobile,
|
||||
onUpgradeStorageAction: () =>
|
||||
controller.onUpgradeStorage(context),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
})
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user