TF-460 Implement get identity for mobile
This commit is contained in:
@@ -5,18 +5,25 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
@immutable
|
||||
class PopupMenuItemWidget extends StatelessWidget {
|
||||
|
||||
final Function onCallBack;
|
||||
final Function onTapCallback;
|
||||
final String icon;
|
||||
final String name;
|
||||
final Color? iconColor;
|
||||
final String? iconSelection;
|
||||
|
||||
PopupMenuItemWidget(this.icon, this.name, this.onCallBack, {this.iconSelection, this.iconColor});
|
||||
PopupMenuItemWidget(
|
||||
this.icon,
|
||||
this.name,
|
||||
this.onTapCallback,
|
||||
{
|
||||
this.iconSelection,
|
||||
this.iconColor
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return InkWell(
|
||||
onTap: () => onCallBack.call(),
|
||||
onTap: () => onTapCallback.call(),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 16),
|
||||
child: SizedBox(
|
||||
|
||||
@@ -45,38 +45,37 @@ class SearchBarView {
|
||||
}
|
||||
|
||||
Widget build() {
|
||||
return InkWell(
|
||||
onTap: () => _onOpenSearchViewAction?.call(),
|
||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||
child: Container(
|
||||
key: Key('search_bar_widget'),
|
||||
alignment: Alignment.topCenter,
|
||||
height: _heightSearchBar ?? 40,
|
||||
width: _maxSizeWidth ?? double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: AppColor.colorBgSearchBar),
|
||||
padding: _padding ?? EdgeInsets.zero,
|
||||
margin: _margin ?? EdgeInsets.zero,
|
||||
child: MediaQuery(
|
||||
data: MediaQueryData(padding: EdgeInsets.zero),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
buildIconWeb(
|
||||
splashRadius: 12,
|
||||
icon: SvgPicture.asset(_imagePaths.icSearchBar, width: 16, height: 16, fit: BoxFit.fill),
|
||||
onTap: () => _onOpenSearchViewAction?.call()),
|
||||
Expanded(child:
|
||||
Transform(transform: Matrix4.translationValues(-5, 0.0, 0.0),
|
||||
child: Text(
|
||||
_hintTextSearch ?? '',
|
||||
maxLines: 1,
|
||||
style: TextStyle(fontSize: kIsWeb ? 15 : 17, color: AppColor.colorHintSearchBar))))
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
return Container(
|
||||
key: Key('search_bar_widget'),
|
||||
alignment: Alignment.topCenter,
|
||||
height: _heightSearchBar ?? 40,
|
||||
width: _maxSizeWidth ?? double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: AppColor.colorBgSearchBar),
|
||||
padding: _padding ?? EdgeInsets.zero,
|
||||
margin: _margin ?? EdgeInsets.zero,
|
||||
child: InkWell(
|
||||
onTap: () => _onOpenSearchViewAction?.call(),
|
||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||
child: MediaQuery(
|
||||
data: MediaQueryData(padding: EdgeInsets.zero),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
buildIconWeb(
|
||||
splashRadius: 12,
|
||||
icon: SvgPicture.asset(_imagePaths.icSearchBar, width: 16, height: 16, fit: BoxFit.fill),
|
||||
onTap: () => _onOpenSearchViewAction?.call()),
|
||||
Expanded(child:
|
||||
Transform(transform: Matrix4.translationValues(-5, 0.0, 0.0),
|
||||
child: Text(
|
||||
_hintTextSearch ?? '',
|
||||
maxLines: 1,
|
||||
style: TextStyle(fontSize: kIsWeb ? 15 : 17, color: AppColor.colorHintSearchBar))))
|
||||
]
|
||||
)
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ mixin PopupContextMenuActionMixin {
|
||||
void openPopupMenuAction(BuildContext context, RelativeRect? position, List<PopupMenuEntry> popupMenuItems) async {
|
||||
await showMenu(
|
||||
context: context,
|
||||
position: position ?? RelativeRect.fromLTRB(16, 40, 16, 16),
|
||||
position: position ?? const RelativeRect.fromLTRB(16, 40, 16, 16),
|
||||
color: Colors.white,
|
||||
elevation: 4,
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
|
||||
@@ -28,7 +28,7 @@ mixin PopupContextMenuActionMixin {
|
||||
return CupertinoActionSheetAction(
|
||||
child: Text(
|
||||
AppLocalizations.of(context).cancel,
|
||||
style: TextStyle(fontWeight: FontWeight.w500, fontSize: 20, color: AppColor.colorTextButton)),
|
||||
style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 20, color: AppColor.colorTextButton)),
|
||||
onPressed: () => popBack(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ class MailboxController extends BaseMailboxController {
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
_openMailboxEventController.stream.throttleTime(Duration(milliseconds: 800)).listen((event) {
|
||||
_openMailboxEventController.stream.throttleTime(const Duration(milliseconds: 800)).listen((event) {
|
||||
_handleOpenMailbox(event.buildContext, event.presentationMailbox);
|
||||
});
|
||||
|
||||
@@ -304,7 +304,7 @@ class MailboxController extends BaseMailboxController {
|
||||
}
|
||||
|
||||
if (!_responsiveUtils.isDesktop(context) && !_responsiveUtils.isTabletLarge(context)) {
|
||||
mailboxDashBoardController.closeDrawer();
|
||||
mailboxDashBoardController.closeMailboxMenuDrawer();
|
||||
} else {
|
||||
mailboxDashBoardController.dispatchRoute(AppRoutes.THREAD);
|
||||
}
|
||||
@@ -679,7 +679,7 @@ class MailboxController extends BaseMailboxController {
|
||||
|
||||
void closeMailboxScreen(BuildContext context) {
|
||||
_cancelSelectMailbox();
|
||||
mailboxDashBoardController.closeDrawer();
|
||||
mailboxDashBoardController.closeMailboxMenuDrawer();
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -222,7 +222,7 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
left: _responsiveUtils.isMobile(context) && _responsiveUtils.isLandscape(context) ? 0 : 16,
|
||||
right: 16),
|
||||
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value)
|
||||
..addOnLogoutAction(() => controller.mailboxDashBoardController.logoutAction()))
|
||||
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings()))
|
||||
.build()),
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2)
|
||||
]);
|
||||
|
||||
@@ -191,7 +191,7 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 16, bottom: 10),
|
||||
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value)
|
||||
..addOnLogoutAction(() => controller.mailboxDashBoardController.logoutAction()))
|
||||
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings()))
|
||||
.build()),
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2)
|
||||
]),
|
||||
|
||||
@@ -248,11 +248,11 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
selectedEmail.value = null;
|
||||
}
|
||||
|
||||
void openDrawer() {
|
||||
void openMailboxMenuDrawer() {
|
||||
scaffoldKey.currentState?.openDrawer();
|
||||
}
|
||||
|
||||
void closeDrawer() {
|
||||
void closeMailboxMenuDrawer() {
|
||||
scaffoldKey.currentState?.openEndDrawer();
|
||||
}
|
||||
|
||||
@@ -424,6 +424,10 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
void goToSettings() {
|
||||
if (currentContext != null && (_responsiveUtils.isMobile(currentContext!)
|
||||
|| _responsiveUtils.isTablet(currentContext!))) {
|
||||
closeMailboxMenuDrawer();
|
||||
}
|
||||
push(AppRoutes.MANAGE_ACCOUNT,
|
||||
arguments: ManageAccountArguments(accountId.value, userProfile.value));
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
|
||||
Widget _buildLargeScreenView(BuildContext context) {
|
||||
if (controller.isDrawerOpen && (_responsiveUtils.isDesktop(context) || _responsiveUtils.isTabletLarge(context))) {
|
||||
WidgetsBinding.instance?.addPostFrameCallback((_) {
|
||||
controller.closeDrawer();
|
||||
controller.closeMailboxMenuDrawer();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
|
||||
Widget build(BuildContext context) {
|
||||
if (controller.isDrawerOpen && (_responsiveUtils.isDesktop(context) || _responsiveUtils.isTabletLarge(context))) {
|
||||
WidgetsBinding.instance?.addPostFrameCallback((_) {
|
||||
controller.closeDrawer();
|
||||
controller.closeMailboxMenuDrawer();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -401,7 +401,10 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
|
||||
..setMargin(const EdgeInsets.only(right: 10))
|
||||
..setHeightSearchBar(45)
|
||||
..setHintText(AppLocalizations.of(context).search_mail)
|
||||
..addOnCancelSearchPressed(() => controller.disableSearch())
|
||||
..addOnCancelSearchPressed(() {
|
||||
controller.disableSearch();
|
||||
controller.dispatchAction(CancelSelectionAllEmailAction());
|
||||
})
|
||||
..addOnClearTextSearchAction(() => controller.clearSearchText())
|
||||
..addOnTextChangeSearchAction((query) => controller.addSuggestionSearch(query))
|
||||
..addOnSearchTextAction((query) => controller.searchEmail(context, query)))
|
||||
|
||||
@@ -98,4 +98,11 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
pushAndPop(AppRoutes.MANAGE_ACCOUNT,
|
||||
arguments: ManageAccountArguments(accountId.value, userProfile.value));
|
||||
}
|
||||
|
||||
void backToMailboxDashBoard() {
|
||||
if (currentContext != null && !_responsiveUtils.isDesktop(currentContext!)) {
|
||||
closeMenuDrawer();
|
||||
}
|
||||
popBack();
|
||||
}
|
||||
}
|
||||
@@ -77,19 +77,27 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
||||
],
|
||||
))
|
||||
]),
|
||||
mobile: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 24, right: 32),
|
||||
child: _buildAppbar(context)),
|
||||
(SearchBarView(_imagePaths)
|
||||
..hintTextSearch(AppLocalizations.of(context).search_emails)
|
||||
..addMargin(const EdgeInsets.only(left: 32, right: 32))
|
||||
..addOnOpenSearchViewAction(() => {}))
|
||||
.build(),
|
||||
Expanded(child: Padding(
|
||||
padding: const EdgeInsets.only(left: 24, right: 24, bottom: 16),
|
||||
child: _viewDisplayedOfAccountMenuItem()))
|
||||
])
|
||||
mobile: SafeArea(
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
Padding(
|
||||
padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
|
||||
? const EdgeInsets.only(bottom: 16, left: 4, right: 8)
|
||||
: const EdgeInsets.only(top: 16, bottom: 16, left: 24, right: 32),
|
||||
child: _buildAppbar(context)),
|
||||
(SearchBarView(_imagePaths)
|
||||
..hintTextSearch(AppLocalizations.of(context).search_emails)
|
||||
..addMargin(!BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
|
||||
? const EdgeInsets.only(left: 16, right: 16)
|
||||
: const EdgeInsets.only(left: 32, right: 32))
|
||||
..addOnOpenSearchViewAction(() => {}))
|
||||
.build(),
|
||||
Expanded(child: Padding(
|
||||
padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
|
||||
? const EdgeInsets.only(left: 8)
|
||||
: const EdgeInsets.only(left: 24),
|
||||
child: _viewDisplayedOfAccountMenuItem()))
|
||||
])
|
||||
)
|
||||
),
|
||||
]),
|
||||
);
|
||||
|
||||
@@ -23,4 +23,8 @@ class ManageAccountMenuController extends BaseController {
|
||||
void selectAccountMenuItem(AccountMenuItem newAccountMenuItem) {
|
||||
dashBoardController.selectAccountMenuItem(newAccountMenuItem);
|
||||
}
|
||||
|
||||
void backToMailboxDashBoard() {
|
||||
dashBoardController.backToMailboxDashBoard();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/account_property_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
@@ -20,77 +20,94 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
elevation: _responsiveUtils.isDesktop(context) ? 0 : 16.0,
|
||||
child: Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
body: Column(
|
||||
children: [
|
||||
if (!_responsiveUtils.isDesktop(context))
|
||||
Container(
|
||||
color: Colors.white,
|
||||
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 16),
|
||||
child: Row(children: [
|
||||
(SloganBuilder(arrangedByHorizontal: true)
|
||||
..setSloganText(AppLocalizations.of(context).app_name)
|
||||
..setSloganTextAlign(TextAlign.center)
|
||||
..setSloganTextStyle(const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold))
|
||||
..setSizeLogo(24)
|
||||
..setLogo(_imagePaths.icLogoTMail))
|
||||
.build(),
|
||||
Obx(() {
|
||||
if (controller.dashBoardController.appInformation.value != null) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 4),
|
||||
child: Text(
|
||||
'v.${controller.dashBoardController.appInformation.value!.version}',
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
])
|
||||
),
|
||||
if (!_responsiveUtils.isDesktop(context))
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
|
||||
Expanded(child: Container(
|
||||
color: _responsiveUtils.isDesktop(context) ? AppColor.colorBgDesktop : Colors.white,
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 32, top: 34),
|
||||
child: Text(
|
||||
AppLocalizations.of(context).manage_account,
|
||||
style: const TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 17))),
|
||||
const SizedBox(height: 12),
|
||||
ListView.builder(
|
||||
padding: const EdgeInsets.only(left: 16, right: 8),
|
||||
key: const Key('list_manage_account_property'),
|
||||
shrinkWrap: true,
|
||||
itemCount: controller.listAccountMenuItem.length,
|
||||
itemBuilder: (context, index) => Obx(() => AccountMenuItemTileBuilder(
|
||||
context,
|
||||
_imagePaths,
|
||||
_responsiveUtils,
|
||||
controller.listAccountMenuItem[index],
|
||||
controller.dashBoardController.accountMenuItemSelected.value,
|
||||
onSelectAccountMenuItemAction: (newAccountMenuItem) =>
|
||||
controller.selectAccountMenuItem(newAccountMenuItem)))),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 16),
|
||||
child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)),
|
||||
Padding(padding: const EdgeInsets.only(left: 32),
|
||||
child: InkWell(
|
||||
onTap: () => controller.dashBoardController.logoutAction(),
|
||||
child: Row(children: [
|
||||
SvgPicture.asset(_imagePaths.icLogout, fit: BoxFit.fill),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text(AppLocalizations.of(context).sign_out,
|
||||
style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 15, color: Colors.black)))
|
||||
])
|
||||
)
|
||||
),
|
||||
]),
|
||||
)),
|
||||
]
|
||||
body: SafeArea(right: false, bottom: false,
|
||||
child: Column(
|
||||
children: [
|
||||
if (!_responsiveUtils.isDesktop(context))
|
||||
Container(
|
||||
color: Colors.white,
|
||||
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 16),
|
||||
child: Row(children: [
|
||||
(SloganBuilder(arrangedByHorizontal: true)
|
||||
..setSloganText(AppLocalizations.of(context).app_name)
|
||||
..setSloganTextAlign(TextAlign.center)
|
||||
..setSloganTextStyle(const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold))
|
||||
..setSizeLogo(24)
|
||||
..setLogo(_imagePaths.icLogoTMail))
|
||||
.build(),
|
||||
Obx(() {
|
||||
if (controller.dashBoardController.appInformation.value != null) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 4),
|
||||
child: Text(
|
||||
'v.${controller.dashBoardController.appInformation.value!.version}',
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
])
|
||||
),
|
||||
if (!_responsiveUtils.isDesktop(context))
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
|
||||
Expanded(child: Container(
|
||||
color: _responsiveUtils.isDesktop(context) ? AppColor.colorBgDesktop : Colors.white,
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20, top: 24),
|
||||
child: (ButtonBuilder(_imagePaths.icBack)
|
||||
..key(const Key('button_back'))
|
||||
..decoration(BoxDecoration(borderRadius: BorderRadius.circular(10), color: AppColor.colorBgMailboxSelected))
|
||||
..paddingIcon(const EdgeInsets.only(right: 8))
|
||||
..iconColor(AppColor.colorTextButton)
|
||||
..maxWidth(85)
|
||||
..size(16)
|
||||
..radiusSplash(10)
|
||||
..padding(const EdgeInsets.symmetric(vertical: 10))
|
||||
..textStyle(const TextStyle(fontSize: 15, color: AppColor.colorTextButton, fontWeight: FontWeight.normal))
|
||||
..onPressActionClick(() => controller.backToMailboxDashBoard())
|
||||
..text(AppLocalizations.of(context).back, isVertical: false))
|
||||
.build()),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 32, top: 20),
|
||||
child: Text(
|
||||
AppLocalizations.of(context).manage_account,
|
||||
style: const TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 17))),
|
||||
const SizedBox(height: 12),
|
||||
ListView.builder(
|
||||
padding: const EdgeInsets.only(left: 16, right: 8),
|
||||
key: const Key('list_manage_account_property'),
|
||||
shrinkWrap: true,
|
||||
itemCount: controller.listAccountMenuItem.length,
|
||||
itemBuilder: (context, index) => Obx(() => AccountMenuItemTileBuilder(
|
||||
context,
|
||||
_imagePaths,
|
||||
_responsiveUtils,
|
||||
controller.listAccountMenuItem[index],
|
||||
controller.dashBoardController.accountMenuItemSelected.value,
|
||||
onSelectAccountMenuItemAction: (newAccountMenuItem) =>
|
||||
controller.selectAccountMenuItem(newAccountMenuItem)))),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 16),
|
||||
child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)),
|
||||
Padding(padding: const EdgeInsets.only(left: 32),
|
||||
child: InkWell(
|
||||
onTap: () => controller.dashBoardController.logoutAction(),
|
||||
child: Row(children: [
|
||||
SvgPicture.asset(_imagePaths.icLogout, fit: BoxFit.fill),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text(AppLocalizations.of(context).sign_out,
|
||||
style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 15, color: Colors.black)))
|
||||
])
|
||||
)
|
||||
),
|
||||
]),
|
||||
)),
|
||||
]
|
||||
)
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
+10
-1
@@ -33,7 +33,7 @@ class IdentitiesController extends BaseController {
|
||||
if (success is GetAllIdentitiesSuccess) {
|
||||
if (success.identities?.isNotEmpty == true) {
|
||||
listIdentities.value = success.identities ?? [];
|
||||
selectIdentity(listIdentities.first);
|
||||
setIdentityDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -57,6 +57,15 @@ class IdentitiesController extends BaseController {
|
||||
consumeState(_getAllIdentitiesInteractor.execute(accountId));
|
||||
}
|
||||
|
||||
void setIdentityDefault() {
|
||||
try {
|
||||
final identityDefault = listIdentities.firstWhere((identity) => identity.mayDelete == false);
|
||||
selectIdentity(identityDefault);
|
||||
} catch (exception) {
|
||||
selectIdentity(listIdentities.first);
|
||||
}
|
||||
}
|
||||
|
||||
void selectIdentity(Identity? newIdentity) {
|
||||
identitySelected.value = newIdentity;
|
||||
}
|
||||
|
||||
@@ -82,8 +82,8 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
|
||||
responsiveUtils: _responsiveUtils,
|
||||
mobile: Scaffold(
|
||||
body: Container(
|
||||
margin: const EdgeInsets.symmetric(vertical: 16),
|
||||
child: Column(
|
||||
margin: const EdgeInsets.only(top: 16, bottom: 16, right: 24),
|
||||
child: SingleChildScrollView(child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
buttonSelectIdentity,
|
||||
@@ -91,7 +91,8 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
|
||||
_imagePaths,
|
||||
controller.identitySelected.value)),
|
||||
]
|
||||
)),
|
||||
))
|
||||
),
|
||||
floatingActionButton: _responsiveUtils.isMobile(context)
|
||||
? FloatingActionButton(
|
||||
key: const Key('add_new_identity'),
|
||||
@@ -101,7 +102,7 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
|
||||
: null),
|
||||
desktop: Container(
|
||||
margin: const EdgeInsets.symmetric(vertical: 24, horizontal: 16),
|
||||
child: Column(
|
||||
child: SingleChildScrollView(child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
@@ -112,7 +113,7 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
|
||||
controller.identitySelected.value,
|
||||
maxWidth: constraints.maxWidth / 2)),
|
||||
]
|
||||
)
|
||||
))
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
@@ -837,6 +837,7 @@ class ThreadController extends BaseController {
|
||||
void disableSearch() {
|
||||
emailListSearch.clear();
|
||||
mailboxDashBoardController.disableSearch();
|
||||
cancelSelectEmail();
|
||||
}
|
||||
|
||||
void _searchEmail() {
|
||||
@@ -892,7 +893,7 @@ class ThreadController extends BaseController {
|
||||
_isLoadingMore = false;
|
||||
}
|
||||
|
||||
bool isSelectionEnabled() => mailboxDashBoardController.currentSelectMode.value == SelectMode.ACTIVE;
|
||||
bool isSelectionEnabled() => mailboxDashBoardController.isSelectionEnabled();
|
||||
|
||||
void pressEmailSelectionAction(BuildContext context, EmailActionType actionType, List<PresentationEmail> selectionEmail) {
|
||||
log('ThreadController::pressEmailSelectionAction(): selectionEmail: ${selectionEmail.length}');
|
||||
@@ -1226,7 +1227,7 @@ class ThreadController extends BaseController {
|
||||
}
|
||||
|
||||
void openMailboxLeftMenu() {
|
||||
mailboxDashBoardController.openDrawer();
|
||||
mailboxDashBoardController.openMailboxMenuDrawer();
|
||||
}
|
||||
|
||||
void goToEmail(BuildContext context) {
|
||||
|
||||
@@ -75,7 +75,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin {
|
||||
),
|
||||
_buildSuggestionBox(context)
|
||||
]))),
|
||||
if (!kIsWeb) _buildListButtonSelectionForMobile(context),
|
||||
_buildListButtonSelectionForMobile(context),
|
||||
]
|
||||
)
|
||||
))
|
||||
@@ -87,7 +87,10 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin {
|
||||
|
||||
Widget _buildListButtonSelectionForMobile(BuildContext context) {
|
||||
return Obx(() {
|
||||
if (controller.isSelectionEnabled() && !_responsiveUtils.isDesktop(context) && controller.listEmailSelected.isNotEmpty) {
|
||||
if (controller.isSelectionEnabled()
|
||||
&& controller.isSearchActive()
|
||||
&& !_responsiveUtils.isDesktop(context)
|
||||
&& controller.listEmailSelected.isNotEmpty) {
|
||||
return Column(children: [
|
||||
const Divider(color: AppColor.lineItemListColor, height: 1, thickness: 0.2),
|
||||
Padding(
|
||||
|
||||
@@ -61,8 +61,8 @@ class EmailTileBuilder {
|
||||
Widget _wrapContainerForTile(Widget tile) {
|
||||
if (_responsiveUtils.isDesktop(_context)) {
|
||||
return Container(
|
||||
margin: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
|
||||
padding: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
|
||||
margin: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
|
||||
padding: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
|
||||
decoration: _selectModeAll == SelectMode.ACTIVE && _presentationEmail.selectMode == SelectMode.ACTIVE
|
||||
? BoxDecoration(borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop)
|
||||
: null,
|
||||
@@ -70,7 +70,7 @@ class EmailTileBuilder {
|
||||
} else {
|
||||
return Container(
|
||||
margin: EdgeInsets.zero,
|
||||
padding: EdgeInsets.only(bottom: 10, left: 16, right: 16),
|
||||
padding: const EdgeInsets.only(bottom: 10, left: 16, right: 16),
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(0), color: Colors.white),
|
||||
alignment: Alignment.center,
|
||||
child: tile);
|
||||
|
||||
@@ -61,8 +61,8 @@ class EmailTileBuilder {
|
||||
Widget _wrapContainerForTile(Widget tile) {
|
||||
if (_responsiveUtils.isDesktop(_context)) {
|
||||
return Container(
|
||||
margin: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
|
||||
padding: _selectModeAll == SelectMode.ACTIVE ? EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
|
||||
margin: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.only(top: 3, left: 8, right: 8) : EdgeInsets.zero,
|
||||
padding: _selectModeAll == SelectMode.ACTIVE ? const EdgeInsets.symmetric(vertical: 8) : EdgeInsets.zero,
|
||||
decoration: _selectModeAll == SelectMode.ACTIVE && _presentationEmail.selectMode == SelectMode.ACTIVE
|
||||
? BoxDecoration(borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop)
|
||||
: null,
|
||||
@@ -71,11 +71,11 @@ class EmailTileBuilder {
|
||||
} else {
|
||||
return Container(
|
||||
margin: _selectModeAll == SelectMode.ACTIVE
|
||||
? EdgeInsets.only(top: 3, left: 16, right: 16)
|
||||
? const EdgeInsets.only(top: 3, left: 16, right: 16)
|
||||
: EdgeInsets.zero,
|
||||
padding: _selectModeAll == SelectMode.ACTIVE
|
||||
? EdgeInsets.only(top: 8, bottom: 16, right: 8)
|
||||
: EdgeInsets.only(bottom: 10, left: 16, right: 16),
|
||||
? const EdgeInsets.only(top: 8, bottom: 16, right: 8)
|
||||
: const EdgeInsets.only(bottom: 10, left: 16, right: 16),
|
||||
decoration: _selectModeAll == SelectMode.ACTIVE && _presentationEmail.selectMode == SelectMode.ACTIVE
|
||||
? BoxDecoration(borderRadius: BorderRadius.circular(14), color: AppColor.colorItemEmailSelectedDesktop)
|
||||
: BoxDecoration(borderRadius: BorderRadius.circular(0), color: Colors.white),
|
||||
@@ -198,14 +198,13 @@ class EmailTileBuilder {
|
||||
onLongPress: () => _emailActionClick?.call(EmailActionType.selection, _presentationEmail),
|
||||
onHover: (value) => setState(() => isHoverItem = value),
|
||||
child: Row(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 8),
|
||||
child: GestureDetector(
|
||||
onTap: () => _emailActionClick?.call(
|
||||
_selectModeAll == SelectMode.ACTIVE ? EmailActionType.selection : EmailActionType.preview,
|
||||
_presentationEmail),
|
||||
child: _buildAvatarIcon())),
|
||||
const SizedBox(width: 12),
|
||||
GestureDetector(
|
||||
onTap: () => _emailActionClick?.call(
|
||||
_selectModeAll == SelectMode.ACTIVE ? EmailActionType.selection : EmailActionType.preview,
|
||||
_presentationEmail),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 8, right: 12),
|
||||
child: _buildAvatarIcon())),
|
||||
Expanded(child: Column(children: [
|
||||
Transform(
|
||||
transform: Matrix4.translationValues(0.0, isHoverItem ? -10.0 : 0.0, 0.0),
|
||||
@@ -507,7 +506,7 @@ class EmailTileBuilder {
|
||||
}) {
|
||||
if (_selectModeAll == SelectMode.ACTIVE) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.all(12),
|
||||
padding: const EdgeInsets.all(12),
|
||||
child: SvgPicture.asset(
|
||||
_presentationEmail.selectMode == SelectMode.ACTIVE
|
||||
? _imagePaths.icSelected
|
||||
|
||||
Reference in New Issue
Block a user