From cb906edd11497049477cf96ceeabda4d07a96c61 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 16 Mar 2022 23:22:26 -0400 Subject: [PATCH] More accurate timings of conversation-open component. --- .../securesms/conversation/ConversationFragment.java | 3 ++- .../securesms/conversation/ConversationViewModel.java | 3 ++- .../org/thoughtcrime/securesms/util/SignalLocalMetrics.java | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index b58ec0c97..e74fef6e6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -340,6 +340,8 @@ public class ConversationFragment extends LoggingFragment implements Multiselect disposables.add(conversationViewModel.getChatColors().subscribe(recyclerViewColorizer::setChatColors)); disposables.add(conversationViewModel.getMessageData().subscribe(messageData -> { + SignalLocalMetrics.ConversationOpen.onDataPostedToMain(); + ConversationAdapter adapter = getListAdapter(); if (adapter != null) { List messages = messageData.getMessages(); @@ -695,7 +697,6 @@ public class ConversationFragment extends LoggingFragment implements Multiselect public void onItemRangeInserted(int positionStart, int itemCount) { adapter.unregisterAdapterDataObserver(this); startupStopwatch.split("data-set"); - SignalLocalMetrics.ConversationOpen.onDataLoaded(); list.post(() -> { startupStopwatch.split("first-render"); startupStopwatch.stop(TAG); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java index 413886f3e..39ce295ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java @@ -185,7 +185,8 @@ public class ConversationViewModel extends ViewModel { return pagedData.getData(); }) .observeOn(Schedulers.io()) - .withLatestFrom(conversationMetadata, (messages, metadata) -> new MessageData(metadata, messages)); + .withLatestFrom(conversationMetadata, (messages, metadata) -> new MessageData(metadata, messages)) + .doOnNext(a -> SignalLocalMetrics.ConversationOpen.onDataLoaded()); Observable liveRecipient = recipientId.distinctUntilChanged().switchMap(id -> Recipient.live(id).asObservable()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java b/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java index edb40a27e..efdbe9b8b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java @@ -75,6 +75,7 @@ public final class SignalLocalMetrics { private static final String SPLIT_VIEWMODEL_INIT = "viewmodel-init"; private static final String SPLIT_METADATA_LOADED = "metadata-loaded"; private static final String SPLIT_DATA_LOADED = "data-loaded"; + private static final String SPLIT_DATA_POSTED = "data-posted"; private static final String SPLIT_RENDER = "render"; private static String id; @@ -96,6 +97,10 @@ public final class SignalLocalMetrics { LocalMetrics.getInstance().split(id, SPLIT_DATA_LOADED); } + public static void onDataPostedToMain() { + LocalMetrics.getInstance().split(id, SPLIT_DATA_POSTED); + } + public static void onRenderFinished() { LocalMetrics.getInstance().split(id, SPLIT_RENDER); LocalMetrics.getInstance().end(id);