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/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/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/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/email/presentation/utils/email_utils.dart';
|
||||||
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.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';
|
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));
|
final resultSearchViewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||||
|
|
||||||
late Debouncer<String> _deBouncerTime;
|
late Debouncer<String> _deBouncerTime;
|
||||||
late Worker dashBoardViewStateWorker;
|
late Worker emailUIActionWorker;
|
||||||
late Worker dashBoardActionWorker;
|
late Worker dashBoardActionWorker;
|
||||||
late SearchMoreState searchMoreState;
|
late SearchMoreState searchMoreState;
|
||||||
late bool canSearchMore;
|
late bool canSearchMore;
|
||||||
@@ -246,6 +247,15 @@ class SearchEmailController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
emailUIActionWorker = ever(
|
||||||
|
mailboxDashBoardController.emailUIAction,
|
||||||
|
(action) {
|
||||||
|
if (action is RefreshChangeEmailAction) {
|
||||||
|
_refreshEmailChanges();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onSearchTextInputListener() {
|
void _onSearchTextInputListener() {
|
||||||
@@ -966,7 +976,7 @@ class SearchEmailController extends BaseController
|
|||||||
resultSearchScrollController.dispose();
|
resultSearchScrollController.dispose();
|
||||||
listSearchFilterScrollController.dispose();
|
listSearchFilterScrollController.dispose();
|
||||||
_deBouncerTime.cancel();
|
_deBouncerTime.cancel();
|
||||||
dashBoardViewStateWorker.dispose();
|
emailUIActionWorker.dispose();
|
||||||
dashBoardActionWorker.dispose();
|
dashBoardActionWorker.dispose();
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -316,10 +316,7 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
|
|
||||||
ever(mailboxDashBoardController.emailUIAction, (action) {
|
ever(mailboxDashBoardController.emailUIAction, (action) {
|
||||||
if (action is RefreshChangeEmailAction) {
|
if (action is RefreshChangeEmailAction) {
|
||||||
if (action.newState != _currentEmailState) {
|
_refreshEmailChanges(newState: action.newState);
|
||||||
_refreshEmailChanges();
|
|
||||||
}
|
|
||||||
mailboxDashBoardController.clearEmailUIAction();
|
|
||||||
} else if (action is RefreshAllEmailAction) {
|
} else if (action is RefreshAllEmailAction) {
|
||||||
refreshAllEmail();
|
refreshAllEmail();
|
||||||
mailboxDashBoardController.clearEmailUIAction();
|
mailboxDashBoardController.clearEmailUIAction();
|
||||||
@@ -516,28 +513,33 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
return limit;
|
return limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _refreshEmailChanges({jmap.State? currentEmailState}) {
|
void _refreshEmailChanges({jmap.State? newState}) {
|
||||||
log('ThreadController::_refreshEmailChanges(): currentEmailState: $currentEmailState');
|
log('ThreadController::_refreshEmailChanges(): newState: $newState');
|
||||||
if (searchController.isSearchEmailRunning) {
|
if (searchController.isSearchEmailRunning) {
|
||||||
_searchEmail(limit: limitEmailFetched, needRefreshSearchState: true);
|
_searchEmail(limit: limitEmailFetched, needRefreshSearchState: true);
|
||||||
} else {
|
} else {
|
||||||
final newEmailState = currentEmailState ?? _currentEmailState;
|
if (_currentEmailState == null ||
|
||||||
log('ThreadController::_refreshEmailChanges(): newEmailState: $newEmailState');
|
_currentEmailState == newState ||
|
||||||
if (_session != null && _accountId != null && newEmailState != null) {
|
_session == null ||
|
||||||
consumeState(_refreshChangesEmailsInMailboxInteractor.execute(
|
_accountId == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
consumeState(_refreshChangesEmailsInMailboxInteractor.execute(
|
||||||
|
_session!,
|
||||||
|
_accountId!,
|
||||||
|
_currentEmailState!,
|
||||||
|
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
||||||
|
propertiesCreated: EmailUtils.getPropertiesForEmailGetMethod(
|
||||||
_session!,
|
_session!,
|
||||||
_accountId!,
|
_accountId!,
|
||||||
newEmailState,
|
),
|
||||||
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||||
propertiesCreated: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
emailFilter: EmailFilter(
|
||||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
filter: _getFilterCondition(mailboxIdSelected: selectedMailboxId),
|
||||||
emailFilter: EmailFilter(
|
filterOption: mailboxDashBoardController.filterMessageOption.value,
|
||||||
filter: _getFilterCondition(mailboxIdSelected: selectedMailboxId),
|
mailboxId: selectedMailboxId,
|
||||||
filterOption: mailboxDashBoardController.filterMessageOption.value,
|
),
|
||||||
mailboxId: selectedMailboxId
|
));
|
||||||
)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user