TF-4193 Handle multi click to enable Label visibility feature

This commit is contained in:
dab246
2025-12-09 13:43:43 +07:00
committed by Dat H. Pham
parent d1cd9efbab
commit 10038a3836
23 changed files with 330 additions and 43 deletions
@@ -2,6 +2,7 @@ import 'package:flutter/material.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/base/setting_detail_view_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/handle_setup_label_visibility_in_setting_extension.dart';
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/preferences_option_type.dart';
@@ -51,13 +52,34 @@ class PreferencesView extends GetWidget<PreferencesController> with AppLoaderMix
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (controller.responsiveUtils.isWebDesktop(context))
const SettingHeaderWidget(
menuItem: AccountMenuItem.preferences,
padding: EdgeInsets.only(bottom: 21),
Obx(
() {
final labelVisibility = controller
.accountDashboardController.isLabelVisibility.value;
final isLabelCapabilitySupported = controller
.accountDashboardController
.isLabelCapabilitySupported;
final disableMultiClick =
labelVisibility || !isLabelCapabilitySupported;
return SettingHeaderWidget(
menuItem: AccountMenuItem.preferences,
padding: const EdgeInsets.only(bottom: 21),
onMultiClickAction: disableMultiClick
? null
: controller.accountDashboardController
.enableLabelVisibility,
);
},
),
Obx(() {
final settingOption = controller.settingOption.value;
final localSettingOption = controller.localSettings.value;
final isLabelVisibility = controller
.accountDashboardController
.isLabelVisibility;
if (settingOption == null &&
localSettingOption.configs.isEmpty) {
@@ -75,12 +97,15 @@ class PreferencesView extends GetWidget<PreferencesController> with AppLoaderMix
...PreferencesOptionType.values.where(
(type) =>
type.isLocal &&
type != PreferencesOptionType.label &&
(type != PreferencesOptionType.aiScribe ||
controller.isAIScribeCapabilityAvailable),
),
if (settingOption != null &&
controller.isAICapabilitySupported)
PreferencesOptionType.aiNeedsAction,
if (isLabelVisibility.isTrue)
PreferencesOptionType.label,
];
return Expanded(