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
@@ -13,18 +13,18 @@ class PreferencesBindings extends Bindings {
void dependencies() {
PreferencesInteractorsBindings().dependencies();
Get.lazyPut(() => PreferencesController(
Get.find<GetServerSettingInteractor>(),
Get.find<UpdateServerSettingInteractor>(),
Get.find<GetLocalSettingsInteractor>(),
Get.find<UpdateLocalSettingsInteractor>(),
));
Get.lazyPut(() => GetLocalSettingsInteractor(
Get.find<ManageAccountRepository>(),
));
Get.lazyPut(() => UpdateLocalSettingsInteractor(
Get.find<ManageAccountRepository>(),
));
Get.lazyPut(() => PreferencesController(
Get.find<GetServerSettingInteractor>(),
Get.find<UpdateServerSettingInteractor>(),
Get.find<GetLocalSettingsInteractor>(),
Get.find<UpdateLocalSettingsInteractor>(),
));
}
}
@@ -4,6 +4,7 @@ import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_acc
import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/preferences_setting_manager.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/setting_cache_manager.dart';
import 'package:tmail_ui_user/features/manage_account/data/repository/manage_account_repository_impl.dart';
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/save_language_interactor.dart';
@@ -44,6 +45,7 @@ class PreferencesInteractorsBindings extends InteractorsBindings {
Get.lazyPut(() => ManageAccountDataSourceImpl(
Get.find<LanguageCacheManager>(),
Get.find<PreferencesSettingManager>(),
Get.find<SettingCacheManager>(),
Get.find<CacheExceptionThrower>(),
), tag: composerId);
}
@@ -48,7 +48,7 @@ class PreferencesController extends BaseController {
(failure) => false,
(success) => success is GettingServerSetting || success is UpdatingServerSetting);
final _manageAccountDashBoardController = Get.find<ManageAccountDashBoardController>();
final accountDashboardController = Get.find<ManageAccountDashBoardController>();
bool get isAICapabilitySupported {
return _manageAccountDashBoardController.isAICapabilitySupported;
@@ -128,7 +128,7 @@ class PreferencesController extends BaseController {
void _getSettingOption() {
consumeState(_getLocalSettingInteractor.execute());
final accountId = _manageAccountDashBoardController.accountId.value;
final accountId = accountDashboardController.accountId.value;
if (accountId != null) {
consumeState(_getServerSettingInteractor.execute(accountId));
} else {
@@ -196,8 +196,8 @@ class PreferencesController extends BaseController {
break;
}
final session = _manageAccountDashBoardController.sessionCurrent;
final accountId = _manageAccountDashBoardController.accountId.value;
final session = accountDashboardController.sessionCurrent;
final accountId = accountDashboardController.accountId.value;
if (session != null && accountId != null && newSettingOption != null) {
consumeState(
_updateServerSettingInteractor.execute(
@@ -215,7 +215,6 @@ class PreferencesController extends BaseController {
}
}
@override
void onClose() {
_appLifecycleListener?.dispose();
@@ -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(