Show UpgradeStorageWidget only when premium is available or quota exceeds 90%

This commit is contained in:
dab246
2025-11-21 09:36:20 +07:00
committed by Dat H. Pham
parent 66f807678c
commit 6974e031a8
2 changed files with 77 additions and 54 deletions
@@ -68,6 +68,10 @@ class StorageView extends GetWidget<StorageController> with AppLoaderMixin {
.value; .value;
if (octetsQuota != null && octetsQuota.storageAvailable) { if (octetsQuota != null && octetsQuota.storageAvailable) {
final isPremiumAvailable = PlatformInfo.isWeb &&
!controller.isUpgradeStorageIsDisabled;
final isQuotaExceeds90Percent = octetsQuota.allowedDisplayToQuotaBanner;
return SingleChildScrollView( return SingleChildScrollView(
child: Padding( child: Padding(
padding: _getPadding( padding: _getPadding(
@@ -83,13 +87,12 @@ class StorageView extends GetWidget<StorageController> with AppLoaderMixin {
quota: octetsQuota, quota: octetsQuota,
isMobile: isMobile, isMobile: isMobile,
), ),
if (isPremiumAvailable || isQuotaExceeds90Percent)
UpgradeStorageWidget( UpgradeStorageWidget(
imagePaths: controller.imagePaths, imagePaths: controller.imagePaths,
isMobile: isMobile, isMobile: isMobile,
isPremiumAvailable: PlatformInfo.isWeb && isPremiumAvailable: isPremiumAvailable,
!controller.isUpgradeStorageIsDisabled, isQuotaExceeds90Percent: isQuotaExceeds90Percent,
isQuotaExceeds90Percent:
octetsQuota.allowedDisplayToQuotaBanner,
onUpgradeStorageAction: onUpgradeStorageAction:
controller.onUpgradeStorage, controller.onUpgradeStorage,
), ),
@@ -25,14 +25,35 @@ class UpgradeStorageWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final appLocalizations = AppLocalizations.of(context); final appLocalizations = AppLocalizations.of(context);
return SizedBox(
width: isMobile ? double.infinity : 439, final widgets = [
child: Column( if (isQuotaExceeds90Percent) _buildWarning(context, appLocalizations),
mainAxisSize: MainAxisSize.min, if (isPremiumAvailable) _buildUpgradeButton(appLocalizations),
];
if (widgets.isEmpty) return const SizedBox.shrink();
final body = widgets.length == 1
? widgets.first
: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ mainAxisSize: MainAxisSize.min,
if (isQuotaExceeds90Percent) children: widgets,
Row( );
return isQuotaExceeds90Percent
? SizedBox(
width: isMobile ? double.infinity : 439,
child: body,
)
: body;
}
Widget _buildWarning(
BuildContext context,
AppLocalizations appLocalizations,
) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SvgPicture.asset( SvgPicture.asset(
@@ -54,23 +75,22 @@ class UpgradeStorageWidget extends StatelessWidget {
), ),
), ),
], ],
), );
if (isPremiumAvailable) }
Container(
constraints: const BoxConstraints(minWidth: 179), Widget _buildUpgradeButton(AppLocalizations appLocalizations) {
return Container(
margin: isQuotaExceeds90Percent margin: isQuotaExceeds90Percent
? const EdgeInsetsDirectional.only(start: 16) ? const EdgeInsetsDirectional.only(top: 16)
: null, : null,
height: 48, height: 48,
constraints: const BoxConstraints(minWidth: 179),
child: ConfirmDialogButton( child: ConfirmDialogButton(
label: appLocalizations.upgradeStorage, label: appLocalizations.upgradeStorage,
backgroundColor: AppColor.primaryMain, backgroundColor: AppColor.primaryMain,
textColor: Colors.white, textColor: Colors.white,
onTapAction: onUpgradeStorageAction, onTapAction: onUpgradeStorageAction,
), ),
),
],
),
); );
} }
} }