TF-495 Show FPS when load more emails
This commit is contained in:
@@ -8,6 +8,7 @@ import 'package:tmail_ui_user/features/base/mixin/popup_context_menu_action_mixi
|
||||
abstract class BaseController extends GetxController with MessageDialogActionMixin, PopupContextMenuActionMixin {
|
||||
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||
final connectivityResult = Rxn<ConnectivityResult>();
|
||||
FpsCallback? fpsCallback;
|
||||
|
||||
void consumeState(Stream<Either<Failure, Success>> newStateStream) async {
|
||||
newStateStream.listen(
|
||||
@@ -48,4 +49,21 @@ abstract class BaseController extends GetxController with MessageDialogActionMix
|
||||
void onError(dynamic error);
|
||||
|
||||
void onDone();
|
||||
|
||||
void startFpsMeter() {
|
||||
FpsManager().start();
|
||||
fpsCallback = (fpsInfo) {
|
||||
log('BaseController::startFpsMeter(): $fpsInfo');
|
||||
};
|
||||
if (fpsCallback != null) {
|
||||
FpsManager().addFpsCallback(fpsCallback!);
|
||||
}
|
||||
}
|
||||
|
||||
void stopFpsMeter() {
|
||||
FpsManager().stop();
|
||||
if (fpsCallback != null) {
|
||||
FpsManager().removeFpsCallback(fpsCallback!);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,9 @@ class ThreadRepositoryImpl extends ThreadRepository {
|
||||
|
||||
@override
|
||||
Stream<EmailsResponse> loadMoreEmails(GetEmailRequest getEmailRequest) async* {
|
||||
bench.start('loadMoreEmails in computed');
|
||||
final response = await compute(_getAllEmailsWithoutLastEmailId, getEmailRequest);
|
||||
bench.end('loadMoreEmails in computed');
|
||||
await _updateEmailCache(newCreated: response.emailList);
|
||||
yield response;
|
||||
}
|
||||
|
||||
@@ -222,6 +222,8 @@ class ThreadController extends BaseController {
|
||||
_markAsStarMultipleEmailFailure(failure);
|
||||
} else if (failure is EmptyTrashFolderFailure) {
|
||||
_emptyTrashFolderFailure(failure);
|
||||
} else if (failure is LoadMoreEmailsFailure) {
|
||||
stopFpsMeter();
|
||||
}
|
||||
},
|
||||
(success) {
|
||||
@@ -245,6 +247,8 @@ class ThreadController extends BaseController {
|
||||
_markAsEmailReadSuccess(success);
|
||||
} else if (success is MoveToMailboxSuccess) {
|
||||
_moveToMailboxSuccess(success);
|
||||
} else if (success is LoadMoreEmailsSuccess) {
|
||||
stopFpsMeter();
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -383,7 +387,7 @@ class ThreadController extends BaseController {
|
||||
void loadMoreEmails() {
|
||||
if (canLoadMore && _accountId != null) {
|
||||
log('ThreadController::loadMoreEmails(): latest: ${emailList.last.receivedAt}');
|
||||
bench.start('loadMoreEmails');
|
||||
startFpsMeter();
|
||||
consumeState(_loadMoreEmailsInMailboxInteractor.execute(
|
||||
GetEmailRequest(
|
||||
_accountId!,
|
||||
@@ -397,7 +401,6 @@ class ThreadController extends BaseController {
|
||||
}
|
||||
|
||||
void _loadMoreEmailsSuccess(LoadMoreEmailsSuccess success) {
|
||||
bench.end('loadMoreEmails');
|
||||
log('ThreadController::_loadMoreEmailsSuccess(): [BEFORE] totalEmailList = ${emailList.length}');
|
||||
if (success.emailList.isNotEmpty) {
|
||||
log('ThreadController::_loadMoreEmailsSuccess(): add success: ${success.emailList.length}');
|
||||
|
||||
Reference in New Issue
Block a user