TF-437 Delete state change of mailbox after invoke refresh change in background/terminated

This commit is contained in:
dab246
2022-11-30 12:13:06 +07:00
committed by Dat H. Pham
parent b37de97d6b
commit 32bb7c9796
4 changed files with 62 additions and 4 deletions
@@ -2,7 +2,6 @@ import 'dart:async';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:fcm/model/type_name.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -70,6 +69,7 @@ import 'package:tmail_ui_user/features/network_status_handle/presentation/networ
import 'package:tmail_ui_user/features/push_notification/domain/state/get_email_state_to_refresh_state.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/get_mailbox_state_to_refresh_state.dart';
import 'package:tmail_ui_user/features/push_notification/domain/usecases/delete_email_state_to_refresh_interactor.dart';
import 'package:tmail_ui_user/features/push_notification/domain/usecases/delete_mailbox_state_to_refresh_interactor.dart';
import 'package:tmail_ui_user/features/push_notification/domain/usecases/get_email_state_to_refresh_interactor.dart';
import 'package:tmail_ui_user/features/push_notification/domain/usecases/get_mailbox_state_to_refresh_interactor.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/controller/fcm_controller.dart';
@@ -121,6 +121,7 @@ class MailboxDashBoardController extends ReloadableController {
GetEmailStateToRefreshInteractor? _getEmailStateToRefreshInteractor;
DeleteEmailStateToRefreshInteractor? _deleteEmailStateToRefreshInteractor;
GetMailboxStateToRefreshInteractor? _getMailboxStateToRefreshInteractor;
DeleteMailboxStateToRefreshInteractor? _deleteMailboxStateToRefreshInteractor;
final scaffoldKey = GlobalKey<ScaffoldState>();
final selectedMailbox = Rxn<PresentationMailbox>();
@@ -236,6 +237,7 @@ class MailboxDashBoardController extends ReloadableController {
_deleteEmailStateToRefreshAction();
} else if (success is GetMailboxStateToRefreshSuccess) {
dispatchAction(RefreshChangeMailboxAction(success.storedState));
_deleteMailboxStateToRefreshAction();
}
}
);
@@ -1312,7 +1314,19 @@ class MailboxDashBoardController extends ReloadableController {
logError('MailboxDashBoardController::_deleteEmailStateToRefreshAction(): $e');
}
if (_deleteEmailStateToRefreshInteractor != null) {
consumeState(_deleteEmailStateToRefreshInteractor!.execute(TypeName.emailType));
consumeState(_deleteEmailStateToRefreshInteractor!.execute());
}
}
void _deleteMailboxStateToRefreshAction() {
log('MailboxDashBoardController::_deleteMailboxStateToRefreshAction():');
try {
_deleteMailboxStateToRefreshInteractor = getBinding<DeleteMailboxStateToRefreshInteractor>();
} catch (e) {
logError('MailboxDashBoardController::_deleteMailboxStateToRefreshAction(): $e');
}
if (_deleteMailboxStateToRefreshInteractor != null) {
consumeState(_deleteMailboxStateToRefreshInteractor!.execute());
}
}
@@ -0,0 +1,22 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class DeleteMailboxStateToRefreshLoading extends UIState {}
class DeleteMailboxStateToRefreshSuccess extends UIState {
DeleteMailboxStateToRefreshSuccess();
@override
List<Object> get props => [];
}
class DeleteMailboxStateToRefreshFailure extends FeatureFailure {
final dynamic exception;
DeleteMailboxStateToRefreshFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -10,10 +10,10 @@ class DeleteEmailStateToRefreshInteractor {
DeleteEmailStateToRefreshInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute(TypeName typeName) async* {
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(DeleteEmailStateToRefreshLoading());
await _fcmRepository.deleteStateToRefresh(typeName);
await _fcmRepository.deleteStateToRefresh(TypeName.emailType);
yield Right<Failure, Success>(DeleteEmailStateToRefreshSuccess());
} catch (e) {
yield Left<Failure, Success>(DeleteEmailStateToRefreshFailure(e));
@@ -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:fcm/model/type_name.dart';
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/delete_mailbox_state_to_refresh_state.dart';
class DeleteMailboxStateToRefreshInteractor {
final FCMRepository _fcmRepository;
DeleteMailboxStateToRefreshInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(DeleteMailboxStateToRefreshLoading());
await _fcmRepository.deleteStateToRefresh(TypeName.mailboxType);
yield Right<Failure, Success>(DeleteMailboxStateToRefreshSuccess());
} catch (e) {
yield Left<Failure, Success>(DeleteMailboxStateToRefreshFailure(e));
}
}
}