mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-19 18:31:48 +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
|
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.WindowWidthSizeClass
|
||||||
|
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
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.navigation.navs.INav
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
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.singlepane.MessagesSinglePane
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.twopane.MessagesTwoPane
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.twopane.MessagesTwoPane
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun MessagesScreen(
|
fun MessagesScreen(
|
||||||
accountViewModel: AccountViewModel,
|
accountViewModel: AccountViewModel,
|
||||||
nav: INav,
|
nav: INav,
|
||||||
) {
|
) {
|
||||||
val windowSizeClass by accountViewModel.settings.windowSizeClass
|
val act = LocalContext.current.getActivity()
|
||||||
|
val windowSizeClass = calculateWindowSizeClass(act)
|
||||||
|
|
||||||
val twoPane by remember {
|
val twoPane by remember {
|
||||||
derivedStateOf {
|
derivedStateOf {
|
||||||
when (windowSizeClass?.widthSizeClass) {
|
when (windowSizeClass.widthSizeClass) {
|
||||||
WindowWidthSizeClass.Compact -> false
|
WindowWidthSizeClass.Compact -> false
|
||||||
WindowWidthSizeClass.Expanded,
|
WindowWidthSizeClass.Expanded,
|
||||||
WindowWidthSizeClass.Medium,
|
WindowWidthSizeClass.Medium,
|
||||||
@@ -49,11 +55,11 @@ fun MessagesScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (twoPane && windowSizeClass != null) {
|
if (twoPane) {
|
||||||
MessagesTwoPane(
|
MessagesTwoPane(
|
||||||
knownFeedContentState = accountViewModel.feedStates.dmKnown,
|
knownFeedContentState = accountViewModel.feedStates.dmKnown,
|
||||||
newFeedContentState = accountViewModel.feedStates.dmNew,
|
newFeedContentState = accountViewModel.feedStates.dmNew,
|
||||||
widthSizeClass = windowSizeClass!!.widthSizeClass,
|
widthSizeClass = windowSizeClass.widthSizeClass,
|
||||||
accountViewModel = accountViewModel,
|
accountViewModel = accountViewModel,
|
||||||
nav = nav,
|
nav = nav,
|
||||||
)
|
)
|
||||||
|
@@ -31,9 +31,12 @@ import androidx.compose.runtime.remember
|
|||||||
import androidx.compose.runtime.rememberCoroutineScope
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import com.google.accompanist.adaptive.FoldAwareConfiguration
|
import com.google.accompanist.adaptive.FoldAwareConfiguration
|
||||||
import com.google.accompanist.adaptive.HorizontalTwoPaneStrategy
|
import com.google.accompanist.adaptive.HorizontalTwoPaneStrategy
|
||||||
import com.google.accompanist.adaptive.TwoPane
|
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.feeds.FeedContentState
|
||||||
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
|
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.bottombars.AppBottomBar
|
import com.vitorpamplona.amethyst.ui.navigation.bottombars.AppBottomBar
|
||||||
@@ -68,6 +71,9 @@ fun MessagesTwoPane(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val act = LocalContext.current.getActivity()
|
||||||
|
val displayFeatures = calculateDisplayFeatures(act)
|
||||||
|
|
||||||
DisappearingScaffold(
|
DisappearingScaffold(
|
||||||
isInvertedLayout = false,
|
isInvertedLayout = false,
|
||||||
topBar = {
|
topBar = {
|
||||||
@@ -126,7 +132,7 @@ fun MessagesTwoPane(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
strategy = strategy,
|
strategy = strategy,
|
||||||
displayFeatures = accountViewModel.settings.displayFeatures.value,
|
displayFeatures = displayFeatures,
|
||||||
foldAwareConfiguration = FoldAwareConfiguration.VerticalFoldsOnly,
|
foldAwareConfiguration = FoldAwareConfiguration.VerticalFoldsOnly,
|
||||||
modifier = Modifier.padding(padding).consumeWindowInsets(padding).fillMaxSize(),
|
modifier = Modifier.padding(padding).consumeWindowInsets(padding).fillMaxSize(),
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user