TF-233 Implement create new mailbox and sub-folder
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_change_response.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
|
||||
|
||||
abstract class MailboxDataSource {
|
||||
@@ -13,4 +14,6 @@ abstract class MailboxDataSource {
|
||||
Future<MailboxChangeResponse> getChanges(AccountId accountId, State sinceState);
|
||||
|
||||
Future<void> update({List<Mailbox>? updated, List<Mailbox>? created, List<MailboxId>? destroyed});
|
||||
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest);
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasourc
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_change_response.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/extensions/mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
|
||||
|
||||
class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
||||
@@ -43,4 +44,9 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import 'package:jmap_dart_client/jmap/core/state.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_change_response.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
|
||||
|
||||
@@ -40,4 +41,13 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
||||
Future<List<Mailbox>> getAllMailboxCache() {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
return Future.sync(() async {
|
||||
return await mailboxAPI.createNewMailbox(accountId, newMailboxRequest);
|
||||
}).catchError((error) {
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -8,17 +8,17 @@ import 'package:tmail_ui_user/features/mailbox/data/extensions/mailbox_rights_ca
|
||||
extension MailboxCacheExtension on MailboxCache {
|
||||
Mailbox toMailbox() {
|
||||
return Mailbox(
|
||||
MailboxId(Id(id)),
|
||||
name != null ? MailboxName(name!) : null,
|
||||
parentId != null ? MailboxId(Id(parentId!)) : null,
|
||||
role != null ? Role(role!) : null,
|
||||
sortOrder != null ? SortOrder(sortValue: sortOrder!) : null,
|
||||
totalEmails != null ? TotalEmails(UnsignedInt(totalEmails!)) : null,
|
||||
unreadEmails != null ? UnreadEmails(UnsignedInt(unreadEmails!)) : null,
|
||||
totalThreads != null ? TotalThreads(UnsignedInt(totalThreads!)) : null,
|
||||
unreadThreads != null ? UnreadThreads(UnsignedInt(unreadThreads!)) : null,
|
||||
myRights != null ? myRights!.toMailboxRights() : null,
|
||||
isSubscribed != null ? IsSubscribed(isSubscribed!) : null
|
||||
id: MailboxId(Id(id)),
|
||||
name: name != null ? MailboxName(name!) : null,
|
||||
parentId: parentId != null ? MailboxId(Id(parentId!)) : null,
|
||||
role: role != null ? Role(role!) : null,
|
||||
sortOrder: sortOrder != null ? SortOrder(sortValue: sortOrder!) : null,
|
||||
totalEmails: totalEmails != null ? TotalEmails(UnsignedInt(totalEmails!)) : null,
|
||||
unreadEmails: unreadEmails != null ? UnreadEmails(UnsignedInt(unreadEmails!)) : null,
|
||||
totalThreads: totalThreads != null ? TotalThreads(UnsignedInt(totalThreads!)) : null,
|
||||
unreadThreads: unreadThreads != null ? UnreadThreads(UnsignedInt(unreadThreads!)) : null,
|
||||
myRights: myRights != null ? myRights!.toMailboxRights() : null,
|
||||
isSubscribed: isSubscribed != null ? IsSubscribed(isSubscribed!) : null
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ extension MailboxExtension on Mailbox {
|
||||
|
||||
MailboxCache toMailboxCache() {
|
||||
return MailboxCache(
|
||||
id.id.value,
|
||||
id!.id.value,
|
||||
name: name?.name,
|
||||
parentId: parentId?.id.value,
|
||||
role: role?.value,
|
||||
|
||||
@@ -12,7 +12,11 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/changes/changes_mailbox_respo
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/get/get_mailbox_method.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/get/get_mailbox_response.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/set/set_mailbox_method.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/set/set_mailbox_response.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_change_response.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
|
||||
|
||||
class MailboxAPI {
|
||||
@@ -95,4 +99,33 @@ class MailboxAPI {
|
||||
hasMoreChanges: resultChanges?.hasMoreChanges ?? false,
|
||||
updatedProperties: resultChanges?.updatedProperties);
|
||||
}
|
||||
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest request) async {
|
||||
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||
..addCreate(request.creationId, Mailbox(name: request.newName, parentId: request.parentId));
|
||||
|
||||
final requestBuilder = JmapRequestBuilder(httpClient, ProcessingInvocation());
|
||||
|
||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings(setMailboxMethod.requiredCapabilities))
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
final setMailboxResponse = response.parse<SetMailboxResponse>(
|
||||
setMailboxInvocation.methodCallId,
|
||||
SetMailboxResponse.deserialize);
|
||||
|
||||
return Future.sync(() async {
|
||||
final newMailbox = setMailboxResponse?.created?[request.creationId];
|
||||
if (newMailbox != null) {
|
||||
return newMailbox.addMailboxName(newMailbox, request.newName, parentId: request.parentId);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}).catchError((error) {
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/extensions/state_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/state_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||
@@ -83,7 +84,7 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
if (updatedProperties == null) {
|
||||
return mailboxUpdated;
|
||||
} else {
|
||||
final mailboxOld = mailboxCacheList?.findMailbox(mailboxUpdated.id);
|
||||
final mailboxOld = mailboxCacheList?.findMailbox(mailboxUpdated.id!);
|
||||
if (mailboxOld != null) {
|
||||
return mailboxOld.combineMailbox(mailboxUpdated, updatedProperties);
|
||||
} else {
|
||||
@@ -134,4 +135,9 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
|
||||
yield newMailboxResponse;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
return mapDataSource[DataSourceType.network]!.createNewMailbox(accountId, newMailboxRequest);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
|
||||
class CreateNewMailboxRequest with EquatableMixin {
|
||||
|
||||
final MailboxName newName;
|
||||
final Id creationId;
|
||||
final MailboxId? parentId;
|
||||
|
||||
CreateNewMailboxRequest(this.creationId, this.newName, {this.parentId});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [creationId, newName, parentId];
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
|
||||
|
||||
abstract class MailboxRepository {
|
||||
Stream<MailboxResponse> getAllMailbox(AccountId accountId, {Properties? properties});
|
||||
|
||||
Stream<MailboxResponse> refresh(AccountId accountId, State currentState);
|
||||
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
|
||||
class CreateNewMailboxSuccess extends UIState {
|
||||
|
||||
final Mailbox newMailbox;
|
||||
|
||||
CreateNewMailboxSuccess(this.newMailbox);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [newMailbox];
|
||||
}
|
||||
|
||||
class CreateNewMailboxFailure extends FeatureFailure {
|
||||
final exception;
|
||||
|
||||
CreateNewMailboxFailure(this.exception);
|
||||
|
||||
@override
|
||||
List<Object> get props => [exception];
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/create_new_mailbox_state.dart';
|
||||
|
||||
class CreateNewMailboxInteractor {
|
||||
final MailboxRepository mailboxRepository;
|
||||
|
||||
CreateNewMailboxInteractor(this.mailboxRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) async* {
|
||||
try {
|
||||
final newMailbox = await mailboxRepository.createNewMailbox(accountId, newMailboxRequest);
|
||||
if (newMailbox != null) {
|
||||
yield Right<Failure, Success>(CreateNewMailboxSuccess(newMailbox));
|
||||
} else {
|
||||
yield Left<Failure, Success>(CreateNewMailboxFailure(null));
|
||||
}
|
||||
} catch (e) {
|
||||
yield Left<Failure, Success>(CreateNewMailboxFailure(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,10 +15,12 @@ import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/repository/mailbox_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class MailboxBindings extends Bindings {
|
||||
@override
|
||||
@@ -42,11 +44,17 @@ class MailboxBindings extends Bindings {
|
||||
Get.lazyPut(() => GetAllMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => RefreshAllMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => TreeBuilder());
|
||||
Get.lazyPut(() => CreateNewMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => Uuid());
|
||||
Get.put(MailboxController(
|
||||
Get.find<GetAllMailboxInteractor>(),
|
||||
Get.find<DeleteCredentialInteractor>(),
|
||||
Get.find<RefreshAllMailboxInteractor>(),
|
||||
Get.find<CreateNewMailboxInteractor>(),
|
||||
Get.find<TreeBuilder>(),
|
||||
Get.find<Uuid>(),
|
||||
Get.find<AppToast>(),
|
||||
Get.find<ImagePaths>(),
|
||||
Get.find<ResponsiveUtils>(),
|
||||
Get.find<CachingManager>()));
|
||||
}
|
||||
|
||||
@@ -4,25 +4,32 @@ import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/create_new_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/list_mailbox_node_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/mailbox_creator_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/new_mailbox_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmapState;
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class MailboxController extends BaseController {
|
||||
|
||||
@@ -30,7 +37,11 @@ class MailboxController extends BaseController {
|
||||
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
||||
final DeleteCredentialInteractor _deleteCredentialInteractor;
|
||||
final RefreshAllMailboxInteractor _refreshAllMailboxInteractor;
|
||||
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
||||
final TreeBuilder _treeBuilder;
|
||||
final Uuid _uuid;
|
||||
final AppToast _appToast;
|
||||
final ImagePaths _imagePaths;
|
||||
final ResponsiveUtils responsiveUtils;
|
||||
final CachingManager _cachingManager;
|
||||
|
||||
@@ -45,7 +56,11 @@ class MailboxController extends BaseController {
|
||||
this._getAllMailboxInteractor,
|
||||
this._deleteCredentialInteractor,
|
||||
this._refreshAllMailboxInteractor,
|
||||
this._createNewMailboxInteractor,
|
||||
this._treeBuilder,
|
||||
this._uuid,
|
||||
this._appToast,
|
||||
this._imagePaths,
|
||||
this.responsiveUtils,
|
||||
this._cachingManager,
|
||||
);
|
||||
@@ -95,7 +110,20 @@ class MailboxController extends BaseController {
|
||||
}
|
||||
|
||||
@override
|
||||
void onDone() {}
|
||||
void onDone() {
|
||||
viewState.value.fold(
|
||||
(failure) {
|
||||
if (failure is CreateNewMailboxFailure) {
|
||||
_createNewMailboxFailure(failure);
|
||||
}
|
||||
},
|
||||
(success) {
|
||||
if (success is CreateNewMailboxSuccess) {
|
||||
_createNewMailboxSuccess(success);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void onError(error) {}
|
||||
@@ -206,13 +234,47 @@ class MailboxController extends BaseController {
|
||||
await _cachingManager.clearAll();
|
||||
}
|
||||
|
||||
void createNewMailbox() async {
|
||||
void goToCreateNewMailboxView() async {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
final newMailboxArguments = await push(
|
||||
AppRoutes.MAILBOX_CREATOR,
|
||||
arguments: MailboxCreatorArguments(accountId, allMailboxes)
|
||||
);
|
||||
|
||||
if (newMailboxArguments != null && newMailboxArguments is NewMailboxArguments) {
|
||||
final generateCreateId = Id(_uuid.v1());
|
||||
_createNewMailboxAction(accountId, CreateNewMailboxRequest(
|
||||
generateCreateId,
|
||||
newMailboxArguments.newName,
|
||||
parentId: newMailboxArguments.mailboxLocation?.id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _createNewMailboxAction(AccountId accountId, CreateNewMailboxRequest request) async {
|
||||
consumeState(_createNewMailboxInteractor.execute(accountId, request));
|
||||
}
|
||||
|
||||
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
||||
if (Get.overlayContext != null && Get.context != null) {
|
||||
_appToast.showToastWithIcon(
|
||||
Get.overlayContext!,
|
||||
textColor: AppColor.toastSuccessBackgroundColor,
|
||||
message: AppLocalizations.of(Get.context!).new_mailbox_is_created(success.newMailbox.name?.name ?? ''),
|
||||
icon: _imagePaths.icFolderMailbox);
|
||||
}
|
||||
|
||||
refreshMailboxChanges();
|
||||
}
|
||||
|
||||
void _createNewMailboxFailure(CreateNewMailboxFailure failure) {
|
||||
if (Get.overlayContext != null && Get.context != null) {
|
||||
_appToast.showToastWithIcon(
|
||||
Get.overlayContext!,
|
||||
textColor: AppColor.toastErrorBackgroundColor,
|
||||
message: AppLocalizations.of(Get.context!).create_new_mailbox_failure,
|
||||
icon: _imagePaths.icFolderMailbox);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,8 +83,8 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(left: 16, right: 16),
|
||||
child: IconButton(
|
||||
key: Key('mailbox_add_new_folder_button'),
|
||||
onPressed: () => controller.createNewMailbox(),
|
||||
key: Key('create_new_mailbox_button'),
|
||||
onPressed: () => controller.goToCreateNewMailboxView(),
|
||||
icon: SvgPicture.asset(imagePaths.icAddNewFolder, width: 30, height: 30, fit: BoxFit.fill)));
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -2,18 +2,18 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
enum MailboxAction {
|
||||
enum MailboxActions {
|
||||
create,
|
||||
moveEmail,
|
||||
}
|
||||
|
||||
extension MailboxActionExtension on MailboxAction {
|
||||
extension MailboxActionsExtension on MailboxActions {
|
||||
|
||||
String getTitle(BuildContext context) {
|
||||
switch(this) {
|
||||
case MailboxAction.create:
|
||||
case MailboxActions.create:
|
||||
return AppLocalizations.of(context).mailbox_location;
|
||||
case MailboxAction.moveEmail:
|
||||
case MailboxActions.moveEmail:
|
||||
return AppLocalizations.of(context).move_to_mailbox;
|
||||
default:
|
||||
return '';
|
||||
Reference in New Issue
Block a user