Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce recompositions due to TopAppBar #1542

Merged
merged 2 commits into from
Jun 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -526,15 +526,13 @@ fun Sidebar(
admins: List<PersonView>,
showAvatar: Boolean,
onPersonClick: (PersonId) -> Unit,
padding: PaddingValues,
) {
val listState = rememberLazyListState()

LazyColumn(
state = listState,
modifier =
Modifier
.padding(padding)
.simpleVerticalScrollbar(listState),
verticalArrangement = Arrangement.spacedBy(MEDIUM_PADDING),
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.jerboa.ui.components.community.sidebar

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import com.jerboa.ui.components.common.Sidebar
import it.vercruysse.lemmyapi.v0x19.datatypes.GetCommunityResponse
Expand All @@ -11,7 +10,6 @@ fun CommunitySidebar(
communityRes: GetCommunityResponse,
showAvatar: Boolean,
onPersonClick: (PersonId) -> Unit,
padding: PaddingValues,
) {
val community = communityRes.community_view.community
val counts = communityRes.community_view.counts
Expand All @@ -31,6 +29,5 @@ fun CommunitySidebar(
admins = emptyList(),
showAvatar = showAvatar,
onPersonClick = onPersonClick,
padding = padding,
)
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.jerboa.ui.components.community.sidebar

import android.util.Log
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.jerboa.JerboaAppState
import com.jerboa.R
Expand Down Expand Up @@ -39,12 +42,13 @@ fun CommunitySidebarScreen(
)
},
content = { padding ->
CommunitySidebar(
communityRes = communityRes,
onPersonClick = appState::toProfile,
showAvatar = showAvatar,
padding = padding,
)
Box(modifier = Modifier.padding(padding)) {
CommunitySidebar(
communityRes = communityRes,
onPersonClick = appState::toProfile,
showAvatar = showAvatar,
)
}
},
)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.jerboa.ui.components.home.sidebar

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.jerboa.datatypes.sampleGetSiteRes
Expand All @@ -13,7 +12,6 @@ fun SiteSidebar(
siteRes: GetSiteResponse,
showAvatar: Boolean,
onPersonClick: (PersonId) -> Unit,
padding: PaddingValues,
) {
val site = siteRes.site_view.site
val counts = siteRes.site_view.counts
Expand All @@ -29,7 +27,6 @@ fun SiteSidebar(
usersActiveWeek = counts.users_active_week,
usersActiveMonth = counts.users_active_month,
usersActiveHalfYear = counts.users_active_half_year,
padding = padding,
showAvatar = showAvatar,
onPersonClick = onPersonClick,
admins = siteRes.admins,
Expand All @@ -44,6 +41,5 @@ fun SiteSidebarPreview() {
siteRes = sampleGetSiteRes,
onPersonClick = {},
showAvatar = false,
padding = PaddingValues(),
)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.jerboa.ui.components.home.sidebar

import android.util.Log
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Policy
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.jerboa.JerboaAppState
import com.jerboa.R
Expand Down Expand Up @@ -61,19 +64,20 @@ fun SiteSidebarScreen(
)
},
content = { padding ->
when (val siteRes = siteViewModel.siteRes) {
ApiState.Empty -> ApiEmptyText()
is ApiState.Failure -> ApiErrorText(siteRes.msg)
ApiState.Loading -> LoadingBar(padding)
is ApiState.Success -> {
SiteSidebar(
siteRes = siteRes.data,
showAvatar = siteViewModel.showAvatar(),
onPersonClick = appState::toProfile,
padding = padding,
)
Box(modifier = Modifier.padding(padding)) {
when (val siteRes = siteViewModel.siteRes) {
ApiState.Empty -> ApiEmptyText()
is ApiState.Failure -> ApiErrorText(siteRes.msg)
ApiState.Loading -> LoadingBar()
is ApiState.Success -> {
SiteSidebar(
siteRes = siteRes.data,
showAvatar = siteViewModel.showAvatar(),
onPersonClick = appState::toProfile,
)
}
else -> {}
}
else -> {}
}
},
)
Expand Down
29 changes: 14 additions & 15 deletions app/src/main/java/com/jerboa/ui/components/inbox/InboxScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.jerboa.ui.components.inbox
import android.content.Context
import android.util.Log
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
Expand Down Expand Up @@ -165,17 +166,18 @@ fun InboxScreen(
)
},
content = {
InboxTabs(
padding = it,
appState = appState,
inboxViewModel = inboxViewModel,
siteViewModel = siteViewModel,
ctx = ctx,
account = account,
scope = scope,
blurNSFW = blurNSFW,
snackbarHostState = snackbarHostState,
)
Box(modifier = Modifier.padding(it)) {
InboxTabs(
appState = appState,
inboxViewModel = inboxViewModel,
siteViewModel = siteViewModel,
ctx = ctx,
account = account,
scope = scope,
blurNSFW = blurNSFW,
snackbarHostState = snackbarHostState,
)
}
},
)
}
Expand All @@ -198,14 +200,11 @@ fun InboxTabs(
account: Account,
scope: CoroutineScope,
snackbarHostState: SnackbarHostState,
padding: PaddingValues,
blurNSFW: BlurNSFW,
) {
val pagerState = rememberPagerState { InboxTab.entries.size }

Column(
modifier = Modifier.padding(padding),
) {
Column {
TabRow(
selectedTabIndex = pagerState.currentPage,
tabs = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.jerboa.ui.components.person

import android.content.Context
import android.util.Log
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
Expand Down Expand Up @@ -280,30 +281,31 @@ fun PersonProfileScreen(
}
},
content = {
UserTabs(
savedMode = savedMode,
padding = it,
appState = appState,
personProfileViewModel = personProfileViewModel,
siteViewModel = siteViewModel,
ctx = ctx,
account = account,
scope = scope,
postListState = postListState,
appSettingsViewModel = appSettingsViewModel,
showVotingArrowsInListView = showVotingArrowsInListView,
enableDownVotes = siteViewModel.enableDownvotes(),
showAvatar = siteViewModel.showAvatar(),
useCustomTabs = useCustomTabs,
usePrivateTabs = usePrivateTabs,
blurNSFW = blurNSFW,
showPostLinkPreviews = showPostLinkPreviews,
markAsReadOnScroll = markAsReadOnScroll,
snackbarHostState = snackbarHostState,
voteDisplayMode = siteViewModel.voteDisplayMode(),
postActionBarMode = postActionBarMode,
swipeToActionPreset = swipeToActionPreset,
)
Box(Modifier.padding(it)) {
UserTabs(
savedMode = savedMode,
appState = appState,
personProfileViewModel = personProfileViewModel,
siteViewModel = siteViewModel,
ctx = ctx,
account = account,
scope = scope,
postListState = postListState,
appSettingsViewModel = appSettingsViewModel,
showVotingArrowsInListView = showVotingArrowsInListView,
enableDownVotes = siteViewModel.enableDownvotes(),
showAvatar = siteViewModel.showAvatar(),
useCustomTabs = useCustomTabs,
usePrivateTabs = usePrivateTabs,
blurNSFW = blurNSFW,
showPostLinkPreviews = showPostLinkPreviews,
markAsReadOnScroll = markAsReadOnScroll,
snackbarHostState = snackbarHostState,
voteDisplayMode = siteViewModel.voteDisplayMode(),
postActionBarMode = postActionBarMode,
swipeToActionPreset = swipeToActionPreset,
)
}
},
)
}
Expand All @@ -325,7 +327,6 @@ fun UserTabs(
account: Account,
scope: CoroutineScope,
postListState: LazyListState,
padding: PaddingValues,
appSettingsViewModel: AppSettingsViewModel,
showVotingArrowsInListView: Boolean,
enableDownVotes: Boolean,
Expand Down Expand Up @@ -353,9 +354,7 @@ fun UserTabs(

appState.ConsumeReturn<PostView>(PostViewReturn.POST_VIEW, personProfileViewModel::updatePost)

Column(
modifier = Modifier.padding(padding),
) {
Column {
TabRow(
selectedTabIndex = pagerState.currentPage,
) {
Expand Down