From 404d0ab40eeb7d3e8369775d19921282f1728765 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 11 Sep 2025 11:16:26 -0400 Subject: [PATCH] Removes the dependency on windowSizeClass and displayFeatures to be passed in the global settings of the app (which is activity independenty) --- .../screen/loggedIn/chats/rooms/MessagesScreen.kt | 14 ++++++++++---- .../chats/rooms/twopane/MessagesTwoPane.kt | 8 +++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/MessagesScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/MessagesScreen.kt index 000ab65f9..f38fcbc57 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/MessagesScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/MessagesScreen.kt @@ -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, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/twopane/MessagesTwoPane.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/twopane/MessagesTwoPane.kt index 47595a0c9..8a09b559d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/twopane/MessagesTwoPane.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/twopane/MessagesTwoPane.kt @@ -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(), )