TF-3985 Display Increase your space button when premium is available on web desktop

This commit is contained in:
dab246
2025-09-09 13:13:53 +07:00
committed by Dat H. Pham
parent 066557110d
commit 9671822f78
10 changed files with 165 additions and 12 deletions
@@ -0,0 +1,41 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:core/presentation/views/dialog/confirm_dialog_button.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class IncreaseSpaceButtonWidget extends StatelessWidget {
final ImagePaths imagePaths;
final VoidCallback onTapAction;
final EdgeInsetsGeometry? margin;
const IncreaseSpaceButtonWidget({
super.key,
required this.imagePaths,
required this.onTapAction,
this.margin,
});
@override
Widget build(BuildContext context) {
return Container(
constraints: const BoxConstraints(minWidth: 193),
height: 44,
margin: margin,
child: ConfirmDialogButton(
label: AppLocalizations.of(context).increaseYourSpace,
borderColor: AppColor.m3SysLightSecondaryBlue,
icon: imagePaths.icPremium,
iconSize: 22,
iconColor: Colors.transparent,
textStyle: ThemeUtils.textStyleM3BodyMedium.copyWith(
color: AppColor.blue700,
),
radius: 7,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 8),
onTapAction: onTapAction,
),
);
}
}
@@ -5,8 +5,10 @@ import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/base/widget/application_version_widget.dart';
import 'package:tmail_ui_user/features/base/widget/premium/increase_space_button_widget.dart';
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/validate_saas_premium_available_extension.dart';
import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
@@ -35,6 +37,23 @@ class MailboxView extends BaseMailboxView {
: _buildListMailbox(context),
),
const QuotasView(),
Obx(() {
final isPremiumAvailable =
controller.mailboxDashBoardController.isPremiumAvailable;
if (isPremiumAvailable) {
return IncreaseSpaceButtonWidget(
imagePaths: controller.imagePaths,
margin: const EdgeInsetsDirectional.only(
start: 26,
bottom: 8,
),
onTapAction: () {},
);
} else {
return const SizedBox.shrink();
}
}),
Container(
alignment: isDesktop
? AlignmentDirectional.center
@@ -0,0 +1,16 @@
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
bool get isPremiumAvailable {
if (accountId.value == null || sessionCurrent == null) {
return false;
}
final saasAccount = sessionCurrent?.getSaaSAccountCapability(
accountId.value!,
);
return saasAccount?.isPremiumAvailable ?? false;
}
}