TF-495 Show FPS when load more emails

This commit is contained in:
dab246
2022-04-19 16:24:21 +07:00
committed by Dat H. Pham
parent 3aa3c38e2d
commit ead1ccd345
5 changed files with 154 additions and 2 deletions
+18
View File
@@ -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}');