mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-19 09:31:08 +02:00
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:
@@ -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,
|
||||
)
|
||||
|
@@ -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(),
|
||||
)
|
||||
|
Reference in New Issue
Block a user