mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 21:15:48 +00:00
Fix various issues in main activity display.
This commit is contained in:
committed by
Greyson Parrelli
parent
897461b594
commit
bf3135b2d0
@@ -38,6 +38,7 @@ import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.SnackbarDuration
|
||||
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
|
||||
import androidx.compose.material3.adaptive.layout.PaneExpansionAnchor
|
||||
import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole
|
||||
import androidx.compose.material3.adaptive.layout.rememberPaneExpansionState
|
||||
import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator
|
||||
import androidx.compose.runtime.Composable
|
||||
@@ -46,6 +47,7 @@ import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.key
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
@@ -345,11 +347,17 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
val mutableInteractionSource = remember { MutableInteractionSource() }
|
||||
|
||||
LaunchedEffect(mainNavigationDetailLocation) {
|
||||
if (paneExpansionState.currentAnchor == listOnlyAnchor) {
|
||||
if (paneExpansionState.currentAnchor == listOnlyAnchor && wrappedNavigator.currentDestination?.pane == ThreePaneScaffoldRole.Primary) {
|
||||
paneExpansionState.animateTo(detailOnlyAnchor)
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(mainNavigationState.currentListLocation) {
|
||||
if (paneExpansionState.currentAnchor == detailOnlyAnchor && wrappedNavigator.currentDestination?.pane == ThreePaneScaffoldRole.Secondary) {
|
||||
paneExpansionState.animateTo(listOnlyAnchor)
|
||||
}
|
||||
}
|
||||
|
||||
AppScaffold(
|
||||
navigator = wrappedNavigator,
|
||||
paneExpansionState = paneExpansionState,
|
||||
|
||||
@@ -20,9 +20,9 @@ import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import org.signal.core.ui.compose.Dialogs
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.compose.SignalPreview
|
||||
import org.signal.core.ui.compose.Snackbars
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.megaphone.Megaphone
|
||||
@@ -93,7 +93,9 @@ fun MainBottomChrome(
|
||||
callback = callback
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (state.mainToolbarMode == MainToolbarMode.FULL) {
|
||||
MainMegaphoneContainer(
|
||||
state = state.megaphoneState,
|
||||
controller = megaphoneActionController,
|
||||
@@ -101,7 +103,6 @@ fun MainBottomChrome(
|
||||
)
|
||||
}
|
||||
|
||||
val windowSizeClass = WindowSizeClass.rememberWindowSizeClass()
|
||||
val snackBarModifier = if (windowSizeClass.isCompact() && state.mainToolbarMode == MainToolbarMode.BASIC) {
|
||||
Modifier.navigationBarsPadding()
|
||||
} else {
|
||||
@@ -151,7 +152,12 @@ private fun MainSnackbar(
|
||||
}
|
||||
}
|
||||
|
||||
@SignalPreview
|
||||
@Preview(device = "spec:width=360dp,height=640dp,orientation=portrait")
|
||||
@Preview(device = "spec:width=640dp,height=360dp,orientation=landscape")
|
||||
@Preview(device = "spec:width=600dp,height=1024dp,orientation=portrait")
|
||||
@Preview(device = "spec:width=1024dp,height=600dp,orientation=landscape")
|
||||
@Preview(device = "spec:width=840dp,height=1280dp,orientation=portrait")
|
||||
@Preview(device = "spec:width=1280dp,height=840dp,orientation=landscape")
|
||||
@Composable
|
||||
fun MainBottomChromePreview() {
|
||||
Previews.Preview {
|
||||
|
||||
@@ -7,12 +7,10 @@ package org.thoughtcrime.securesms.main
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.res.Configuration
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.platform.LocalConfiguration
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.compose.SignalPreview
|
||||
@@ -20,6 +18,7 @@ import org.thoughtcrime.securesms.megaphone.Megaphone
|
||||
import org.thoughtcrime.securesms.megaphone.MegaphoneActionController
|
||||
import org.thoughtcrime.securesms.megaphone.MegaphoneComponent
|
||||
import org.thoughtcrime.securesms.megaphone.Megaphones
|
||||
import org.thoughtcrime.securesms.window.WindowSizeClass
|
||||
|
||||
data class MainMegaphoneState(
|
||||
val megaphone: Megaphone = Megaphone.NONE,
|
||||
@@ -45,9 +44,9 @@ fun MainMegaphoneContainer(
|
||||
controller: MegaphoneActionController,
|
||||
onMegaphoneVisible: (Megaphone) -> Unit
|
||||
) {
|
||||
val isLandscape = LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||
val visible = remember(isLandscape, state) {
|
||||
!(state.megaphone == Megaphone.NONE || state.mainToolbarMode != MainToolbarMode.FULL || isLandscape)
|
||||
val windowSizeClass = WindowSizeClass.rememberWindowSizeClass()
|
||||
val visible = remember(windowSizeClass, state) {
|
||||
!(state.megaphone == Megaphone.NONE || state.mainToolbarMode != MainToolbarMode.FULL || windowSizeClass == WindowSizeClass.COMPACT_LANDSCAPE)
|
||||
}
|
||||
|
||||
AnimatedVisibility(visible = visible) {
|
||||
@@ -57,8 +56,8 @@ fun MainMegaphoneContainer(
|
||||
)
|
||||
}
|
||||
|
||||
LaunchedEffect(state, isLandscape) {
|
||||
if (state.megaphone == Megaphone.NONE || state.mainToolbarMode == MainToolbarMode.BASIC || isLandscape) {
|
||||
LaunchedEffect(state, windowSizeClass) {
|
||||
if (state.megaphone == Megaphone.NONE || state.mainToolbarMode == MainToolbarMode.BASIC || windowSizeClass == WindowSizeClass.COMPACT_LANDSCAPE) {
|
||||
return@LaunchedEffect
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user