Removes the dependency on windowSizeClass and displayFeatures to be passed in the global settings of the app (which is activity independenty)

This commit is contained in:
Vitor Pamplona
2025-09-11 11:16:26 -04:00
parent bf88e376de
commit 404d0ab40e
2 changed files with 17 additions and 5 deletions

View File

@@ -20,26 +20,32 @@
*/
package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import com.vitorpamplona.amethyst.ui.components.getActivity
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.singlepane.MessagesSinglePane
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.twopane.MessagesTwoPane
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
@Composable
fun MessagesScreen(
accountViewModel: AccountViewModel,
nav: INav,
) {
val windowSizeClass by accountViewModel.settings.windowSizeClass
val act = LocalContext.current.getActivity()
val windowSizeClass = calculateWindowSizeClass(act)
val twoPane by remember {
derivedStateOf {
when (windowSizeClass?.widthSizeClass) {
when (windowSizeClass.widthSizeClass) {
WindowWidthSizeClass.Compact -> false
WindowWidthSizeClass.Expanded,
WindowWidthSizeClass.Medium,
@@ -49,11 +55,11 @@ fun MessagesScreen(
}
}
if (twoPane && windowSizeClass != null) {
if (twoPane) {
MessagesTwoPane(
knownFeedContentState = accountViewModel.feedStates.dmKnown,
newFeedContentState = accountViewModel.feedStates.dmNew,
widthSizeClass = windowSizeClass!!.widthSizeClass,
widthSizeClass = windowSizeClass.widthSizeClass,
accountViewModel = accountViewModel,
nav = nav,
)

View File

@@ -31,9 +31,12 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import com.google.accompanist.adaptive.FoldAwareConfiguration
import com.google.accompanist.adaptive.HorizontalTwoPaneStrategy
import com.google.accompanist.adaptive.TwoPane
import com.google.accompanist.adaptive.calculateDisplayFeatures
import com.vitorpamplona.amethyst.ui.components.getActivity
import com.vitorpamplona.amethyst.ui.feeds.FeedContentState
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
import com.vitorpamplona.amethyst.ui.navigation.bottombars.AppBottomBar
@@ -68,6 +71,9 @@ fun MessagesTwoPane(
}
}
val act = LocalContext.current.getActivity()
val displayFeatures = calculateDisplayFeatures(act)
DisappearingScaffold(
isInvertedLayout = false,
topBar = {
@@ -126,7 +132,7 @@ fun MessagesTwoPane(
}
},
strategy = strategy,
displayFeatures = accountViewModel.settings.displayFeatures.value,
displayFeatures = displayFeatures,
foldAwareConfiguration = FoldAwareConfiguration.VerticalFoldsOnly,
modifier = Modifier.padding(padding).consumeWindowInsets(padding).fillMaxSize(),
)