diff --git a/assets/images/ic_quotas_out_of_storage.svg b/assets/images/ic_quotas_out_of_storage.svg new file mode 100644 index 000000000..4ebd552da --- /dev/null +++ b/assets/images/ic_quotas_out_of_storage.svg @@ -0,0 +1,3 @@ + + + diff --git a/core/lib/presentation/extensions/color_extension.dart b/core/lib/presentation/extensions/color_extension.dart index c405daca6..3756610af 100644 --- a/core/lib/presentation/extensions/color_extension.dart +++ b/core/lib/presentation/extensions/color_extension.dart @@ -166,6 +166,7 @@ extension AppColor on Color { static const colorBackgroundQuotasWarning = Color(0xFFFFC107); static const colorTitleQuotasWarning = Color(0xFFF05C44); static const colorProgressQuotasWarning = Color(0xFFFFA000); + static const colorOutOfStorageQuotasWarning = Color(0xffE64646); static const mapGradientColor = [ [Color(0xFF21D4FD), Color(0xFFB721FF)], diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart index 2768f52b3..0d342569d 100644 --- a/core/lib/presentation/resources/image_paths.dart +++ b/core/lib/presentation/resources/image_paths.dart @@ -174,6 +174,7 @@ class ImagePaths { String get icDeleteRecipient => _getImagePath('ic_delete_recipient.svg'); String get icQuotas => _getImagePath('ic_quotas.svg'); String get icQuotasWarning => _getImagePath('ic_quotas_warning.svg'); + String get icQuotasOutOfStorage => _getImagePath('ic_quotas_out_of_storage.svg'); String _getImagePath(String imageName) { return AssetsPaths.images + imageName; diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index 1f1232504..e82409d54 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -15,7 +15,6 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/bottom_bar_mai import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart'; -import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_warning_banner_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class EmailView extends GetWidget { @@ -89,7 +88,6 @@ class EmailView extends GetWidget { Widget _buildEmailView(BuildContext context, PresentationEmail email) { return Column(children: [ _buildAppBar(context, email), - const QuotasWarningBannerWidget(), _buildVacationNotificationMessage(context), const Divider(color: AppColor.colorDividerHorizontal, height: 1), Expanded( diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index d2c55f4ce..38f6d9734 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -41,36 +41,44 @@ class MailboxView extends GetWidget { child: Drawer( child: Scaffold( backgroundColor: Colors.white, - body: Stack(children: [ - Column(children: [ - _buildHeaderMailbox(context), - Obx(() => controller.isSearchActive() - ? SafeArea(bottom: false, top: false, right: false, - child: _buildInputSearchFormWidget(context)) - : const SizedBox.shrink()), - Expanded(child: Obx(() => Container( - color: controller.isSearchActive() - ? Colors.white - : AppColor.colorBgMailbox, - child: RefreshIndicator( - color: AppColor.primaryColor, - onRefresh: () async => controller.refreshAllMailbox(), - child: SafeArea(top: false, right: false, - bottom: !controller.isSelectionEnabled(), - child: controller.isSearchActive() - ? _buildListMailboxSearched(context) - : Padding( - padding: EdgeInsets.only( - bottom: _responsiveUtils.isLandscapeMobile(context) - || controller.isSelectionEnabled() ? 0 : 55), - child: _buildListMailbox(context)) - ) - ), - ))), - Obx(() => controller.isSelectionEnabled() - ? _buildOptionSelectionMailbox(context) - : const SizedBox.shrink()), - ]), + body: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column(children: [ + _buildHeaderMailbox(context), + Obx(() => controller.isSearchActive() + ? SafeArea(bottom: false, top: false, right: false, + child: _buildInputSearchFormWidget(context)) + : const SizedBox.shrink()), + Expanded(child: Obx(() => Container( + color: controller.isSearchActive() + ? Colors.white + : AppColor.colorBgMailbox, + child: RefreshIndicator( + color: AppColor.primaryColor, + onRefresh: () async => controller.refreshAllMailbox(), + child: SafeArea(top: false, right: false, + bottom: !controller.isSelectionEnabled(), + child: controller.isSearchActive() + ? _buildListMailboxSearched(context) + : Padding( + padding: EdgeInsets.only( + bottom: _responsiveUtils.isLandscapeMobile(context) + || controller.isSelectionEnabled() ? 0 : 24), + child: _buildListMailbox(context)) + ) + ), + ))), + Obx(() => controller.isSelectionEnabled() + ? _buildOptionSelectionMailbox(context) + : const SizedBox.shrink()), + ]), + ), + Obx(() => controller.isSelectionEnabled() + ? const SizedBox.shrink() + : const QuotasFooterWidget(padding: EdgeInsets.only(left: 24, right: 24, bottom: 8)), + ), Obx(() { final appInformation = controller.mailboxDashBoardController.appInformation.value; if (appInformation != null @@ -85,7 +93,7 @@ class MailboxView extends GetWidget { } else { return const SizedBox.shrink(); } - }), + }) ]), ) ) @@ -229,7 +237,6 @@ class MailboxView extends GetWidget { Obx(() => controller.folderMailboxTree.value.root.childrenItems?.isNotEmpty ?? false ? _buildMailboxCategory(context, MailboxCategories.folders, controller.folderMailboxTree.value.root) : const SizedBox.shrink()), - const QuotasFooterWidget(), ]) ); } @@ -390,13 +397,18 @@ class MailboxView extends GetWidget { } Widget _buildVersionInformation(BuildContext context, PackageInfo packageInfo) { - return SafeArea(child: Container( - padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 16), - child: Text( - '${AppLocalizations.of(context).version} ${packageInfo.version}', - textAlign: TextAlign.center, - style: const TextStyle(fontSize: 16, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500), + return SafeArea( + top: false, + child: Container( + color: AppColor.colorBgMailbox, + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 16), + child: Text( + '${AppLocalizations.of(context).version} ${packageInfo.version}', + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 16, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500), + ), ), - )); + ); } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/widgets/storage_widget_builder.dart b/lib/features/mailbox/presentation/widgets/storage_widget_builder.dart deleted file mode 100644 index aade47ad9..000000000 --- a/lib/features/mailbox/presentation/widgets/storage_widget_builder.dart +++ /dev/null @@ -1,48 +0,0 @@ - -import 'package:core/core.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; -import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; - -class StorageWidgetBuilder { - final BuildContext _context; - - StorageWidgetBuilder(this._context); - - Widget build() { - return Container( - key: const Key('storage_widget'), - padding: const EdgeInsets.only(left: 40, top: 16, bottom: 20, right: 40), - color: AppColor.storageBackgroundColor, - alignment: Alignment.bottomLeft, - height: 100, - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - AppLocalizations.of(_context).storage, - maxLines: 1, - style: const TextStyle(fontSize: 12, color: AppColor.storageTitleColor, fontWeight: FontWeight.w500)), - Padding( - padding: const EdgeInsets.only(top: 8.0), - child: RichText( - text: const TextSpan( - style: TextStyle(fontSize: 16, color: AppColor.storageMaxSizeColor, fontWeight: FontWeight.w700), - children: [ - TextSpan( - text: '299.6MB', - style: TextStyle(fontWeight: FontWeight.w700, fontSize: 16, color: AppColor.storageUseSizeColor)), - TextSpan( - text: ' / unlimited', - style: TextStyle(fontWeight: FontWeight.w700, fontSize: 16, color: AppColor.storageMaxSizeColor)) - ] - ) - ) - ) - ] - ) - ); - } -} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 5e9731ef0..22cc31311 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -112,7 +112,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { SizedBox(child: MailboxView(), width: responsiveUtils.defaultSizeMenu), Expanded(child: Column(children: [ _buildEmptyTrashButton(context), - const QuotasWarningBannerWidget(), + const QuotasWarningBannerWidget( + margin: EdgeInsets.only(right: 16, top: 8), + ), _buildVacationNotificationMessage(context), _buildListButtonQuickSearchFilter(context), _buildMarkAsMailboxReadLoading(context), diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart index b6146b55e..4901426d4 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart @@ -20,7 +20,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_view.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_view.dart'; -import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_warning_banner_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; @@ -86,7 +85,6 @@ class ManageAccountDashBoardView extends GetWidget( - getQuotaInvocation.methodCallId, GetQuotaResponse.deserialize); + getQuotaInvocation.methodCallId, + GetQuotaResponse.deserialize, + ); if(getQuotaResponse != null) { return QuotasResponse( diff --git a/lib/features/quotas/presentation/model/quotas_state.dart b/lib/features/quotas/presentation/model/quotas_state.dart new file mode 100644 index 000000000..e955bf20a --- /dev/null +++ b/lib/features/quotas/presentation/model/quotas_state.dart @@ -0,0 +1,85 @@ +import 'dart:ui'; + +import 'package:core/core.dart'; +import 'package:flutter/widgets.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +enum QuotasState { + normal, + runningOutOfStorage, + runOutOfStorage; + + Color getColorProgress() { + switch(this) { + case QuotasState.normal: + return AppColor.primaryColor; + case QuotasState.runningOutOfStorage: + return AppColor.colorProgressQuotasWarning; + case QuotasState.runOutOfStorage: + return AppColor.colorOutOfStorageQuotasWarning; + } + } + + Color getColorQuotasFooterText() { + switch(this) { + case QuotasState.normal: + case QuotasState.runningOutOfStorage: + return AppColor.loginTextFieldHintColor; + case QuotasState.runOutOfStorage: + return AppColor.colorOutOfStorageQuotasWarning; + } + } + + String getQuotasFooterText(BuildContext context, num usedCapacity, num softLimitCapacity) { + switch(this) { + case QuotasState.normal: + case QuotasState.runningOutOfStorage: + return AppLocalizations.of(context).textQuotasUsed( + usedCapacity.toDouble(), + softLimitCapacity.toDouble(), + ); + case QuotasState.runOutOfStorage: + return AppLocalizations.of(context).textQuotasOutOfStorage; + } + } + + String getIconWarningBanner(ImagePaths imagePaths) { + switch(this) { + case QuotasState.normal: + case QuotasState.runningOutOfStorage: + return imagePaths.icQuotasWarning; + case QuotasState.runOutOfStorage: + return imagePaths.icQuotasOutOfStorage; + } + } + + Color getBackgroundColorWarningBanner() { + switch(this) { + case QuotasState.normal: + case QuotasState.runningOutOfStorage: + return AppColor.colorBackgroundQuotasWarning.withOpacity(0.12); + case QuotasState.runOutOfStorage: + return AppColor.colorOutOfStorageQuotasWarning.withOpacity(0.12); + } + } + + String getTitleWarningBanner(BuildContext context, num progress) { + switch(this) { + case QuotasState.normal: + case QuotasState.runningOutOfStorage: + return AppLocalizations.of(context).textQuotasRunningOutOfStorageTitle(progress.toDouble() * 100); + case QuotasState.runOutOfStorage: + return AppLocalizations.of(context).textQuotasRunOutOfStorageTitle; + } + } + + String getContentWarningBanner(BuildContext context) { + switch(this) { + case QuotasState.normal: + case QuotasState.runningOutOfStorage: + return AppLocalizations.of(context).textQuotasRunningOutOfStorageContent; + case QuotasState.runOutOfStorage: + return AppLocalizations.of(context).textQuotasRunOutOfStorageContent; + } + } +} \ No newline at end of file diff --git a/lib/features/quotas/presentation/quotas_controller.dart b/lib/features/quotas/presentation/quotas_controller.dart index e33421b54..31a0ced82 100644 --- a/lib/features/quotas/presentation/quotas_controller.dart +++ b/lib/features/quotas/presentation/quotas_controller.dart @@ -7,6 +7,7 @@ import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.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'; +import 'package:tmail_ui_user/features/quotas/presentation/model/quotas_state.dart'; class QuotasController extends BaseController { final MailboxDashBoardController mailboxDashBoardController = Get.find(); @@ -15,6 +16,7 @@ class QuotasController extends BaseController { final softLimitCapacity = Rx(0); final warningLimitCapacity = Rx(0); final enableShowQuotas = false.obs; + final quotasState = QuotasState.normal.obs; late Worker accountIdWorker; double get progressUsedCapacity => softLimitCapacity.value != 0 @@ -22,7 +24,9 @@ class QuotasController extends BaseController { : 0; bool get enableShowWarningQuotas => - enableShowQuotas.value && usedCapacity.value >= warningLimitCapacity.value; + enableShowQuotas.isTrue && + (quotasState.value == QuotasState.runningOutOfStorage + || quotasState.value == QuotasState.runOutOfStorage); final ImagePaths imagePaths = Get.find(); final ResponsiveUtils responsiveUtils = Get.find(); @@ -32,27 +36,33 @@ class QuotasController extends BaseController { void _initWorker() { accountIdWorker = ever(mailboxDashBoardController.accountId, (accountId) { if (accountId is AccountId) { - enableShowQuotas.value = mailboxDashBoardController.sessionCurrent != null && - mailboxDashBoardController.sessionCurrent!.capabilities.containsValue(CapabilityIdentifier.jmapQuota); - consumeState(_getQuotasInteractor.execute(mailboxDashBoardController.accountId.value!)); + _getQuotasAction(accountId); } }); + } + void _getQuotasAction(AccountId accountId) { + enableShowQuotas.value = mailboxDashBoardController.sessionCurrent != null && + mailboxDashBoardController.sessionCurrent!.capabilities.containsValue(CapabilityIdentifier.jmapQuota); + + if(enableShowQuotas.isTrue) { + consumeState(_getQuotasInteractor.execute(mailboxDashBoardController.accountId.value!)); + } } @override void onDone() { viewState.value.fold( - (failure) { - if (failure is GetQuotasFailure) { - logError('QuotasController::onDone():[GetQuotasFailure]: ${failure.exception}'); - } - }, - (success) { - if (success is GetQuotasSuccess) { - _handleGetQuotasSuccess(success); - } + (failure) { + if (failure is GetQuotasFailure) { + logError('QuotasController::onDone():[GetQuotasFailure]: ${failure.exception}'); } + }, + (success) { + if (success is GetQuotasSuccess) { + _handleGetQuotasSuccess(success); + } + } ); } @@ -62,10 +72,16 @@ class QuotasController extends BaseController { usedCapacity.value = quotas.used.value; warningLimitCapacity.value = quotas.warnLimit?.value ?? 0; softLimitCapacity.value = quotas.softLimit?.value ?? 0; + if(usedCapacity.value >= softLimitCapacity.value) { + quotasState.value = QuotasState.runOutOfStorage; + } else if (usedCapacity.value >= warningLimitCapacity.value) { + quotasState.value = QuotasState.runningOutOfStorage; + } else { + quotasState.value = QuotasState.normal; + } } catch (e) { logError('QuotasController::_handleGetQuotasSuccess():[NotFoundException]: $e'); } - } @override diff --git a/lib/features/quotas/presentation/widget/quotas_footer_widget.dart b/lib/features/quotas/presentation/widget/quotas_footer_widget.dart index bd51fc813..559212991 100644 --- a/lib/features/quotas/presentation/widget/quotas_footer_widget.dart +++ b/lib/features/quotas/presentation/widget/quotas_footer_widget.dart @@ -6,15 +6,15 @@ import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dar import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class QuotasFooterWidget extends GetWidget { - const QuotasFooterWidget({Key? key}) : super(key: key); - + const QuotasFooterWidget({Key? key, this.padding}) : super(key: key); + final EdgeInsetsGeometry? padding; @override Widget build(BuildContext context) { return Obx( () => controller.enableShowQuotas.value ? Container( color: AppColor.colorBgDesktop, - padding: const EdgeInsets.all(24), + padding: padding ?? const EdgeInsets.all(24), alignment: Alignment.centerLeft, child: IntrinsicWidth( child: Column( @@ -36,21 +36,23 @@ class QuotasFooterWidget extends GetWidget { ), const SizedBox(height: 8), LinearProgressIndicator( - color: controller.enableShowWarningQuotas ? AppColor.colorProgressQuotasWarning: AppColor.primaryColor, + color: controller.quotasState.value.getColorProgress(), minHeight: 3, backgroundColor: AppColor.colorDivider, value: controller.progressUsedCapacity, ), const SizedBox(height: 8), Text( - AppLocalizations.of(context).textQuotasUsed( + controller.quotasState.value.getQuotasFooterText( + context, controller.usedCapacity.value, controller.softLimitCapacity.value, ), - style: const TextStyle( - fontSize: 13, - fontWeight: FontWeight.w400, - color: AppColor.loginTextFieldHintColor), + style: TextStyle( + fontSize: 13, + fontWeight: FontWeight.w400, + color: controller.quotasState.value.getColorQuotasFooterText(), + ), ) ], ), diff --git a/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart b/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart index a4d398348..f8359f5cd 100644 --- a/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart +++ b/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart @@ -3,10 +3,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dart'; -import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class QuotasWarningBannerWidget extends GetWidget { - const QuotasWarningBannerWidget({Key? key}) : super(key: key); + const QuotasWarningBannerWidget({this.margin ,Key? key}) : super(key: key); + final EdgeInsetsGeometry? margin; @override Widget build(BuildContext context) { @@ -14,36 +14,38 @@ class QuotasWarningBannerWidget extends GetWidget { () => controller.enableShowWarningQuotas ? Container( padding: const EdgeInsets.all(16), - margin: const EdgeInsets.only(left: 12, right: 12, top: 8), + margin: margin ?? const EdgeInsets.only(left: 12, right: 12, top: 8), decoration: BoxDecoration( - color: AppColor.colorBackgroundQuotasWarning.withOpacity(0.12), + color: controller.quotasState.value.getBackgroundColorWarningBanner(), borderRadius: const BorderRadius.all(Radius.circular(10)), ), child: Row( children: [ - SvgPicture.asset(controller.imagePaths.icQuotasWarning), + SvgPicture.asset(controller.quotasState.value.getIconWarningBanner(controller.imagePaths)), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppLocalizations.of(context) - .textQuotasWarningTitle(controller.progressUsedCapacity *100), + controller.quotasState.value.getTitleWarningBanner( + context, + controller.progressUsedCapacity, + ), style: const TextStyle( - fontSize: 17, - fontWeight: FontWeight.w700, - color: AppColor.colorTitleQuotasWarning, + fontSize: 17, + fontWeight: FontWeight.w700, + color: AppColor.colorTitleQuotasWarning, ), ), const SizedBox(height: 8), Text( - AppLocalizations.of(context) - .textQuotasWarningContent, + controller.quotasState.value.getContentWarningBanner(context), style: const TextStyle( - fontSize: 15, - fontWeight: FontWeight.w400, - color: AppColor.loginTextFieldHintColor), + fontSize: 15, + fontWeight: FontWeight.w400, + color: AppColor.loginTextFieldHintColor, + ), ), ], ), diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index f9ba8ae0d..6895ac159 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,9 +1,13 @@ { +<<<<<<< HEAD <<<<<<< HEAD "@@last_modified": "2022-11-08T16:55:51.988372", ======= "@@last_modified": "2022-11-09T17:10:23.172672", >>>>>>> 24967b2c (TF-1014: [Dev] Show quota at the bottom of mailbox) +======= + "@@last_modified": "2022-11-10T10:33:41.637215", +>>>>>>> 1ad5dd5c (TF-1014: add quotas out of storage) "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -124,12 +128,6 @@ "placeholders_order": [], "placeholders": {} }, - "storage": "STORAGE", - "@storage": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "myFolders": "My Folders", "@myFolders": { "type": "text", @@ -2473,8 +2471,8 @@ "softLimit": {} } }, - "textQuotasWarningTitle": "You are running out of storage ({progress}%).", - "@textQuotasWarningTitle": { + "textQuotasRunningOutOfStorageTitle": "You are running out of storage ({progress}%).", + "@textQuotasRunningOutOfStorageTitle": { "type": "text", "placeholders_order": [ "progress" @@ -2483,5 +2481,29 @@ "progress": {} >>>>>>> 24967b2c (TF-1014: [Dev] Show quota at the bottom of mailbox) } + }, + "textQuotasRunningOutOfStorageContent": "Soon you won't be able to email in Team Mail. Please clean your storage or upgrade your storage to get full features in Team Mail.", + "@textQuotasRunningOutOfStorageContent": { + "type": "text", + "placeholders_order": [], + "placeholders": {} + }, + "textQuotasOutOfStorage": "Out of storage", + "@textQuotasOutOfStorage": { + "type": "text", + "placeholders_order": [], + "placeholders": {} + }, + "textQuotasRunOutOfStorageTitle": "You have run out of storage space", + "@textQuotasRunOutOfStorageTitle": { + "type": "text", + "placeholders_order": [], + "placeholders": {} + }, + "textQuotasRunOutOfStorageContent": "Now you temporarily can't send or get an email. Please free up or upgrade your storage to get the full features of Team Mail.", + "@textQuotasRunOutOfStorageContent": { + "type": "text", + "placeholders_order": [], + "placeholders": {} } } \ No newline at end of file diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index a3e2f2f5b..3cb27478a 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -117,13 +117,6 @@ class AppLocalizations { ); } - String get storage { - return Intl.message( - 'STORAGE', - name: 'storage', - ); - } - String get myFolders { return Intl.message( 'My Folders', @@ -2527,7 +2520,7 @@ class AppLocalizations { ); } - String textQuotasUsed(num used, num softLimit) { + String textQuotasUsed(double used, double softLimit) { return Intl.message( '$used GB of $softLimit GB Used', name: 'textQuotasUsed', @@ -2535,18 +2528,39 @@ class AppLocalizations { ); } - String textQuotasWarningTitle(num progress) { + String textQuotasRunningOutOfStorageTitle(double progress) { return Intl.message( 'You are running out of storage ($progress%).', - name: 'textQuotasWarningTitle', + name: 'textQuotasRunningOutOfStorageTitle', args: [progress], ); } - String get textQuotasWarningContent { + String get textQuotasRunningOutOfStorageContent { return Intl.message( - "Soon you won't be able to email in Tmail. Please clean your storage or upgrade your storage to get full features in Tmail.", - name: 'textQuotasWarningTitle', + "Soon you won't be able to email in Team Mail. Please clean your storage or upgrade your storage to get full features in Team Mail.", + name: 'textQuotasRunningOutOfStorageContent', + ); + } + + String get textQuotasOutOfStorage { + return Intl.message( + 'Out of storage', + name: 'textQuotasOutOfStorage', + ); + } + + String get textQuotasRunOutOfStorageTitle { + return Intl.message( + 'You have run out of storage space', + name: 'textQuotasRunOutOfStorageTitle', + ); + } + + String get textQuotasRunOutOfStorageContent { + return Intl.message( + "Now you temporarily can't send or get an email. Please free up or upgrade your storage to get the full features of Team Mail.", + name: 'textQuotasRunOutOfStorageContent', ); } } \ No newline at end of file