TF-4082 Setup text formatting menu state from user's preferences in composer
This commit is contained in:
@@ -656,6 +656,12 @@ class ComposerController extends BaseController
|
|||||||
responsiveUtils.isWebDesktop(currentContext!)) {
|
responsiveUtils.isWebDesktop(currentContext!)) {
|
||||||
await setupSelectedIdentityWithoutApplySignature();
|
await setupSelectedIdentityWithoutApplySignature();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PlatformInfo.isWeb) {
|
||||||
|
richTextWebController?.updateFormattingOptions(
|
||||||
|
mailboxDashBoardController.isTextFormattingMenuOpened.value,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void initAttachmentsAndInlineImages({
|
void initAttachmentsAndInlineImages({
|
||||||
|
|||||||
@@ -317,6 +317,12 @@ class RichTextWebController extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateFormattingOptions(bool isDisplayed) {
|
||||||
|
formattingOptionsState.value = isDisplayed
|
||||||
|
? FormattingOptionsState.enabled
|
||||||
|
: FormattingOptionsState.disabled;
|
||||||
|
}
|
||||||
|
|
||||||
bool get isFormattingOptionsEnabled => formattingOptionsState.value == FormattingOptionsState.enabled;
|
bool get isFormattingOptionsEnabled => formattingOptionsState.value == FormattingOptionsState.enabled;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
|
||||||
|
class GettingTextFormattingMenuState extends LoadingState {}
|
||||||
|
|
||||||
|
class GetTextFormattingMenuStateSuccess extends UIState {
|
||||||
|
final bool isDisplayed;
|
||||||
|
|
||||||
|
GetTextFormattingMenuStateSuccess(this.isDisplayed);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [isDisplayed];
|
||||||
|
}
|
||||||
|
|
||||||
|
class GetTextFormattingMenuStateFailure extends FeatureFailure {
|
||||||
|
GetTextFormattingMenuStateFailure(dynamic exception) : super(exception: exception);
|
||||||
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
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/mailbox_dashboard/domain/state/get_text_formatting_menu_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
|
||||||
|
|
||||||
|
class GetTextFormattingMenuStateInteractor {
|
||||||
|
final ManageAccountRepository _manageAccountRepository;
|
||||||
|
|
||||||
|
GetTextFormattingMenuStateInteractor(this._manageAccountRepository);
|
||||||
|
|
||||||
|
Stream<Either<Failure, Success>> execute() async* {
|
||||||
|
try {
|
||||||
|
yield Right(GettingTextFormattingMenuState());
|
||||||
|
final preferencesSetting =
|
||||||
|
await _manageAccountRepository.getLocalSettings();
|
||||||
|
yield Right(GetTextFormattingMenuStateSuccess(
|
||||||
|
preferencesSetting.textFormattingMenuConfig.isDisplayed,
|
||||||
|
));
|
||||||
|
} catch (exception) {
|
||||||
|
yield Left(GetTextFormattingMenuStateFailure(exception));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -13,7 +13,7 @@ class RemoveAllComposerCacheOnWebInteractor {
|
|||||||
|
|
||||||
Future<Either<Failure, Success>> execute(AccountId accountId, UserName userName) async {
|
Future<Either<Failure, Success>> execute(AccountId accountId, UserName userName) async {
|
||||||
try {
|
try {
|
||||||
composerCacheRepository.removeAllComposerCacheOnWeb(accountId, userName);
|
await composerCacheRepository.removeAllComposerCacheOnWeb(accountId, userName,);
|
||||||
return Right(RemoveComposerCacheSuccess());
|
return Right(RemoveComposerCacheSuccess());
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
return Left(RemoveComposerCacheFailure(exception));
|
return Left(RemoveComposerCacheFailure(exception));
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ class RemoveComposerCacheByIdOnWebInteractor {
|
|||||||
String composerId,
|
String composerId,
|
||||||
) async {
|
) async {
|
||||||
try {
|
try {
|
||||||
composerCacheRepository.removeComposerCacheByIdOnWeb(
|
await composerCacheRepository.removeComposerCacheByIdOnWeb(
|
||||||
accountId,
|
accountId,
|
||||||
userName,
|
userName,
|
||||||
composerId,
|
composerId,
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_com
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_mailbox_cached_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_mailbox_cached_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_text_formatting_menu_state_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
|
||||||
@@ -111,7 +112,9 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.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/preferences_setting_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/repository/identity_repository.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/repository/identity_repository.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_all_identities_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/presentation/bindings/setting_interactor_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/identities/identity_interactors_bindings.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/identities/identity_interactors_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/identities/utils/identity_utils.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/identities/utils/identity_utils.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_manager.dart';
|
||||||
@@ -401,6 +404,13 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
PaywallBindings().dependencies();
|
PaywallBindings().dependencies();
|
||||||
|
|
||||||
DownloadInteractorBindings().dependencies();
|
DownloadInteractorBindings().dependencies();
|
||||||
|
|
||||||
|
SettingInteractorBindings().dependencies();
|
||||||
|
Get.lazyPut(
|
||||||
|
() => GetTextFormattingMenuStateInteractor(
|
||||||
|
Get.find<ManageAccountRepository>(),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
+10
@@ -104,9 +104,11 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/exceptions/spam_
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_stored_email_sort_order_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_stored_email_sort_order_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_text_formatting_menu_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_text_formatting_menu_state_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
|
||||||
@@ -133,6 +135,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/select_search_filter_action_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/select_search_filter_action_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_text_formatting_menu_state_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/web_auth_redirect_processor_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/web_auth_redirect_processor_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
|
||||||
@@ -265,6 +268,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
GetServerSettingInteractor? getServerSettingInteractor;
|
GetServerSettingInteractor? getServerSettingInteractor;
|
||||||
CreateNewEmailRuleFilterInteractor? createNewEmailRuleFilterInteractor;
|
CreateNewEmailRuleFilterInteractor? createNewEmailRuleFilterInteractor;
|
||||||
SaveLanguageInteractor? saveLanguageInteractor;
|
SaveLanguageInteractor? saveLanguageInteractor;
|
||||||
|
GetTextFormattingMenuStateInteractor? getTextFormattingMenuStateInteractor;
|
||||||
|
|
||||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
final selectedMailbox = Rxn<PresentationMailbox>();
|
final selectedMailbox = Rxn<PresentationMailbox>();
|
||||||
@@ -295,6 +299,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
final isContextMenuOpened = RxBool(false);
|
final isContextMenuOpened = RxBool(false);
|
||||||
final isPopupMenuOpened = RxBool(false);
|
final isPopupMenuOpened = RxBool(false);
|
||||||
final octetsQuota = Rxn<Quota>();
|
final octetsQuota = Rxn<Quota>();
|
||||||
|
final isTextFormattingMenuOpened = RxBool(false);
|
||||||
|
|
||||||
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
||||||
Map<MailboxId, PresentationMailbox> mapMailboxById = {};
|
Map<MailboxId, PresentationMailbox> mapMailboxById = {};
|
||||||
@@ -383,6 +388,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
listSearchFilterScrollController = ScrollController();
|
listSearchFilterScrollController = ScrollController();
|
||||||
twakeAppManager.setExecutingBeforeReconnect(false);
|
twakeAppManager.setExecutingBeforeReconnect(false);
|
||||||
registerReactiveObxVariableListener();
|
registerReactiveObxVariableListener();
|
||||||
|
initialTextFormattingMenuState();
|
||||||
}
|
}
|
||||||
if (PlatformInfo.isIOS) {
|
if (PlatformInfo.isIOS) {
|
||||||
_registerPendingCurrentEmailIdInNotification();
|
_registerPendingCurrentEmailIdInNotification();
|
||||||
@@ -512,6 +518,8 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
);
|
);
|
||||||
} else if (success is GetStoredEmailSortOrderSuccess) {
|
} else if (success is GetStoredEmailSortOrderSuccess) {
|
||||||
setUpDefaultEmailSortOrder(success.emailSortOrderType);
|
setUpDefaultEmailSortOrder(success.emailSortOrderType);
|
||||||
|
} else if (success is GetTextFormattingMenuStateSuccess) {
|
||||||
|
updateTextFormattingMenuState(success.isDisplayed);
|
||||||
} else {
|
} else {
|
||||||
super.handleSuccessViewState(success);
|
super.handleSuccessViewState(success);
|
||||||
}
|
}
|
||||||
@@ -557,6 +565,8 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
tryGetAuthenticatedAccountToUseApp();
|
tryGetAuthenticatedAccountToUseApp();
|
||||||
} else if (isGetTokenOIDCFailure(failure)) {
|
} else if (isGetTokenOIDCFailure(failure)) {
|
||||||
backToHomeScreen();
|
backToHomeScreen();
|
||||||
|
} else if (failure is GetTextFormattingMenuStateFailure) {
|
||||||
|
updateTextFormattingMenuState(false);
|
||||||
} else {
|
} else {
|
||||||
super.handleFailureViewState(failure);
|
super.handleFailureViewState(failure);
|
||||||
}
|
}
|
||||||
|
|||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_text_formatting_menu_state_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
|
extension UpdateTextFormattingMenuStateExtension on MailboxDashBoardController {
|
||||||
|
void initialTextFormattingMenuState() {
|
||||||
|
getTextFormattingMenuStateInteractor =
|
||||||
|
getBinding<GetTextFormattingMenuStateInteractor>();
|
||||||
|
if (getTextFormattingMenuStateInteractor == null) return;
|
||||||
|
|
||||||
|
consumeState(getTextFormattingMenuStateInteractor!.execute());
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateTextFormattingMenuState(bool isDisplayed) {
|
||||||
|
isTextFormattingMenuOpened.value = isDisplayed;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import 'package:tmail_ui_user/features/manage_account/data/local/preferences_set
|
|||||||
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_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/preferences_setting.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/text_formatting_menu_config.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/thread_detail_config.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/thread_detail_config.dart';
|
||||||
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
|
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
|
||||||
|
|
||||||
@@ -39,6 +40,10 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
|
|||||||
await _preferencesSettingManager.updateSpamReport(
|
await _preferencesSettingManager.updateSpamReport(
|
||||||
isEnabled: preferencesConfig.isEnabled,
|
isEnabled: preferencesConfig.isEnabled,
|
||||||
);
|
);
|
||||||
|
} else if (preferencesConfig is TextFormattingMenuConfig) {
|
||||||
|
await _preferencesSettingManager.updateTextFormattingMenu(
|
||||||
|
isDisplayed: preferencesConfig.isDisplayed,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
await _preferencesSettingManager.savePreferences(
|
await _preferencesSettingManager.savePreferences(
|
||||||
preferencesConfig,
|
preferencesConfig,
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/e
|
|||||||
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_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/preferences_setting.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/text_formatting_menu_config.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/thread_detail_config.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/thread_detail_config.dart';
|
||||||
|
|
||||||
class PreferencesSettingManager {
|
class PreferencesSettingManager {
|
||||||
@@ -14,6 +15,8 @@ class PreferencesSettingManager {
|
|||||||
'${_preferencesSettingKey}_THREAD';
|
'${_preferencesSettingKey}_THREAD';
|
||||||
static const String _preferencesSettingSpamReportKey =
|
static const String _preferencesSettingSpamReportKey =
|
||||||
'${_preferencesSettingKey}_SPAM_REPORT';
|
'${_preferencesSettingKey}_SPAM_REPORT';
|
||||||
|
static const String _preferencesSettingTextFormattingMenuKey =
|
||||||
|
'${_preferencesSettingKey}_TEXT_FORMATTING_MENU';
|
||||||
|
|
||||||
const PreferencesSettingManager(this._sharedPreferences);
|
const PreferencesSettingManager(this._sharedPreferences);
|
||||||
|
|
||||||
@@ -36,6 +39,8 @@ class PreferencesSettingManager {
|
|||||||
return ThreadDetailConfig.fromJson(jsonDecoded);
|
return ThreadDetailConfig.fromJson(jsonDecoded);
|
||||||
case _preferencesSettingSpamReportKey:
|
case _preferencesSettingSpamReportKey:
|
||||||
return SpamReportConfig.fromJson(jsonDecoded);
|
return SpamReportConfig.fromJson(jsonDecoded);
|
||||||
|
case _preferencesSettingTextFormattingMenuKey:
|
||||||
|
return TextFormattingMenuConfig.fromJson(jsonDecoded);
|
||||||
default:
|
default:
|
||||||
return DefaultPreferencesConfig.fromJson(jsonDecoded);
|
return DefaultPreferencesConfig.fromJson(jsonDecoded);
|
||||||
}
|
}
|
||||||
@@ -61,6 +66,11 @@ class PreferencesSettingManager {
|
|||||||
_preferencesSettingSpamReportKey,
|
_preferencesSettingSpamReportKey,
|
||||||
jsonEncode(config.toJson()),
|
jsonEncode(config.toJson()),
|
||||||
);
|
);
|
||||||
|
} else if (config is TextFormattingMenuConfig) {
|
||||||
|
await _sharedPreferences.setString(
|
||||||
|
_preferencesSettingTextFormattingMenuKey,
|
||||||
|
jsonEncode(config.toJson()),
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
await _sharedPreferences.setString(
|
await _sharedPreferences.setString(
|
||||||
_preferencesSettingKey,
|
_preferencesSettingKey,
|
||||||
@@ -110,4 +120,22 @@ class PreferencesSettingManager {
|
|||||||
? ThreadDetailConfig.initial()
|
? ThreadDetailConfig.initial()
|
||||||
: ThreadDetailConfig.fromJson(jsonDecode(jsonString));
|
: ThreadDetailConfig.fromJson(jsonDecode(jsonString));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<TextFormattingMenuConfig> getTextFormattingMenuConfig() async {
|
||||||
|
await _sharedPreferences.reload();
|
||||||
|
|
||||||
|
final jsonString = _sharedPreferences.getString(
|
||||||
|
_preferencesSettingTextFormattingMenuKey,
|
||||||
|
);
|
||||||
|
|
||||||
|
return jsonString == null
|
||||||
|
? TextFormattingMenuConfig.initial()
|
||||||
|
: TextFormattingMenuConfig.fromJson(jsonDecode(jsonString));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> updateTextFormattingMenu({required bool isDisplayed}) async {
|
||||||
|
final currentConfig = await getTextFormattingMenuConfig();
|
||||||
|
final updatedConfig = currentConfig.copyWith(isDisplayed: isDisplayed);
|
||||||
|
await savePreferences(updatedConfig);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:collection/collection.dart';
|
|||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.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_config.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/text_formatting_menu_config.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/thread_detail_config.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/thread_detail_config.dart';
|
||||||
|
|
||||||
class PreferencesSetting with EquatableMixin {
|
class PreferencesSetting with EquatableMixin {
|
||||||
@@ -13,6 +14,7 @@ class PreferencesSetting with EquatableMixin {
|
|||||||
return PreferencesSetting([
|
return PreferencesSetting([
|
||||||
ThreadDetailConfig.initial(),
|
ThreadDetailConfig.initial(),
|
||||||
SpamReportConfig.initial(),
|
SpamReportConfig.initial(),
|
||||||
|
TextFormattingMenuConfig.initial(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,6 +38,16 @@ class PreferencesSetting with EquatableMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TextFormattingMenuConfig get textFormattingMenuConfig {
|
||||||
|
final formatConfig = configs
|
||||||
|
.firstWhereOrNull((config) => config is TextFormattingMenuConfig);
|
||||||
|
if (formatConfig != null) {
|
||||||
|
return formatConfig as TextFormattingMenuConfig;
|
||||||
|
} else {
|
||||||
|
return TextFormattingMenuConfig.initial();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [configs];
|
List<Object?> get props => [configs];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,12 +14,7 @@ class SpamReportConfig extends PreferencesConfig {
|
|||||||
this.lastTimeDismissedMilliseconds = 0,
|
this.lastTimeDismissedMilliseconds = 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory SpamReportConfig.initial() {
|
factory SpamReportConfig.initial() => SpamReportConfig();
|
||||||
return SpamReportConfig(
|
|
||||||
isEnabled: true,
|
|
||||||
lastTimeDismissedMilliseconds: 0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
factory SpamReportConfig.fromJson(Map<String, dynamic> json) =>
|
factory SpamReportConfig.fromJson(Map<String, dynamic> json) =>
|
||||||
_$SpamReportConfigFromJson(json);
|
_$SpamReportConfigFromJson(json);
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/preferences_config.dart';
|
||||||
|
|
||||||
|
part 'text_formatting_menu_config.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class TextFormattingMenuConfig extends PreferencesConfig {
|
||||||
|
final bool isDisplayed;
|
||||||
|
|
||||||
|
TextFormattingMenuConfig({this.isDisplayed = false});
|
||||||
|
|
||||||
|
factory TextFormattingMenuConfig.initial() => TextFormattingMenuConfig();
|
||||||
|
|
||||||
|
factory TextFormattingMenuConfig.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$TextFormattingMenuConfigFromJson(json);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Map<String, dynamic> toJson() => _$TextFormattingMenuConfigToJson(this);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [isDisplayed];
|
||||||
|
}
|
||||||
|
|
||||||
|
extension TextFormattingMenuConfigExtension on TextFormattingMenuConfig {
|
||||||
|
TextFormattingMenuConfig copyWith({bool? isDisplayed}) {
|
||||||
|
return TextFormattingMenuConfig(
|
||||||
|
isDisplayed: isDisplayed ?? this.isDisplayed,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,11 +9,7 @@ class ThreadDetailConfig extends PreferencesConfig {
|
|||||||
|
|
||||||
ThreadDetailConfig({this.isEnabled = false});
|
ThreadDetailConfig({this.isEnabled = false});
|
||||||
|
|
||||||
factory ThreadDetailConfig.initial() {
|
factory ThreadDetailConfig.initial() => ThreadDetailConfig();
|
||||||
return ThreadDetailConfig(
|
|
||||||
isEnabled: false,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
factory ThreadDetailConfig.fromJson(Map<String, dynamic> json) =>
|
factory ThreadDetailConfig.fromJson(Map<String, dynamic> json) =>
|
||||||
_$ThreadDetailConfigFromJson(json);
|
_$ThreadDetailConfigFromJson(json);
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart';
|
||||||
|
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/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/main/exceptions/cache_exception_thrower.dart';
|
||||||
|
|
||||||
|
class SettingInteractorBindings extends InteractorsBindings {
|
||||||
|
@override
|
||||||
|
void bindingsDataSource() {
|
||||||
|
Get.lazyPut<ManageAccountDataSource>(
|
||||||
|
() => Get.find<ManageAccountDataSourceImpl>(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void bindingsDataSourceImpl() {
|
||||||
|
Get.lazyPut(
|
||||||
|
() => ManageAccountDataSourceImpl(
|
||||||
|
Get.find<LanguageCacheManager>(),
|
||||||
|
Get.find<PreferencesSettingManager>(),
|
||||||
|
Get.find<CacheExceptionThrower>(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void bindingsInteractor() {}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void bindingsRepository() {
|
||||||
|
Get.lazyPut<ManageAccountRepository>(
|
||||||
|
() => Get.find<ManageAccountRepositoryImpl>(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void bindingsRepositoryImpl() {
|
||||||
|
Get.lazyPut(
|
||||||
|
() => ManageAccountRepositoryImpl(Get.find<ManageAccountDataSource>()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,58 +1,20 @@
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/bindings/setting_interactor_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart';
|
|
||||||
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/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/presentation/identities/identity_bindings.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/identities/identity_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_bindings.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_bindings.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/paywall/presentation/paywall_bindings.dart';
|
import 'package:tmail_ui_user/features/paywall/presentation/paywall_bindings.dart';
|
||||||
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
|
|
||||||
|
|
||||||
class ManageAccountDashBoardBindings extends BaseBindings {
|
class ManageAccountDashBoardBindings extends Bindings {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dependencies() {
|
void dependencies() {
|
||||||
super.dependencies();
|
SettingInteractorBindings().dependencies();
|
||||||
|
PaywallBindings().dependencies();
|
||||||
|
Get.put(ManageAccountDashBoardController());
|
||||||
SettingsBindings().dependencies();
|
SettingsBindings().dependencies();
|
||||||
ManageAccountMenuBindings().dependencies();
|
ManageAccountMenuBindings().dependencies();
|
||||||
IdentityBindings().dependencies();
|
IdentityBindings().dependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsController() {
|
|
||||||
Get.put(ManageAccountDashBoardController());
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsDataSource() {
|
|
||||||
Get.lazyPut<ManageAccountDataSource>(() => Get.find<ManageAccountDataSourceImpl>());
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsDataSourceImpl() {
|
|
||||||
Get.lazyPut(() => ManageAccountDataSourceImpl(
|
|
||||||
Get.find<LanguageCacheManager>(),
|
|
||||||
Get.find<PreferencesSettingManager>(),
|
|
||||||
Get.find<CacheExceptionThrower>()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsInteractor() {
|
|
||||||
PaywallBindings().dependencies();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsRepository() {
|
|
||||||
Get.lazyPut<ManageAccountRepository>(() => Get.find<ManageAccountRepositoryImpl>());
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsRepositoryImpl() {
|
|
||||||
Get.lazyPut(() => ManageAccountRepositoryImpl(Get.find<ManageAccountDataSource>()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user