TF-4082 Save text formatting menu state to user's preferences when send email or close composer

This commit is contained in:
dab246
2025-10-02 16:02:49 +07:00
committed by Dat H. Pham
parent 2e54493a69
commit 6a78d57619
7 changed files with 74 additions and 0 deletions
@@ -0,0 +1,17 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class SavingTextFormattingMenuState extends LoadingState {}
class SaveTextFormattingMenuStateSuccess extends UIState {
final bool isDisplayed;
SaveTextFormattingMenuStateSuccess(this.isDisplayed);
@override
List<Object?> get props => [isDisplayed];
}
class SaveTextFormattingMenuStateFailure extends FeatureFailure {
SaveTextFormattingMenuStateFailure(dynamic exception) : super(exception: exception);
}
@@ -0,0 +1,26 @@
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/save_text_formatting_menu_state.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/repository/manage_account_repository.dart';
class SaveTextFormattingMenuStateInteractor {
final ManageAccountRepository _manageAccountRepository;
SaveTextFormattingMenuStateInteractor(this._manageAccountRepository);
Stream<Either<Failure, Success>> execute(bool isDisplayed) async* {
try {
yield Right(SavingTextFormattingMenuState());
final preferencesSetting = await _manageAccountRepository.toggleLocalSettingsState(
TextFormattingMenuConfig(isDisplayed: isDisplayed),
);
yield Right(SaveTextFormattingMenuStateSuccess(
preferencesSetting.textFormattingMenuConfig.isDisplayed,
));
} catch (exception) {
yield Left(SaveTextFormattingMenuStateFailure(exception));
}
}
}