TF-4354 Remove all logic related to Label Visibility in Settings

This commit is contained in:
dab246
2026-03-04 11:40:52 +07:00
committed by Dat H. Pham
parent de083b3aff
commit 777b47159d
18 changed files with 5 additions and 227 deletions
@@ -13,9 +13,5 @@ abstract class ManageAccountDataSource {
Future<AIScribeConfig> getAiScribeConfigLocalSettings();
Future<bool> getLabelVisibility();
Future<void> saveLabelVisibility(bool visible);
Future<bool> getLabelSettingState();
}
@@ -4,7 +4,6 @@ import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_acc
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/domain/model/preferences/ai_scribe_config.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/setting_cache_manager.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/label_config.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/preferences_config.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/preferences_setting.dart';
@@ -17,13 +16,11 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
final LanguageCacheManager _languageCacheManager;
final PreferencesSettingManager _preferencesSettingManager;
final SettingCacheManager _settingCacheManager;
final ExceptionThrower _exceptionThrower;
ManageAccountDataSourceImpl(
this._languageCacheManager,
this._preferencesSettingManager,
this._settingCacheManager,
this._exceptionThrower
);
@@ -80,20 +77,6 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
}).catchError(_exceptionThrower.throwException);
}
@override
Future<bool> getLabelVisibility() {
return Future.sync(() {
return _settingCacheManager.getLabelVisibility();
}).catchError(_exceptionThrower.throwException);
}
@override
Future<void> saveLabelVisibility(bool visible) {
return Future.sync(() async {
return await _settingCacheManager.saveLabelVisibility(visible);
}).catchError(_exceptionThrower.throwException);
}
@override
Future<bool> getLabelSettingState() {
return Future.sync(() async {
@@ -1,17 +0,0 @@
import 'package:shared_preferences/shared_preferences.dart';
class SettingCacheManager {
static const String _labelVisibilitySettingKey = 'LABEL_VISIBILITY';
const SettingCacheManager(this._sharedPreferences);
final SharedPreferences _sharedPreferences;
bool getLabelVisibility() {
return _sharedPreferences.getBool(_labelVisibilitySettingKey) ?? true;
}
Future<void> saveLabelVisibility(bool visible) async {
await _sharedPreferences.setBool(_labelVisibilitySettingKey, visible);
}
}
@@ -32,16 +32,6 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository {
return dataSource.getAiScribeConfigLocalSettings();
}
@override
Future<bool> getLabelVisibility() {
return dataSource.getLabelVisibility();
}
@override
Future<void> saveLabelVisibility(bool visible) {
return dataSource.saveLabelVisibility(visible);
}
@override
Future<bool> getLabelSettingState() {
return dataSource.getLabelSettingState();
@@ -13,9 +13,5 @@ abstract class ManageAccountRepository {
Future<AIScribeConfig> getAiScribeConfigLocalSettings();
Future<bool> getLabelVisibility();
Future<void> saveLabelVisibility(bool visible);
Future<bool> getLabelSettingState();
}
@@ -1,17 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class GettingLabelVisibility extends LoadingState {}
class GetLabelVisibilitySuccess extends UIState {
final bool visible;
GetLabelVisibilitySuccess(this.visible);
@override
List<Object?> get props => [...super.props, visible];
}
class GetLabelVisibilityFailure extends FeatureFailure {
GetLabelVisibilityFailure(dynamic exception) : super(exception: exception);
}
@@ -1,10 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class SavingLabelVisibility extends LoadingState {}
class SaveLabelVisibilitySuccess extends UIState {}
class SaveLabelVisibilityFailure extends FeatureFailure {
SaveLabelVisibilityFailure(dynamic exception) : super(exception: exception);
}
@@ -1,21 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_label_visibility_state.dart';
class GetLabelVisibilityInteractor {
final ManageAccountRepository _manageAccountRepository;
GetLabelVisibilityInteractor(this._manageAccountRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right(GettingLabelVisibility());
final visible = await _manageAccountRepository.getLabelVisibility();
yield Right(GetLabelVisibilitySuccess(visible));
} catch (exception) {
yield Left(GetLabelVisibilityFailure(exception));
}
}
}
@@ -1,21 +0,0 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/save_label_visibility_state.dart';
class SaveLabelVisibilityInteractor {
final ManageAccountRepository _manageAccountRepository;
SaveLabelVisibilityInteractor(this._manageAccountRepository);
Stream<Either<Failure, Success>> execute({bool visible = true}) async* {
try {
yield Right(SavingLabelVisibility());
await _manageAccountRepository.saveLabelVisibility(visible);
yield Right(SaveLabelVisibilitySuccess());
} catch (exception) {
yield Left(SaveLabelVisibilityFailure(exception));
}
}
}
@@ -4,12 +4,9 @@ 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/get_label_setting_state_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_label_visibility_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/save_label_visibility_interactor.dart';
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
class SettingInteractorBindings extends InteractorsBindings {
@@ -26,7 +23,6 @@ class SettingInteractorBindings extends InteractorsBindings {
() => ManageAccountDataSourceImpl(
Get.find<LanguageCacheManager>(),
Get.find<PreferencesSettingManager>(),
Get.find<SettingCacheManager>(),
Get.find<CacheExceptionThrower>(),
),
);
@@ -34,12 +30,6 @@ class SettingInteractorBindings extends InteractorsBindings {
@override
void bindingsInteractor() {
Get.lazyPut(
() => SaveLabelVisibilityInteractor(Get.find<ManageAccountRepository>()),
);
Get.lazyPut(
() => GetLabelVisibilityInteractor(Get.find<ManageAccountRepository>()),
);
Get.lazyPut(
() => GetLabelSettingStateInteractor(Get.find<ManageAccountRepository>()),
);
@@ -1,10 +1,6 @@
import 'package:labels/utils/labels_constants.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_label_visibility_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/save_label_visibility_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
import 'package:tmail_ui_user/main/error/capability_validator.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
extension HandleSetupLabelVisibilityInSettingExtension
on ManageAccountDashBoardController {
@@ -16,33 +12,4 @@ extension HandleSetupLabelVisibilityInSettingExtension
accountId.value!,
);
}
void enableLabelVisibility() {
isLabelVisibilityEnabled.value = true;
saveLabelVisibilityInteractor = getBinding<SaveLabelVisibilityInteractor>();
if (saveLabelVisibilityInteractor != null) {
consumeState(saveLabelVisibilityInteractor!.execute());
}
if (currentOverlayContext != null && currentContext != null) {
appToast.showToastSuccessMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).theLabelFeatureIsNowAvailable,
);
}
}
void setUpLabelVisibility() {
getLabelVisibilityInteractor = getBinding<GetLabelVisibilityInteractor>();
if (getLabelVisibilityInteractor != null) {
consumeState(getLabelVisibilityInteractor!.execute());
} else {
isLabelVisibilityEnabled.value = false;
}
}
void handleGetLabelVisibilitySuccess(bool visible) {
isLabelVisibilityEnabled.value = visible;
}
}
@@ -26,11 +26,8 @@ import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.d
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/export_trace_log_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_label_visibility_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_label_visibility_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/save_label_visibility_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/action/dashboard_setting_action.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_bindings.dart';
@@ -69,8 +66,6 @@ class ManageAccountDashBoardController extends ReloadableController
UpdateVacationInteractor? _updateVacationInteractor;
PaywallController? paywallController;
GetQuotasInteractor? getQuotasInteractor;
SaveLabelVisibilityInteractor? saveLabelVisibilityInteractor;
GetLabelVisibilityInteractor? getLabelVisibilityInteractor;
final accountId = Rxn<AccountId>();
final accountMenuItemSelected = AccountMenuItem.profiles.obs;
@@ -78,7 +73,7 @@ class ManageAccountDashBoardController extends ReloadableController
final vacationResponse = Rxn<VacationResponse>();
final dashboardSettingAction = Rxn<UIAction>();
final octetsQuota = Rxn<Quota>();
final isLabelVisibilityEnabled = RxBool(PlatformInfo.isIntegrationTesting);
final isLabelVisibilityEnabled = RxBool(false);
Uri? previousUri;
AccountMenuItem? selectedMenu;
@@ -110,8 +105,6 @@ class ManageAccountDashBoardController extends ReloadableController
handleExportTraceLogSuccess(success);
} else if (success is GetQuotasSuccess) {
handleGetQuotasSuccess(success);
} else if (success is GetLabelVisibilitySuccess) {
handleGetLabelVisibilitySuccess(success.visible);
} else {
super.handleSuccessViewState(success);
}
@@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_view.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/extensions/vacation_response_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/validate_setting_capability_supported_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_view.dart';
@@ -30,17 +29,6 @@ class SettingsView extends GetWidget<SettingsController> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Obx(() {
final labelVisibility = controller
.manageAccountDashboardController
.isLabelVisibilityEnabled
.value;
final isLabelCapabilitySupported = controller
.manageAccountDashboardController
.isLabelCapabilitySupported;
final disableMultiClick =
labelVisibility || !isLabelCapabilitySupported;
return SettingAppBar(
pageLevel: controller
.manageAccountDashboardController
@@ -55,9 +43,6 @@ class SettingsView extends GetWidget<SettingsController> {
onBackAction: () => controller.onBackSettingAction(context),
onExportTraceLogAction: () =>
controller.showExportTraceLogConfirmDialog(context),
onMultiClickAction: disableMultiClick
? null
: controller.manageAccountDashboardController.enableLabelVisibility,
);
}),
Obx(() {
@@ -4,7 +4,6 @@ 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';
@@ -45,7 +44,6 @@ class PreferencesInteractorsBindings extends InteractorsBindings {
Get.lazyPut(() => ManageAccountDataSourceImpl(
Get.find<LanguageCacheManager>(),
Get.find<PreferencesSettingManager>(),
Get.find<SettingCacheManager>(),
Get.find<CacheExceptionThrower>(),
), tag: composerId);
}
@@ -2,7 +2,6 @@ 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';
@@ -52,27 +51,9 @@ class PreferencesView extends GetWidget<PreferencesController> with AppLoaderMix
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (controller.responsiveUtils.isWebDesktop(context))
Obx(
() {
final labelVisibility = controller
.accountDashboardController.isLabelVisibilityEnabled.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,
);
},
const SettingHeaderWidget(
menuItem: AccountMenuItem.preferences,
padding: EdgeInsets.only(bottom: 21),
),
Obx(() {
final settingOption = controller.settingOption.value;
+1 -7
View File
@@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-26T09:26:54.654131",
"@@last_modified": "2026-03-04T11:35:04.572137",
"initializing_data": "Initializing data...",
"@initializing_data": {
"type": "text",
@@ -5284,12 +5284,6 @@
"placeholders_order": [],
"placeholders": {}
},
"theLabelFeatureIsNowAvailable": "The label feature is now available.",
"@theLabelFeatureIsNowAvailable": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"labelAs": "Label as",
"@labelAs": {
"type": "text",
@@ -36,7 +36,6 @@ import 'package:tmail_ui_user/features/mailbox/data/local/state_cache_manager.da
import 'package:tmail_ui_user/features/mailbox_dashboard/data/local/local_sort_order_manager.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/offline_mode/manager/new_email_cache_manager.dart';
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_worker_queue.dart';
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_manager.dart';
@@ -95,7 +94,6 @@ class LocalBindings extends Bindings {
Get.put(SessionHiveCacheClient());
Get.put(SessionCacheManager(Get.find<SessionHiveCacheClient>()));
Get.put(LocalSortOrderManager(Get.find<SharedPreferences>()));
Get.put(SettingCacheManager(Get.find<SharedPreferences>()));
Get.put(CachingManager(
Get.find<MailboxCacheManager>(),
Get.find<StateCacheManager>(),
@@ -5613,13 +5613,6 @@ class AppLocalizations {
);
}
String get theLabelFeatureIsNowAvailable {
return Intl.message(
'The label feature is now available.',
name: 'theLabelFeatureIsNowAvailable',
);
}
String get labelAs {
return Intl.message(
'Label as',