TF-3334 Auto resynchronisation search view when receives websocket notification on mobile & tablet responsive web
This commit is contained in:
@@ -31,6 +31,7 @@ import 'package:tmail_ui_user/features/composer/presentation/extensions/prefix_e
|
||||
import 'package:tmail_ui_user/features/contact/presentation/model/contact_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
|
||||
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
@@ -100,7 +101,7 @@ class SearchEmailController extends BaseController
|
||||
final resultSearchViewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||
|
||||
late Debouncer<String> _deBouncerTime;
|
||||
late Worker dashBoardViewStateWorker;
|
||||
late Worker emailUIActionWorker;
|
||||
late Worker dashBoardActionWorker;
|
||||
late SearchMoreState searchMoreState;
|
||||
late bool canSearchMore;
|
||||
@@ -246,6 +247,15 @@ class SearchEmailController extends BaseController
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
emailUIActionWorker = ever(
|
||||
mailboxDashBoardController.emailUIAction,
|
||||
(action) {
|
||||
if (action is RefreshChangeEmailAction) {
|
||||
_refreshEmailChanges();
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
void _onSearchTextInputListener() {
|
||||
@@ -966,7 +976,7 @@ class SearchEmailController extends BaseController
|
||||
resultSearchScrollController.dispose();
|
||||
listSearchFilterScrollController.dispose();
|
||||
_deBouncerTime.cancel();
|
||||
dashBoardViewStateWorker.dispose();
|
||||
emailUIActionWorker.dispose();
|
||||
dashBoardActionWorker.dispose();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
@@ -316,10 +316,7 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
|
||||
ever(mailboxDashBoardController.emailUIAction, (action) {
|
||||
if (action is RefreshChangeEmailAction) {
|
||||
if (action.newState != _currentEmailState) {
|
||||
_refreshEmailChanges();
|
||||
}
|
||||
mailboxDashBoardController.clearEmailUIAction();
|
||||
_refreshEmailChanges(newState: action.newState);
|
||||
} else if (action is RefreshAllEmailAction) {
|
||||
refreshAllEmail();
|
||||
mailboxDashBoardController.clearEmailUIAction();
|
||||
@@ -516,28 +513,33 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
return limit;
|
||||
}
|
||||
|
||||
void _refreshEmailChanges({jmap.State? currentEmailState}) {
|
||||
log('ThreadController::_refreshEmailChanges(): currentEmailState: $currentEmailState');
|
||||
void _refreshEmailChanges({jmap.State? newState}) {
|
||||
log('ThreadController::_refreshEmailChanges(): newState: $newState');
|
||||
if (searchController.isSearchEmailRunning) {
|
||||
_searchEmail(limit: limitEmailFetched, needRefreshSearchState: true);
|
||||
} else {
|
||||
final newEmailState = currentEmailState ?? _currentEmailState;
|
||||
log('ThreadController::_refreshEmailChanges(): newEmailState: $newEmailState');
|
||||
if (_session != null && _accountId != null && newEmailState != null) {
|
||||
consumeState(_refreshChangesEmailsInMailboxInteractor.execute(
|
||||
if (_currentEmailState == null ||
|
||||
_currentEmailState == newState ||
|
||||
_session == null ||
|
||||
_accountId == null) {
|
||||
return;
|
||||
}
|
||||
consumeState(_refreshChangesEmailsInMailboxInteractor.execute(
|
||||
_session!,
|
||||
_accountId!,
|
||||
_currentEmailState!,
|
||||
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
||||
propertiesCreated: EmailUtils.getPropertiesForEmailGetMethod(
|
||||
_session!,
|
||||
_accountId!,
|
||||
newEmailState,
|
||||
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
||||
propertiesCreated: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||
emailFilter: EmailFilter(
|
||||
filter: _getFilterCondition(mailboxIdSelected: selectedMailboxId),
|
||||
filterOption: mailboxDashBoardController.filterMessageOption.value,
|
||||
mailboxId: selectedMailboxId
|
||||
)
|
||||
));
|
||||
}
|
||||
),
|
||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||
emailFilter: EmailFilter(
|
||||
filter: _getFilterCondition(mailboxIdSelected: selectedMailboxId),
|
||||
filterOption: mailboxDashBoardController.filterMessageOption.value,
|
||||
mailboxId: selectedMailboxId,
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user