Skip to content

Commit

Permalink
TF-2877 Create notification setting view
Browse files Browse the repository at this point in the history
  • Loading branch information
tddang-linagora committed Jun 4, 2024
1 parent 095f711 commit 8872c3d
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visib
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/notification/bindings/notification_binding.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart';
import 'package:tmail_ui_user/main/error/capability_validator.dart';
Expand Down Expand Up @@ -209,6 +210,9 @@ class ManageAccountDashBoardController extends ReloadableController {
case AccountMenuItem.mailboxVisibility:
MailboxVisibilityBindings().dependencies();
break;
case AccountMenuItem.notification:
NotificationBinding().dependencies();
break;
case AccountMenuItem.vacation:
case AccountMenuItem.none:
break;
Expand Down Expand Up @@ -315,6 +319,7 @@ class ManageAccountDashBoardController extends ReloadableController {
clearInputFormView();
selectAccountMenuItem(AccountMenuItem.none);
settingsPageLevel.value = SettingsPageLevel.universal;
NotificationBinding().close();
_replaceBrowserHistory();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,18 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
),
SettingFirstLevelTileBuilder(
AppLocalizations.of(context).notification,
controller.imagePaths.icNotification,
() => controller.selectSettings(AccountMenuItem.notification),
subtitle: AppLocalizations.of(context).allowsTwakeMailToNotifyYouWhenANewMessageArrivesOnYourPhone,
),
Divider(
color: AppColor.colorDividerHorizontal,
height: 1,
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
),
SettingFirstLevelTileBuilder(
AppLocalizations.of(context).sign_out,
controller.imagePaths.icSignOut,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/notification/notification_view.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/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
Expand Down Expand Up @@ -228,6 +229,8 @@ class SettingsView extends GetWidget<SettingsController> {
}
case AccountMenuItem.mailboxVisibility:
return MailboxVisibilityView();
case AccountMenuItem.notification:
return const NotificationView();
default:
return const SizedBox.shrink();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ enum AccountMenuItem {
forward,
vacation,
mailboxVisibility,
notification,
none;

String getIcon(ImagePaths imagePaths) {
Expand All @@ -29,6 +30,8 @@ enum AccountMenuItem {
return imagePaths.icVacation;
case AccountMenuItem.mailboxVisibility:
return imagePaths.icMailboxVisibility;
case AccountMenuItem.notification:
return imagePaths.icNotification;
case AccountMenuItem.none:
return imagePaths.icProfiles;
}
Expand All @@ -50,6 +53,8 @@ enum AccountMenuItem {
return AppLocalizations.of(context).vacation;
case AccountMenuItem.mailboxVisibility:
return AppLocalizations.of(context).folderVisibility;
case AccountMenuItem.notification:
return AppLocalizations.of(context).notification;
case AccountMenuItem.none:
return AppLocalizations.of(context).profiles;
}
Expand All @@ -71,6 +76,8 @@ enum AccountMenuItem {
return 'vacation';
case AccountMenuItem.mailboxVisibility:
return 'folder-visibility';
case AccountMenuItem.notification:
return 'notification';
case AccountMenuItem.none:
return 'profiles';
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/notification/notification_controller.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';

class NotificationView extends GetWidget<NotificationController> with AppLoaderMixin {
const NotificationView({super.key});

@override
Widget build(BuildContext context) {
return Container(
color: SettingsUtils.getBackgroundColor(context, controller.responsiveUtils),
padding: SettingsUtils.getMarginViewForSettingDetails(context, controller.responsiveUtils),
child: Column(
children: [
Obx(() {
if (!controller.isLoading) {
return const SizedBox(height: 3);
}
return horizontalLoadingWidget;
}),
Expanded(
child: Container(
color: SettingsUtils.getContentBackgroundColor(context, controller.responsiveUtils),
decoration: SettingsUtils.getBoxDecorationForContent(context, controller.responsiveUtils),
child: ListView(
physics: const ClampingScrollPhysics(),
children: [
Obx(() {
if (controller.notificationSettingEnabled.value == null) {
return const SizedBox.shrink();
}

return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 10),
Text(
AppLocalizations.of(context).showNotifications,
style: const TextStyle(
fontSize: 17,
height: 22 / 17,
fontWeight: FontWeight.w500,
color: Colors.black)),
const SizedBox(height: 12),
Text(
AppLocalizations.of(context).allowsTwakeMailToNotifyYouWhenANewMessageArrivesOnYourPhone,
style: const TextStyle(
fontSize: 15,
height: 20 / 15,
color: AppColor.colorSettingExplanation),
),
],
)
),
const SizedBox(width: 12),
InkWell(
onTap: controller.toggleNotificationSetting,
child: Padding(
padding: const EdgeInsets.all(4),
child: SvgPicture.asset(
controller.notificationSettingEnabled.value!
? controller.imagePaths.icSwitchOn
: controller.imagePaths.icSwitchOff,
fit: BoxFit.contain,
width: 52,
height: 32),
),
),
],
);
}),
],
),
),
),
],
),
);
}
}

0 comments on commit 8872c3d

Please sign in to comment.