TF-4193 Show/Hide Label list when toggle label state in Setting

This commit is contained in:
dab246
2025-12-09 16:05:19 +07:00
committed by Dat H. Pham
parent 10038a3836
commit ef2ab39a3a
18 changed files with 209 additions and 24 deletions
@@ -16,4 +16,6 @@ abstract class ManageAccountDataSource {
Future<bool> getLabelVisibility();
Future<void> saveLabelVisibility(bool visible);
Future<bool> getLabelSettingState();
}
@@ -5,6 +5,7 @@ import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_
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';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
@@ -52,6 +53,10 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
await _preferencesSettingManager.updateAIScribe(
preferencesConfig.isEnabled,
);
} else if (preferencesConfig is LabelConfig) {
await _preferencesSettingManager.updateLabel(
preferencesConfig.isEnabled,
);
} else {
await _preferencesSettingManager.savePreferences(
preferencesConfig,
@@ -94,4 +99,15 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
throw error;
});
}
@override
Future<bool> getLabelSettingState() {
return Future.sync(() async {
final labelConfig = await _preferencesSettingManager.getLabelConfig();
return labelConfig.isEnabled;
}).catchError((error, stackTrace) async {
await _exceptionThrower.throwException(error, stackTrace);
throw error;
});
}
}
@@ -65,7 +65,7 @@ class PreferencesSettingManager {
return PreferencesSetting(listConfigs);
}
String _getPreferencesConfig(PreferencesConfig config) {
String _getPreferencesConfigKey(PreferencesConfig config) {
if (config is ThreadDetailConfig) {
return _preferencesSettingThreadKey;
} else if (config is SpamReportConfig) {
@@ -83,7 +83,7 @@ class PreferencesSettingManager {
Future<void> savePreferences(PreferencesConfig config) async {
await _sharedPreferences.setString(
_getPreferencesConfig(config),
_getPreferencesConfigKey(config),
jsonEncode(config.toJson()),
);
}
@@ -41,4 +41,9 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository {
Future<void> saveLabelVisibility(bool visible) {
return dataSource.saveLabelVisibility(visible);
}
@override
Future<bool> getLabelSettingState() {
return dataSource.getLabelSettingState();
}
}