Skip to content

Commit

Permalink
Merge branch 'develop' into feat/conversation-favorites
Browse files Browse the repository at this point in the history
  • Loading branch information
Garzas authored Nov 15, 2024
2 parents a75fd37 + 59e5fec commit 70d5eae
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 26 deletions.
2 changes: 1 addition & 1 deletion app/src/main/kotlin/com/wire/android/ui/home/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ fun HomeContent(
}
},
collapsingEnabled = !searchBarState.isSearchActive,
contentLazyListState = homeStateHolder.currentLazyListState,
contentLazyListState = homeStateHolder.lazyListStateFor(currentNavigationItem),
content = {
/**
* This "if" is a workaround, otherwise it can crash because of the SubcomposeLayout's nature.
Expand Down
38 changes: 21 additions & 17 deletions app/src/main/kotlin/com/wire/android/ui/home/HomeStateHolder.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import androidx.compose.material3.DrawerState
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
Expand All @@ -42,12 +44,15 @@ class HomeStateHolder(
val coroutineScope: CoroutineScope,
val navController: NavHostController,
val drawerState: DrawerState,
val currentNavigationItem: HomeDestination,
val searchBarState: SearchBarState,
val navigator: Navigator,
lazyListStates: Map<HomeDestination, LazyListState>,
private val currentNavigationItemState: State<HomeDestination>,
private val lazyListStates: Map<HomeDestination, LazyListState>,
) {
val currentLazyListState = lazyListStates[currentNavigationItem] ?: error("No LazyListState found for $currentNavigationItem")
val currentNavigationItem
get() = currentNavigationItemState.value
fun lazyListStateFor(destination: HomeDestination): LazyListState =
lazyListStates[destination] ?: error("No LazyListState found for $destination")

fun closeDrawer() {
coroutineScope.launch {
Expand All @@ -73,23 +78,22 @@ fun rememberHomeScreenState(
): HomeStateHolder {
val searchBarState = rememberSearchbarState()
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentRoute = navBackStackEntry?.destination?.route
val currentNavigationItem = currentRoute?.let { HomeDestination.fromRoute(it) } ?: HomeDestination.Conversations
val currentNavigationItemState = remember {
derivedStateOf {
navBackStackEntry?.destination?.route?.let { HomeDestination.fromRoute(it) } ?: HomeDestination.Conversations
}
}
val lazyListStates = HomeDestination.values().associateWith { rememberLazyListState() }

val homeState = remember(
currentNavigationItem
) {
return remember {
HomeStateHolder(
coroutineScope,
navController,
drawerState,
currentNavigationItem,
searchBarState,
navigator,
lazyListStates
coroutineScope = coroutineScope,
navController = navController,
drawerState = drawerState,
searchBarState = searchBarState,
navigator = navigator,
currentNavigationItemState = currentNavigationItemState,
lazyListStates = lazyListStates
)
}

return homeState
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ package com.wire.android.ui.home.archive

import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.runtime.Composable
import com.wire.android.navigation.HomeDestination
import com.wire.android.navigation.HomeNavGraph
import com.wire.android.navigation.WireDestination
import com.wire.android.navigation.rememberNavigator
Expand All @@ -42,7 +43,7 @@ fun ArchiveScreen(homeStateHolder: HomeStateHolder) {
navigator = navigator,
searchBarState = searchBarState,
conversationsSource = ConversationsSource.ARCHIVE,
lazyListState = currentLazyListState,
lazyListState = lazyListStateFor(HomeDestination.Archive),
emptyListContent = { ArchiveEmptyContent() }
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ package com.wire.android.ui.home.conversationslist.all

import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.runtime.Composable
import com.wire.android.navigation.HomeDestination
import com.wire.android.navigation.HomeNavGraph
import com.wire.android.navigation.WireDestination
import com.wire.android.navigation.rememberNavigator
Expand All @@ -43,7 +44,7 @@ fun AllConversationsScreen(homeStateHolder: HomeStateHolder) {
navigator = navigator,
searchBarState = searchBarState,
conversationsSource = ConversationsSource.MAIN,
lazyListState = currentLazyListState,
lazyListState = lazyListStateFor(HomeDestination.Conversations),
emptyListContent = { ConversationsEmptyContent(filter = ConversationFilter.ALL) }
)
}
Expand All @@ -58,7 +59,7 @@ fun FavoritesConversationsScreen(homeStateHolder: HomeStateHolder) {
navigator = navigator,
searchBarState = searchBarState,
conversationsSource = ConversationsSource.FAVORITES,
lazyListState = currentLazyListState,
lazyListState = lazyListStateFor(HomeDestination.Favorites),
emptyListContent = { ConversationsEmptyContent(filter = ConversationFilter.FAVORITES) }
)
}
Expand All @@ -73,7 +74,7 @@ fun GroupConversationsScreen(homeStateHolder: HomeStateHolder) {
navigator = navigator,
searchBarState = searchBarState,
conversationsSource = ConversationsSource.GROUPS,
lazyListState = currentLazyListState,
lazyListState = lazyListStateFor(HomeDestination.Group),
emptyListContent = { ConversationsEmptyContent(filter = ConversationFilter.GROUPS) }
)
}
Expand All @@ -88,7 +89,7 @@ fun OneOnOneConversationsScreen(homeStateHolder: HomeStateHolder) {
navigator = navigator,
searchBarState = searchBarState,
conversationsSource = ConversationsSource.ONE_ON_ONE,
lazyListState = currentLazyListState,
lazyListState = lazyListStateFor(HomeDestination.OneOnOne),
emptyListContent = { ConversationsEmptyContent(filter = ConversationFilter.ONE_ON_ONE, domain = it) }
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import com.wire.android.R
import com.wire.android.appLogger
import com.wire.android.model.Clickable
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.HomeDestination
import com.wire.android.navigation.HomeNavGraph
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.WireDestination
Expand Down Expand Up @@ -62,7 +63,7 @@ fun SettingsScreen(

val context = LocalContext.current
SettingsScreenContent(
lazyListState = homeStateHolder.currentLazyListState,
lazyListState = homeStateHolder.lazyListStateFor(HomeDestination.Settings),
settingsState = viewModel.state,
onItemClicked = remember {
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
import com.wire.android.BuildConfig
import com.wire.android.R
import com.wire.android.model.Clickable
import com.wire.android.navigation.HomeDestination
import com.wire.android.navigation.HomeNavGraph
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.WireDestination
Expand All @@ -51,7 +52,7 @@ fun WhatsNewScreen(
val context = LocalContext.current
WhatsNewScreenContent(
state = whatsNewViewModel.state,
lazyListState = homeStateHolder.currentLazyListState,
lazyListState = homeStateHolder.lazyListStateFor(HomeDestination.WhatsNew),
onItemClicked = remember {
{
it.direction.handleNavigation(
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ coil = "2.7.0"
commonmark = "0.22.0"

# Countly
countly = "24.7.4"
countly = "24.7.5"

# RSS
rss-parser = "6.0.7"
Expand Down

0 comments on commit 70d5eae

Please sign in to comment.