TF-4045 Only show upgrade storage when premium is available and quota is available

This commit is contained in:
dab246
2025-10-01 17:55:22 +07:00
committed by Dat H. Pham
parent 2cc727c209
commit dcb19992c6
16 changed files with 184 additions and 97 deletions
@@ -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();
}
})
],
),
),