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;
if (octetsQuota != null && octetsQuota.storageAvailable) {
final isPremiumAvailable = PlatformInfo.isWeb &&
!controller.isUpgradeStorageIsDisabled;
final isQuotaExceeds90Percent = octetsQuota.allowedDisplayToQuotaBanner;
return SingleChildScrollView(
child: Padding(
padding: _getPadding(
@@ -83,13 +87,12 @@ class StorageView extends GetWidget<StorageController> with AppLoaderMixin {
quota: octetsQuota,
isMobile: isMobile,
),
if (isPremiumAvailable || isQuotaExceeds90Percent)
UpgradeStorageWidget(
imagePaths: controller.imagePaths,
isMobile: isMobile,
isPremiumAvailable: PlatformInfo.isWeb &&
!controller.isUpgradeStorageIsDisabled,
isQuotaExceeds90Percent:
octetsQuota.allowedDisplayToQuotaBanner,
isPremiumAvailable: isPremiumAvailable,
isQuotaExceeds90Percent: isQuotaExceeds90Percent,
onUpgradeStorageAction:
controller.onUpgradeStorage,
),
@@ -25,14 +25,35 @@ class UpgradeStorageWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appLocalizations = AppLocalizations.of(context);
return SizedBox(
width: isMobile ? double.infinity : 439,
child: Column(
mainAxisSize: MainAxisSize.min,
final widgets = [
if (isQuotaExceeds90Percent) _buildWarning(context, appLocalizations),
if (isPremiumAvailable) _buildUpgradeButton(appLocalizations),
];
if (widgets.isEmpty) return const SizedBox.shrink();
final body = widgets.length == 1
? widgets.first
: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (isQuotaExceeds90Percent)
Row(
mainAxisSize: MainAxisSize.min,
children: widgets,
);
return isQuotaExceeds90Percent
? SizedBox(
width: isMobile ? double.infinity : 439,
child: body,
)
: body;
}
Widget _buildWarning(
BuildContext context,
AppLocalizations appLocalizations,
) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
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
? const EdgeInsetsDirectional.only(start: 16)
? const EdgeInsetsDirectional.only(top: 16)
: null,
height: 48,
constraints: const BoxConstraints(minWidth: 179),
child: ConfirmDialogButton(
label: appLocalizations.upgradeStorage,
backgroundColor: AppColor.primaryMain,
textColor: Colors.white,
onTapAction: onUpgradeStorageAction,
),
),
],
),
);
}
}