TF-3480 Handle reopen multiple composer when reload page or session expired

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-02-28 01:29:38 +07:00
committed by Dat H. Pham
parent 810d86b100
commit cfc72a6f4f
24 changed files with 318 additions and 101 deletions
@@ -13,8 +13,11 @@ class GetComposerCacheOnWebInteractor {
Stream<Either<Failure, Success>> execute(AccountId accountId, UserName userName) async* {
try {
final data = await composerCacheRepository.getComposerCacheOnWeb(accountId, userName);
yield Right(GetComposerCacheSuccess(data));
final listComposerCache = await composerCacheRepository.getComposerCacheOnWeb(
accountId,
userName,
);
yield Right(GetComposerCacheSuccess(listComposerCache));
} catch (exception) {
yield Left(GetComposerCacheFailure(exception));
}
@@ -0,0 +1,22 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart';
class RemoveAllComposerCacheOnWebInteractor {
final ComposerCacheRepository composerCacheRepository;
RemoveAllComposerCacheOnWebInteractor(this.composerCacheRepository);
Future<Either<Failure, Success>> execute(AccountId accountId, UserName userName) async {
try {
composerCacheRepository.removeAllComposerCacheOnWeb(accountId, userName);
return Right(RemoveComposerCacheSuccess());
} catch (exception) {
return Left(RemoveComposerCacheFailure(exception));
}
}
}
@@ -0,0 +1,30 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart';
class RemoveComposerCacheByIdOnWebInteractor {
final ComposerCacheRepository composerCacheRepository;
RemoveComposerCacheByIdOnWebInteractor(this.composerCacheRepository);
Future<Either<Failure, Success>> execute(
AccountId accountId,
UserName userName,
String composerId,
) async {
try {
composerCacheRepository.removeComposerCacheByIdOnWeb(
accountId,
userName,
composerId,
);
return Right(RemoveComposerCacheSuccess());
} catch (exception) {
return Left(RemoveComposerCacheFailure(exception));
}
}
}
@@ -1,19 +0,0 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart';
class RemoveComposerCacheOnWebInteractor {
final ComposerCacheRepository composerCacheRepository;
RemoveComposerCacheOnWebInteractor(this.composerCacheRepository);
Future<Either<Failure, Success>> execute() async {
try {
composerCacheRepository.removeComposerCacheOnWeb();
return Right(RemoveComposerCacheSuccess());
} catch (exception) {
return Left(RemoveComposerCacheFailure(exception));
}
}
}