From 49210d9fc669bdd6b4ed8f929bb9ce269b4de126 Mon Sep 17 00:00:00 2001 From: Adnan Habib Date: Sat, 1 Mar 2025 05:47:55 +0500 Subject: [PATCH 1/2] Add more jank tracking Change-Id: I5e6186ddc488230f5c0c75db4b38efe458e39e12 --- .../feature/interests/TabContent.kt | 7 +++++- .../feature/search/SearchScreen.kt | 23 +++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/TabContent.kt b/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/TabContent.kt index 83058c12e..734cc920a 100644 --- a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/TabContent.kt +++ b/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/TabContent.kt @@ -40,6 +40,7 @@ import com.google.samples.apps.nowinandroid.core.designsystem.component.scrollba import com.google.samples.apps.nowinandroid.core.designsystem.component.scrollbar.scrollbarState import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic import com.google.samples.apps.nowinandroid.core.ui.InterestsItem +import com.google.samples.apps.nowinandroid.core.ui.TrackScrollJank @Composable fun TopicsTabContent( @@ -56,10 +57,14 @@ fun TopicsTabContent( .fillMaxWidth(), ) { val scrollableState = rememberLazyListState() + val testTag = "interests:topics" + + TrackScrollJank(scrollableState = scrollableState, stateName = testTag) + LazyColumn( modifier = Modifier .padding(horizontal = 24.dp) - .testTag("interests:topics"), + .testTag(testTag), contentPadding = PaddingValues(vertical = 16.dp), state = scrollableState, ) { diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt index b617f98a9..7aa6532f8 100644 --- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt +++ b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt @@ -36,6 +36,7 @@ import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsTopHeight import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridItemSpan @@ -92,6 +93,7 @@ import com.google.samples.apps.nowinandroid.core.ui.InterestsItem import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState.Success import com.google.samples.apps.nowinandroid.core.ui.R.string import com.google.samples.apps.nowinandroid.core.ui.TrackScreenViewEvent +import com.google.samples.apps.nowinandroid.core.ui.TrackScrollJank import com.google.samples.apps.nowinandroid.core.ui.newsFeed import com.google.samples.apps.nowinandroid.feature.search.R as searchR @@ -154,8 +156,7 @@ internal fun SearchScreen( -> Unit SearchResultUiState.SearchNotReady -> SearchNotReadyBody() - SearchResultUiState.EmptyQuery, - -> { + SearchResultUiState.EmptyQuery -> { if (recentSearchesUiState is RecentSearchQueriesUiState.Success) { RecentSearchesBody( onClearRecentSearches = onClearRecentSearches, @@ -211,7 +212,8 @@ fun EmptySearchResultBody( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(horizontal = 48.dp), ) { - val message = stringResource(id = searchR.string.feature_search_result_not_found, searchQuery) + val message = + stringResource(id = searchR.string.feature_search_result_not_found, searchQuery) val start = message.indexOf(searchQuery) Text( text = AnnotatedString( @@ -293,6 +295,10 @@ private fun SearchResultBody( onFollowButtonClick: (String, Boolean) -> Unit, ) { val state = rememberLazyStaggeredGridState() + val testTag = "search:searchResult" + + TrackScrollJank(scrollableState = state, stateName = testTag) + Box( modifier = Modifier .fillMaxSize(), @@ -304,7 +310,7 @@ private fun SearchResultBody( verticalItemSpacing = 24.dp, modifier = Modifier .fillMaxSize() - .testTag("search:newsResources"), + .testTag(testTag), state = state, ) { if (topics.isNotEmpty()) { @@ -394,6 +400,10 @@ private fun RecentSearchesBody( onRecentSearchClicked: (String) -> Unit, ) { Column { + val scrollableState = rememberLazyListState() + + TrackScrollJank(scrollableState = scrollableState, stateName = "search:recentSearches") + Row( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, @@ -424,7 +434,10 @@ private fun RecentSearchesBody( } } } - LazyColumn(modifier = Modifier.padding(horizontal = 16.dp)) { + LazyColumn( + modifier = Modifier.padding(horizontal = 16.dp), + state = scrollableState, + ) { items(recentSearchQueries) { recentSearch -> Text( text = recentSearch, From 64e3256ed0b16f28b51b4dc53ee4c305938af4be Mon Sep 17 00:00:00 2001 From: Adnan Habib Date: Tue, 11 Mar 2025 04:14:12 +0500 Subject: [PATCH 2/2] Revert formatting Change-Id: I1be6dfd557a4d798f82c761c89686cd3268989a6 --- .../samples/apps/nowinandroid/feature/search/SearchScreen.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt index 7aa6532f8..308a9b2d6 100644 --- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt +++ b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchScreen.kt @@ -212,8 +212,7 @@ fun EmptySearchResultBody( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(horizontal = 48.dp), ) { - val message = - stringResource(id = searchR.string.feature_search_result_not_found, searchQuery) + val message = stringResource(id = searchR.string.feature_search_result_not_found, searchQuery) val start = message.indexOf(searchQuery) Text( text = AnnotatedString(