diff --git a/app/desktop/src/main/kotlin/ru/fromchat/desktop/Main.kt b/app/desktop/src/main/kotlin/ru/fromchat/desktop/Main.kt index 12cd90f..cb8f8d4 100644 --- a/app/desktop/src/main/kotlin/ru/fromchat/desktop/Main.kt +++ b/app/desktop/src/main/kotlin/ru/fromchat/desktop/Main.kt @@ -1,5 +1,6 @@ package ru.fromchat.desktop +import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect @@ -7,28 +8,34 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.toComposeImageBitmap +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.KeyEventType +import androidx.compose.ui.input.key.KeyShortcut +import androidx.compose.ui.input.key.isCtrlPressed +import androidx.compose.ui.input.key.isShiftPressed +import androidx.compose.ui.input.key.key +import androidx.compose.ui.input.key.type +import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.FrameWindowScope +import androidx.compose.ui.window.MenuBar import androidx.compose.ui.window.Notification import androidx.compose.ui.window.Tray import androidx.compose.ui.window.Window +import androidx.compose.ui.window.WindowPlacement +import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.application import androidx.compose.ui.window.rememberTrayState import androidx.compose.ui.window.rememberWindowState import com.pr0gramm3r101.utils.UtilsLibrary -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.launch -import org.jetbrains.skia.Image -import ru.fromchat.AppForeground -import ru.fromchat.api.ApiClient -import ru.fromchat.api.local.workers.AttachmentTransferBootstrap -import ru.fromchat.ui.App -import ru.fromchat.ui.LocalExtraStatusBarTop +import java.awt.Desktop +import java.awt.KeyboardFocusManager +import java.awt.event.ActionEvent import java.io.BufferedReader import java.io.InputStreamReader import java.io.OutputStreamWriter @@ -37,8 +44,22 @@ import java.net.ServerSocket import java.net.Socket import java.nio.charset.StandardCharsets import java.util.concurrent.atomic.AtomicBoolean +import javax.swing.JComponent import javax.swing.JRootPane +import javax.swing.SwingUtilities +import javax.swing.text.DefaultEditorKit import kotlin.concurrent.thread +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch +import org.jetbrains.skia.Image +import ru.fromchat.AppForeground +import ru.fromchat.Logger +import ru.fromchat.api.ApiClient +import ru.fromchat.api.local.workers.AttachmentTransferBootstrap +import ru.fromchat.ui.App +import ru.fromchat.ui.LocalExtraStatusBarTop private object DesktopApplicationBootstrap { private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Default) @@ -113,28 +134,19 @@ private object DesktopProtocolRegistration { fun registerBestEffort() { runCatching { when { - isMac() -> Unit // Packaged macOS builds declare CFBundleURLTypes in Info.plist. - isWindows() -> registerWindows() - isLinux() -> registerLinux() + isMacOs() -> Unit // Packaged macOS builds declare CFBundleURLTypes in Info.plist. + isWindowsOs() -> registerWindows() + isLinuxOs() -> registerLinux() } } } - private fun isMac(): Boolean = - System.getProperty("os.name").orEmpty().lowercase().contains("mac") - - private fun isWindows(): Boolean = - System.getProperty("os.name").orEmpty().lowercase().contains("win") - - private fun isLinux(): Boolean = - System.getProperty("os.name").orEmpty().lowercase().contains("linux") - private fun javaLauncherCommand(): String { val javaHome = System.getProperty("java.home") - val javaBin = if (isWindows()) "$javaHome\\bin\\javaw.exe" else "$javaHome/bin/java" + val javaBin = if (isWindowsOs()) "$javaHome\\bin\\javaw.exe" else "$javaHome/bin/java" val classPath = System.getProperty("java.class.path") val main = "ru.fromchat.desktop.MainKt" - return if (isWindows()) { + return if (isWindowsOs()) { "\"$javaBin\" -cp \"$classPath\" $main" } else { "$javaBin -cp ${shellQuote(classPath)} $main" @@ -183,6 +195,10 @@ private object DesktopProtocolRegistration { } fun main(args: Array) { + if (isMacOs()) { + System.setProperty("apple.awt.application.name", "FromChat") + System.setProperty("apple.laf.useScreenMenuBar", "true") + } if (!DesktopSingleInstance.acquireOrForward(args)) return DesktopProtocolRegistration.registerBestEffort() args.filter { DesktopDeepLinkBus.isFromChatUri(it) } @@ -193,10 +209,17 @@ fun main(args: Array) { DesktopApplicationBootstrap.launchOnApplicationStart() val windowState = rememberWindowState() + val aboutWindowState = rememberWindowState( + position = WindowPosition.Aligned(Alignment.Center), + size = DpSize(440.dp, 640.dp), + ) var windowVisible by remember { mutableStateOf(true) } + var aboutOpen by remember { mutableStateOf(false) } val trayState = rememberTrayState() - val appIcon = remember { loadAppIconPainter() } + val trayIcon = remember { loadAppIconPainter(tray = true) } + val windowIcon = remember { loadAppIconPainter(tray = false) } val traySupported = remember { java.awt.SystemTray.isSupported() } + val mac = remember { isMacOs() } DisposableEffect(trayState) { DesktopNotifier.sink = { title, body -> @@ -210,14 +233,26 @@ fun main(args: Array) { } } + LaunchedEffect(Unit) { + if (!mac || !Desktop.isDesktopSupported()) return@LaunchedEffect + val desktop = Desktop.getDesktop() + if (desktop.isSupported(Desktop.Action.APP_ABOUT)) { + desktop.setAboutHandler { + SwingUtilities.invokeLater { aboutOpen = true } + } + } + } + if (traySupported) { Tray( - icon = appIcon, + icon = trayIcon, state = trayState, tooltip = "FromChat", onAction = { windowVisible = true }, menu = { Item("Show") { windowVisible = true } + Item("About FromChat") { aboutOpen = true } + Separator() Item("Quit") { exitApplication() } }, ) @@ -235,7 +270,31 @@ fun main(args: Array) { title = "FromChat", state = windowState, visible = windowVisible || !traySupported, - icon = appIcon, + icon = windowIcon, + onPreviewKeyEvent = { event -> + if (mac || event.type != KeyEventType.KeyDown || !event.isCtrlPressed) { + return@Window false + } + when { + event.isShiftPressed && event.key == Key.A -> { + aboutOpen = true + true + } + event.isShiftPressed && event.key == Key.N -> { + windowVisible = true + true + } + event.key == Key.M -> { + windowState.isMinimized = true + true + } + event.key == Key.Q -> { + exitApplication() + true + } + else -> false + } + }, ) { LaunchedEffect(window) { enableEdgeToEdgeTitleBar(window.rootPane) @@ -244,18 +303,109 @@ fun main(args: Array) { AppForeground.setForeground(true) onDispose { } } + + if (mac) { + FromChatMenuBar( + onAbout = { aboutOpen = true }, + onShow = { windowVisible = true }, + onMinimize = { windowState.isMinimized = true }, + onZoom = { + windowState.placement = + if (windowState.placement == WindowPlacement.Maximized) { + WindowPlacement.Floating + } else { + WindowPlacement.Maximized + } + }, + ) + } + CompositionLocalProvider( - LocalExtraStatusBarTop provides if (isMacOs()) 28.dp else 0.dp, + LocalExtraStatusBarTop provides if (mac) 28.dp else 0.dp, ) { App() } } + + if (aboutOpen) { + Window( + onCloseRequest = { aboutOpen = false }, + title = "About FromChat", + state = aboutWindowState, + icon = windowIcon, + ) { + DesktopAboutContent(onClose = { aboutOpen = false }) + } + } } } +@Composable +private fun FrameWindowScope.FromChatMenuBar( + onAbout: () -> Unit, + onShow: () -> Unit, + onMinimize: () -> Unit, + onZoom: () -> Unit, +) { + MenuBar { + Menu("Actions", mnemonic = 'A') { + Item("About FromChat", onClick = onAbout) + Item( + "Show FromChat", + shortcut = KeyShortcut(Key.N, meta = true, shift = true), + onClick = onShow, + ) + } + Menu("Edit", mnemonic = 'E') { + Item( + "Cut", + shortcut = KeyShortcut(Key.X, meta = true), + onClick = { performAwtEditAction(DefaultEditorKit.cutAction) }, + ) + Item( + "Copy", + shortcut = KeyShortcut(Key.C, meta = true), + onClick = { performAwtEditAction(DefaultEditorKit.copyAction) }, + ) + Item( + "Paste", + shortcut = KeyShortcut(Key.V, meta = true), + onClick = { performAwtEditAction(DefaultEditorKit.pasteAction) }, + ) + Separator() + Item( + "Select All", + shortcut = KeyShortcut(Key.A, meta = true), + onClick = { performAwtEditAction(DefaultEditorKit.selectAllAction) }, + ) + } + Menu("Window", mnemonic = 'W') { + Item( + "Minimize", + shortcut = KeyShortcut(Key.M, meta = true), + onClick = onMinimize, + ) + Item("Zoom", onClick = onZoom) + } + } +} + +private fun performAwtEditAction(actionName: String) { + val focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().focusOwner as? JComponent + ?: return + val action = focusOwner.actionMap.get(actionName) ?: return + action.actionPerformed(ActionEvent(focusOwner, ActionEvent.ACTION_PERFORMED, actionName)) +} + private fun isMacOs(): Boolean = System.getProperty("os.name").orEmpty().lowercase().contains("mac") +private fun isWindowsOs(): Boolean = + System.getProperty("os.name").orEmpty().lowercase().contains("win") + +private fun isLinuxOs(): Boolean = + System.getProperty("os.name").orEmpty().lowercase().contains("linux") + private fun enableEdgeToEdgeTitleBar(rootPane: JRootPane) { if (!isMacOs()) return rootPane.putClientProperty("apple.awt.fullWindowContent", true) @@ -263,11 +413,43 @@ private fun enableEdgeToEdgeTitleBar(rootPane: JRootPane) { rootPane.putClientProperty("apple.awt.windowTitleVisible", false) } -private fun loadAppIconPainter(): Painter { - val bytes = DesktopApplicationBootstrap::class.java.classLoader - .getResourceAsStream("app_icon.png") - ?.use { it.readBytes() } - ?: return BitmapPainter(ImageBitmap(32, 32)) - val skiaImage = Image.makeFromEncoded(bytes) - return BitmapPainter(skiaImage.toComposeImageBitmap()) +/** + * Loads the desktop tray or window icon from packaged resources. + * Prefers PNG, then WebP; returns a tiny empty bitmap only if every decode fails. + */ +private fun loadAppIconPainter(tray: Boolean): Painter { + val names = if (tray) { + listOf("app_icon.png", "app_icon.webp", "app_window_icon.png", "app_window_icon.webp") + } else { + listOf("app_window_icon.png", "app_window_icon.webp", "app_icon.png", "app_icon.webp") + } + val loaders = listOfNotNull( + Thread.currentThread().contextClassLoader, + DesktopApplicationBootstrap::class.java.classLoader, + ClassLoader.getSystemClassLoader(), + ) + + for (name in names) { + for (loader in loaders) { + val stream = loader.getResourceAsStream(name) + ?: loader.getResourceAsStream("/$name") + ?: continue + val bytes = runCatching { stream.use { it.readBytes() } }.getOrNull() ?: continue + if (bytes.isEmpty()) continue + val bitmap = runCatching { + Image.makeFromEncoded(bytes).toComposeImageBitmap() + }.onFailure { error -> + Logger.w("DesktopIcon", "Failed to decode $name: ${error.message}") + }.getOrNull() ?: continue + if (bitmap.width < 16 || bitmap.height < 16) { + Logger.w("DesktopIcon", "Skipping $name — decoded size ${bitmap.width}x${bitmap.height}") + continue + } + Logger.i("DesktopIcon", "Loaded $name (${bitmap.width}x${bitmap.height}) tray=$tray") + return BitmapPainter(bitmap) + } + } + + Logger.w("DesktopIcon", "No app icon resource decoded; using empty placeholder") + return BitmapPainter(ImageBitmap(32, 32)) } diff --git a/app/desktop/src/main/resources/app_icon.png b/app/desktop/src/main/resources/app_icon.png index 1ba37a2..9cb9b79 100644 Binary files a/app/desktop/src/main/resources/app_icon.png and b/app/desktop/src/main/resources/app_icon.png differ diff --git a/app/desktop/src/main/resources/app_icon.webp b/app/desktop/src/main/resources/app_icon.webp index 1f43575..3f5657f 100644 Binary files a/app/desktop/src/main/resources/app_icon.webp and b/app/desktop/src/main/resources/app_icon.webp differ diff --git a/app/desktop/src/main/resources/app_window_icon.png b/app/desktop/src/main/resources/app_window_icon.png new file mode 100644 index 0000000..ccbf862 Binary files /dev/null and b/app/desktop/src/main/resources/app_window_icon.png differ diff --git a/app/desktop/src/main/resources/app_window_icon.webp b/app/desktop/src/main/resources/app_window_icon.webp new file mode 100644 index 0000000..894ad89 Binary files /dev/null and b/app/desktop/src/main/resources/app_window_icon.webp differ diff --git a/app/shared/src/androidMain/kotlin/ru/fromchat/config/DefaultEnterToSend.android.kt b/app/shared/src/androidMain/kotlin/ru/fromchat/config/DefaultEnterToSend.android.kt new file mode 100644 index 0000000..167d9b8 --- /dev/null +++ b/app/shared/src/androidMain/kotlin/ru/fromchat/config/DefaultEnterToSend.android.kt @@ -0,0 +1,3 @@ +package ru.fromchat.config + +internal actual fun defaultEnterToSend(): Boolean = false diff --git a/app/shared/src/androidMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.android.kt b/app/shared/src/androidMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.android.kt new file mode 100644 index 0000000..0ea4d26 --- /dev/null +++ b/app/shared/src/androidMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.android.kt @@ -0,0 +1,8 @@ +package ru.fromchat.ui.chat + +import androidx.compose.runtime.Composable + +@Composable +internal actual fun ProvideChatTextSelectionMenu(content: @Composable () -> Unit) { + content() +} diff --git a/app/shared/src/commonMain/composeResources/drawable/logo_square.png b/app/shared/src/commonMain/composeResources/drawable/logo_square.png new file mode 100644 index 0000000..691e96d Binary files /dev/null and b/app/shared/src/commonMain/composeResources/drawable/logo_square.png differ diff --git a/app/shared/src/commonMain/composeResources/drawable/logo_square.svg b/app/shared/src/commonMain/composeResources/drawable/logo_square.svg index 24c8655..f272fee 100644 --- a/app/shared/src/commonMain/composeResources/drawable/logo_square.svg +++ b/app/shared/src/commonMain/composeResources/drawable/logo_square.svg @@ -1,3507 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -KLUv/QBYpGkK3gVaQE810FBEehBecDwHs8/44mHGXC2L4OhgvkbuJCIAADBljEQEAAAAPDavVSkh -Ugp5gXiAv3KQ+ws4UOhO2E5tejV8FTZNh4wN3KTR5TxR6EQ85qmLKJJWzBRyUVRD0nTSBkJKwvF0 -/T5jk6s1c59FbXu1zatqZHN3KspOMiFKvDQYDYtcbRQ2TVd5xIAdMM3YbgcHO6lGepK0aONMRt9G -2Mc3jXykTvVA0XQ1TRUfB1vZ4JijfY3fN9TgFj4+7IeW3AfvXUlYY35SZYajRP8jKRKusjV1OJvi -xTUNrBxXqB45nsJ1s4bWA4VT1bRVzK939+ct4QxFasG/A2xrmp8pmDLUd9EciU/T4U6Whd5hJXvO -afXaNF2FgE7bshP07CcXZRchbboF7JsWNSDnZbiouQhoU0VL/7BaVC1/2vB5wWt50Gmatqmjzria -phmbqIma+G2++e3G+a3T+23e+y3r56+z5j+66K/C6G/P6OfX6m/e6u+u9+e3+W+++e/K+a/T+T/a -+6/iGyqbkHrCqHrTqvrqqvL5rPqOrPIbr/oqr/I7yfzCyHzTynziynzzzHyOzHyXznwiz3wz0Xw6 -6f7K6Pbb6v7ippE8M5JcM5J7N5KsN5K9OZLNO5bsbJb6bJYdb5Y9cZZMc5ZsdZYQdZadd5bNe5bc -q5r7rJodr5ossZpMs2ogvslApcngQpdBkZeBlZf9naOBYqTBaqT9bqRBc6TBe6T9fqRBRqSBSqT9 -hVCDIlEDK1H7M1GDPGkDxWprnSalIS+lKi+lOy+lTC+lXi+lfS+lfrP9vdf6vdj6zflSvOtVzAxW -zC1WvC5WzFBWzHFWvHNWzJSGjoYz/sYz/ugz/go0/iyEIlFqIpNqIrdqIvlqIhtrol5rImRrIqaL -IsmLIgtsmiazSJePCmDlEa8ZQXIaiX0TtnAt73B7b5FjNlHtNBg4N9ozV9e7Vxp8Vxt8Z13TubF0 -159U3aNknpvtuvP0PufsVycE8c30EPEFQWUTS9bXRk2c3X7YcA3STVPtNBn4px1cOV3De9eFN1nT -eWUFvrX0+6HWgovkRWIz8VVYQW5TdV9b3WBdFZ443KAwyn4+Y6BOQ74hY0Aic0Mii90jq9+l28HM -aSk72ylH3ChE3evEnZ/m3SPnnarvbiu/e6vPfKtbfetrfqvzfq53ru7vre5nrW7frO5XrO7Pq+5H -q26/qu13nu3vne1nnW3fnO1XnO3Pm+1Hm22/mux3juzvjexnjWzfjFq++oa7+sK3+gaz+kJP9IZK -9MJG8gYl8sI/8oY98uI58qI18mIx7CLN6+LI66Kl6WKj6aKDpovnpovWpmudpqXfe6W9e6Wbc6V/ -c6Vfc6U9c6Uba6X/aqXfN6W9N6WbL6V/L6VfL6U9L6UbJ6X/Jp3f+5y9+5yb85x/q9G6f9D4d9C+ -d9B4b9A+r8/4qM++qM/4n8++n8/4l8++l894j88+T8f4SMe+SMf4P8e+P8f4N8e+N8d4L2+mtgyn -8wsn6wunwwsn2gun0Qsn0QvjyAvjvwvj9/pi8/ri6vpiw/ri2fpi0friyPriv/ri9+li8+ni6ula -qmmrFWqr5Wmr82mrw2mr0VGjYVCjb1Aj/k+j9U+jxU+j00+jo0+jsTejITa7z2nKdm7yRmoaL52a -svFmp2m6hneax4Gixj6apimd9oH4ynruCvv+agLFKmvqo8E+n796r/WPq4Xqp32hPKPeutKfsiKd -PKLaqrk2j622N4kkX8409yBr3qY8pufjL/A7JhfMMw8OtQ9OL949JtflG7g5omZuSqm5mqYqh66q -mqxr4hlqHv5w26hxwEvLn0GfPGKim9RZ9yRrOqdysMbaWl9Op96veSfcY9C9XqIum/no3vdpmkdr -mibeY8i84qg9otyNm0hqmjhNTLlpnu6hmkznsuY4mIavFYkLmyhajrThD0LfdD4NOc6BRjWby2ZN -SXCblpd4p4EIFNTMLBVVBDZtjnJsmqZyMqdzmu0NmzIjYPhelYNvayo+mxPsbJpobSLespWrlWrU -mwmfAE+8+DTR1bQlYrZaF7ERaYD6AR4RheTBW6hp28azlXeAmqpu4gbsvoNyJ/hqfd9h/iAHdifa -RuZMbx1S0zbdgOP7yXxKzTXNwzVtjTBTaEosKT5VVDaN4zSb01m81ELN5TRTcz1N2mRPwzbN80C1 -1MCtBFVNezZZ034N5uRT84RP2VrNY0lNE5VN0zZR00QuBSdlTOIDofAleJa7Bwcq8w0g6tDIeaAS -DUEitFw+jafoEoNDdgM1TdOOzdC0L8RnI8hnqcc3eFMfTfaiEeXemeay2QWRXSPB3jg3XdQ41BE1 -EsU7maM3TeM6UQrhTTjh3Rf5XTn3TiNJPN81oR3GoXVGcps9UtM0T/ay2QbTTeWvVdVdzbV17yH1 -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 -heakFEAB5eAAxcEBZSHlTwKfzweh5gZEwhENyq9ogItIAIOExyRAdqD8TAvFBEeBCkeWkq2VhAKe -Z4KMEjHS0iL6liCgALHh4Cr/MyUjGynAQzKhAMIioNPzJ7ZYPlw+72UEJktMLjA+dk7YagygC5zS -yEcHAlsjISovLR0cFRklGiAdbJ0gnKzU2KQQ2o4OKMVWqiUGpmUCgy3RRohJgPQBseWQcZMA4jwy -FiRCFmyNKpxAdNJoQCxOYi4kJtgaTWBYsPUiHSckti4qNDgkMcIKJCC2REQwKB4w2OLISFGZpGBr -IgNCogZkBMTW6OG9Fw62QjA4PJg+gGBe2JJJOb3IhHpuHFs37abnJORQAzIC+vCzoISYGFIHbI0w -bl50QFzxgqBhsyOQkiCxaYFhC0MDJCTD5GOEAALEJQUMqMZigidkZATldFr5uMC4EGGrBMRDJkUH -hFKwMHmwYHkMExYSGR89z7GFMrGwGPCARiR0Gk03GB8iMzw7bKUQDOyAdHpIf/EcZFYcSio3PDmA -82GLpiFg4POxYjJiA7LB1qiBMYRRwnBh+gBiiyanJgAkGrDxUMkBYQQcpE50SjJswdTExLi4sHVT -Y+LRSGHkaCQDqgPkMAPTQXKSehjVYArlAzGqQbZmWAxkFtjZCkEwOEQDKABqPwQ+n0+NphhY6MgF -SC8EZHZAEkLYo4icnEgREM4WykRFBmpHJrY4PgL679a1aWulif342qFq09eVN34/1u9tyVqh81vk -bLfb1LtK3v+n+7bTPbffmy25l6h6m4tPGZ/jbqe77WVXmO/0vT5+69qYruFypb6umZ2c2U472Znz -synvElX/6s2K7py+d3Z17zAbq77Edv/detVlc6q3Xa00Xf/j95nbcLVq5k9+3uiy+ePMfKe9zs1T -q7f91B+7djZErfy1omeqcq87dqzr7m17n5WvdzrXnJsNX1bv7nHve927z+m2s8ts6lmherMzf+5r -urkvf523Y3fr/cnZqOva0rPy3m/n3Wdt+f51u1b3nBt6Vru73e65d7+c/JiI6m09q/Xn/rbd95+m -rj5svlBV+uZ+Oufb7Xk69Hy5Trv5a8X/n/yajfut7TbdK3bjt5V/uzs2t4nL7OiPm7querPfcnOb -/Fy/s9tuV+l417F10ZvbrHbxPaKu823vXem/VOf+y9icc4mqTsRm9xx/NnZeYbrnvN/92vyzQv5N -dt983Bq9eg/bGzV9sTmnVe7yq3PochunV8v5q9mPqW1Rl03Vre5dpr98zalX74iOOdm5Nqe6RtXj -onje7ynm6m9iuuzG/ea/FTNvprJ77r17Ltt5tvxdogrdu3vEZl5vRm6H77y1b7W8i8j69hH3lZPb -61brzPz+Paprz7365ny4y++zObdLVHn6vtTm7lWi8uN0/hpbtlb4chvf1102dq+QHz/8zue4LWr1 -3nX7pu57W/aKHbt+iv9+23ouUbXuKT9txsf26BU7l6z96e0tNyvPdIzuEPu19119pud7vg+1PWb1 -b1/v9qNua+7K171H97p5G/s260vv7dceu0p8fehOHzeqa4ef2fZxlYnbznGyb0uXVeLDx+uYn7bX -6YzOndt12+Vq/V2+umZV5MZdx435rXcrXIedu52sD3ORHXura2+1ei7R+X6/1uf97PiRsyFnhci+ -j98uKrt924mb3Xqzem9/bWVUbuqyYmxud+r7+DnGdYre+01dLlGV/pi3uWb1Phfd/+Xjxi6rz951 -z9/xtcys3rXjfuiO3hCz4kX+RffW1xqznfMhevvMJaoU2zc/ebVxZtXu+/n2qbummxWucy+7rtOW -mtVzuquvO/+15ayaFR/ivsWGmxXzc/vbqe417lyi6h25kZ3ienubVfpz93+339qzWlTNVs5817yz -4vfScTKre+1fVrmOH79sTtf4s/rFt86pL3JzqUtUvXPsPlufy5ZOq6evyIn/3XK1SuR3+rvc2GnV -uM/q+rVzzVerftTkROROd/p+n0vXlHWJKnaeno/zVdEhv8f+ONuzVqj82uzWnaq7t777TXmrfe2Q -ed+rtndasePMl5iv297yElWK6FT1sfdr77TC57suXWq6xtsVqm+/Z2u79pxW7s69Tn7P3J670l1+ -jczPriVqpe495n5n1y29l6jiR1e3j3u5NWrVz2E6d+e+jb+r39fm167L7VMr3e1G97/fHnrlj574 -XL9yc6zV2938dK3KzdeXqPLuTvfn+97ca7XZ/piq+rp9e/UeP6tTfHbN3VavGX3ZvVf+6tjt3jtt -rVupOirr41xGf8V//vra91aPH7Jj97ifv/dcEV+yt0auNh326+/e50/M3nTe3La5Sn+M+9vtrjlq -u3Z/mq4tsat0ru7bIeY/13Xd+hy/htnVYrajL7a3fl6hvq7rrutuqF39t8Pub93X+PkSVf/ulN07 -dddwu2p+rG9z/WHb59Vzzt++u/Nu7rtCf87FbPRv/V61q2sjN+o2Ra+WtdcVEb2bty9R9bC53b/n -7vbqFbpkp+s0HzZXr9a95867nbN1e/Wd39mp39/UeaXfzrUiruvd3O11/Rw27l6iChG336u+177t -nqr/tGV2hYztEF+qY/e8/FLfe3vOb1+mrqd7bK68bKp11nfpj7/tA4uCY4IxxpYLzAknADcxO5WL -zg3PjosOTOUCc8Jx4Tnx3KRSp8oFAKcdmKXjUiNz0gFxgTl1MLYUFCRIMqSS9nfJzN1t9Z0HJuVC -WlhwSanzIrpt+PZ5p6ZkSM/5NyWbHhQqJCHRz51zw4KNRao28fF57qtr3u2eN/NXy+652eFvN29e -O6EqQ0gidM9381ndew75mfG583XvNU9Mx6fozX/3f5GfO27u7RJV7yW+VFRHdG5u53/oVN0zbvr6 -tlN1rp+jamPl9t9cZmxt7rxQD7d/txWftofqj/891zy5+uR8u6/Rbad7rM4Z/1uva4f+9mnTbMfr -i/mvWydXv269u3V29e65HbdNrrx1l1v/fauq64eab7NpcvXdnYnIqt00XR2zY8d2LZOrVvbny/qb -/Zpvn8N1vur61n12c96H/fidZn/ru5bb+a+1Y03t3NfcdYWI6Mn469/e22q1nbpt59Cz/bdqVt7k -XYeuqft1Ru537G+9HbrlR/feOrd/OzvnxWfPVW9tjV01u2v36RKxsW+17qEuvk/H39XM99jwt3Ld -dt+u6t1Wu+rufs3N31b973ozezMbclfK6DT9bTrXFrl6D5H7U9WbdzcnunOH3s0pI7o+RNf2u3pu -8XHRn3Pvcb9NdtvY8nX1dD1x8W1rO+f53/D1Mieyv/T2mKtt7VXGd+pNvyvUl60v9xn1V30b/73b -d1f+/bqd6+TmHle67jHnozc3ZX9Vduoc46s+/e9Xf22vXeWre455X//r82PuNjau4ut2u//ce66x -6+ohZq6nc5/tua6Yndm/0b1fvnzor3lfQ9dVttvHTp061/q5yuZ01+Zlbel6iSp117368LWbO1eZ -ng733Wo2h13pe3y46FqfPyavu+70ptjVdjOie/+wOecqcR0fu+PH5o2bz7d1c8Xv8v2x61aH/PDd -9mv8Lpsdu20uOzPz/a66dH//5xaby16k1Ledvcv/7WE/fpvtqk9Vk5Pds9/Tp5mO8+1zi4/f32dT -5yq3nXNeXW5k5+d8qfuaKi9Rle6Od/O55zbX/Xsv2XXbtxWu+rv3mh82bq7+IT/nuryv7W/FTzfx -Hb+2Z65Qm51jq3tu7e3e8/V03IbM1TvFzveXzG19q+f4nTKq62+5XKlzq92L666lb4Wayo99lb+t -cqWq7vjev25j32VTPXXpmuyWu31yxYmNL/vp27a/aydUuXxZJNI+P4fo7nnV/DJxfR96w7fV7+77 -h/kOW+NW78+YnN6KzTmuXrIrL7ZqN89dokoTnyt7v2ZL5ApxURt7+9kRPfPR19FlP27NW+Fzj90i -Jzd2rva11b8lr3ruS37pzR9Xyq6b28utnrPqo/e/t83udt1nbOjWoTevuvawK17dZVeXL1uzvvKz -v9T2nitkdMrY/tA1Va3w3+2+h/zPFVXdNUetmted8re3tqdcsXupb9F1X1tUT8bnnkNsjlzhs+tl -VER3jJ+Zzvhavq0SO1mfUxdV3zp8+87tfStFZpf+z+saui6bih0jJuL7o/L7e+zY7Rq5yQ/WyyKR -sNkx+75m7/tV1xXyfzK3Vq/euuNc/fV37PnYu9yydYmq5FVk564fa7778/auVTpPzPZ15Hz8bfbf -b9lbrft8++2VN//5e996OXEdX35ya+5rTrt6+K+dqi9z29c5Or77xt0Vuvb3h4jtTdMrdofPr/9f -Nn7dqvvN3d2et93xLyb2vnubuNzWu3qd7Knp7dp0vWp1/h5+4tv36/a/9Z83509/fV/OhtiVuvO2 -U0V97dkrZ2/cbt9cPe9nZiuvdqf+Q+fX1zi5Qn38zvUldnvm72fT3+r9w2WHrI+5/54/dnJ7vJUy -si43117hrz738Ll38d06xPevNfsSVcqrzJi4v41xK+/Vx0/n+43XK15E1fzF3ZZPq3Z0m++N3lS9 -avxUVHz33Ni1eq2Nr52368boS1Q1OtWIJKgUBV/PkURGNBDCQAxBHkMGSVXbAGMQcECDg+GMKszh -TZccFIABOigIEiRKEAha5qFnEJJAAAAACAgIQADoASiDSfC0wFBJnWNKK3RWGZgEEyw6R7QM/X+F -ohsQGMPkotzZcJIyqbtM+fgi/K0wTcq/O1FSsiGbgVn+mDK6crREoPSGYE6ddahSfJF8hGt+20mh -I8Y1trSNgR8gvRMxCRkzgukBxKl9T6RVb3TSn+nkOGt6yYNsHdT7IAw4KaWy8fQe16kylctWMuRU -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 -mbZpWTpGzBMtHhfURA4B - - - - \ No newline at end of file + + + diff --git a/app/shared/src/commonMain/composeResources/values-ru/strings.xml b/app/shared/src/commonMain/composeResources/values-ru/strings.xml index 479943b..1f981f8 100644 --- a/app/shared/src/commonMain/composeResources/values-ru/strings.xml +++ b/app/shared/src/commonMain/composeResources/values-ru/strings.xml @@ -64,6 +64,8 @@ Вход через Яндекс ID отменён или не удался. Чаты Выберите чат, чтобы начать переписку + Выберите контакт + Выберите раздел настроек Контакты Профиль Личные чаты @@ -299,6 +301,8 @@ Выйти Material You Цвета как на обоях. Работает с Android 12 и новее. + Отправка по Enter + Enter отправляет сообщение. Shift+Enter — новая строка. Оформление Как на телефоне Светлое @@ -374,6 +378,7 @@ Введите новый пароль ещё раз, чтобы убедиться, что без ошибок. Далее Версия, ссылки и другое + Ваш профиль и публичная информация Журнал Просмотр, отправка и очистка журнала Записей пока нет diff --git a/app/shared/src/commonMain/composeResources/values/strings.xml b/app/shared/src/commonMain/composeResources/values/strings.xml index 20e0af8..e883fbe 100644 --- a/app/shared/src/commonMain/composeResources/values/strings.xml +++ b/app/shared/src/commonMain/composeResources/values/strings.xml @@ -72,6 +72,8 @@ Chats Select a chat to start messaging + Select a contact to view + Select a setting to view Contacts Profile Private chats @@ -328,6 +330,8 @@ Log out Material You Match colors to your wallpaper. Works on Android 12 and up. + Send on Enter + Enter sends the message. Shift+Enter adds a new line. Look Same as phone Light @@ -402,6 +406,7 @@ Type your new password again to make sure it matches. Next Version, links, and more + Your profile and public info Logs View, share, and manage app logs No log entries yet diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/config/DefaultEnterToSend.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/config/DefaultEnterToSend.kt new file mode 100644 index 0000000..bdaac12 --- /dev/null +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/config/DefaultEnterToSend.kt @@ -0,0 +1,4 @@ +package ru.fromchat.config + +/** Platform default for [Settings.enterToSend] when the key is unset. */ +internal expect fun defaultEnterToSend(): Boolean diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/config/Settings.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/config/Settings.kt index 3bd85a7..98c4cac 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/config/Settings.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/config/Settings.kt @@ -17,6 +17,7 @@ import com.pr0gramm3r101.utils.settings.Settings as PlatformSettings object Settings { private const val MATERIAL_YOU_KEY = "materialYou" private const val THEME_KEY = "theme" + private const val ENTER_TO_SEND_KEY = "enter_to_send" /** Legacy single field "host:port" or hostname — migrated once to [SERVER_IP_KEY] / [API_PORT_KEY]. */ private const val SERVER_URL_KEY = "server_url" private const val SERVER_IP_KEY = "server_ip" @@ -80,6 +81,16 @@ object Settings { get() = runBlocking { Theme.entries[settings.getInt(THEME_KEY, Theme.AsSystem.ordinal)] } set(value) = runIO { settings.putInt(THEME_KEY, value.ordinal) } + /** + * When true, Enter sends the message and Shift+Enter inserts a newline. + * When false, Enter inserts a newline (previous composer behavior). + * + * Default: ON on desktop (JVM), OFF on mobile (Android / iOS). + */ + var enterToSend: Boolean + get() = runBlocking { settings.getBoolean(ENTER_TO_SEND_KEY, defaultEnterToSend()) } + set(value) = runIO { settings.putBoolean(ENTER_TO_SEND_KEY, value) } + var httpsEnabled: Boolean get() = runBlocking { if (settings.contains(HTTPS_ENABLED_KEY)) { diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/App.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/App.kt index 271c5ec..9b1c6fa 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/App.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/App.kt @@ -12,13 +12,9 @@ import androidx.compose.animation.scaleIn import androidx.compose.animation.scaleOut import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.width import androidx.compose.material3.SnackbarDuration import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.DisposableEffect @@ -99,15 +95,22 @@ import ru.fromchat.ui.calls.CallOverlay import ru.fromchat.ui.chat.panels.dm.DmChatRoute import ru.fromchat.ui.chat.panels.dm.DmNav import ru.fromchat.ui.chat.panels.dm.DmProfileRoute +import ru.fromchat.ui.chat.panels.dm.navigateToDmChat import ru.fromchat.ui.chat.panels.publicchat.PublicChatChatRoute import ru.fromchat.ui.chat.panels.publicchat.PublicChatNav import ru.fromchat.ui.chat.panels.publicchat.PublicChatProfileRoute +import ru.fromchat.ui.chat.panels.publicchat.navigateToPublicChat import ru.fromchat.ui.main.ConversationListDetailShell import ru.fromchat.ui.main.ConversationProfileThirdPaneMinWidth +import ru.fromchat.ui.main.EmptyContactsPlaceholder import ru.fromchat.ui.main.EmptyConversationPlaceholder +import ru.fromchat.ui.main.EmptySettingsPlaceholder import ru.fromchat.ui.main.MAIN_PAGE_CHATS +import ru.fromchat.ui.main.MAIN_PAGE_CONTACTS +import ru.fromchat.ui.main.MAIN_PAGE_SETTINGS import ru.fromchat.ui.main.MainScreen import ru.fromchat.ui.main.chats.ChatsSearchScreen +import ru.fromchat.ui.main.navigateReplacingMainDetail import ru.fromchat.ui.main.settings.LOG_FILE_OPEN_RESULT_KEY import ru.fromchat.ui.main.settings.LogFilesScreen import ru.fromchat.ui.main.settings.LogsScreen @@ -140,10 +143,45 @@ private fun isConversationProfileRoute(route: String?): Boolean = route == PublicChatNav.PROFILE_ROUTE || (route != null && route.startsWith("dm/") && route.endsWith("/profile")) -private fun isConversationShellRoute(route: String?): Boolean = - route == "chat" || - isConversationChatRoute(route) || - isConversationProfileRoute(route) +private fun isStandaloneProfileRoute(route: String?): Boolean = + route != null && route.startsWith("profile/") + +private fun standaloneProfileUserId(route: String?): Int? { + if (route == null || !isStandaloneProfileRoute(route)) return null + return route + .substringAfter("profile/") + .substringBefore("?") + .toIntOrNull() + ?.takeIf { it > 0 } +} + +private fun isConversationShellRoute( + route: String?, + previousRoute: String?, + ownUserId: Int?, +): Boolean { + if (route == "chat" || isConversationChatRoute(route) || isConversationProfileRoute(route)) { + return true + } + if (isStandaloneProfileRoute(route)) { + if (isConversationChatRoute(previousRoute)) return true + return ownUserId != null && standaloneProfileUserId(route) == ownUserId + } + if (route != null && route.startsWith("settings/")) return true + if (route == "about") return true + if (route == SettingsRoutes.ServerConfig) { + return previousRoute == "chat" || + previousRoute == "about" || + (previousRoute != null && previousRoute.startsWith("settings/")) + } + return false +} + +private fun isSettingsDetailRoute(route: String?): Boolean { + if (route == null) return false + if (route.startsWith("settings/") || route == "about") return true + return route == SettingsRoutes.ServerConfig +} private fun dmUserIdFromRoute(route: String?): Int? { if (route == null || !route.startsWith("dm/")) return null @@ -427,15 +465,10 @@ fun App( "navigating to dm user=${target.dmConversationUserId} " + "messageId=${target.scrollToMessageId} launchId=${target.launchId}" ) - navController.navigate( - DmNav.chatRoute( - otherUserId = target.dmConversationUserId, - sourceMessageId = target.scrollToMessageId, - ) - ) { - launchSingleTop = true - popUpTo("chat") { saveState = true } - } + navController.navigateToDmChat( + otherUserId = target.dmConversationUserId, + sourceMessageId = target.scrollToMessageId, + ) } target.startAtPublicChat -> { @@ -443,9 +476,7 @@ fun App( "NotificationLaunch", "navigating to public chat launchId=${target.launchId}" ) - navController.navigate(PublicChatNav.CHAT_ROUTE) { - launchSingleTop = true - } + navController.navigateToPublicChat() } } } @@ -458,19 +489,47 @@ fun App( if (startDestination != null) { val currentEntry by navController.currentBackStackEntryAsState() val currentRoute = currentEntry?.destination?.route + val previousRoute = + navController.previousBackStackEntry?.destination?.route val widthSizeClass = currentWindowAdaptiveInfo().widthSizeClass var pendingMainTab by remember { mutableIntStateOf(MAIN_PAGE_CHATS) } + val ownUserId = ApiClient.user?.id val showConversationListDetail = widthSizeClass != WindowWidthSizeClass.COMPACT && - isConversationShellRoute(currentRoute) + isConversationShellRoute(currentRoute, previousRoute, ownUserId) ScreenSurface { Box(Modifier.fillMaxSize()) { BoxWithConstraints(Modifier.fillMaxSize()) { + val canFitProfileThirdPane = + maxWidth >= ConversationProfileThirdPaneMinWidth val showProfileThirdPane = showConversationListDetail && - isConversationProfileRoute(currentRoute) && - maxWidth >= ConversationProfileThirdPaneMinWidth + canFitProfileThirdPane && + ( + isConversationProfileRoute(currentRoute) || + ( + isStandaloneProfileRoute(currentRoute) && + isConversationChatRoute(previousRoute) + ) + ) + val settingsProfileSplit = + showConversationListDetail && + isStandaloneProfileRoute(currentRoute) && + !showProfileThirdPane && + standaloneProfileUserId(currentRoute) == ownUserId + val listPaneWidth = + if (widthSizeClass == WindowWidthSizeClass.EXPANDED) { + 448.dp + } else { + 360.dp + } + val forceSettingsListTab = + settingsProfileSplit || + ( + showConversationListDetail && + isSettingsDetailRoute(currentRoute) + ) @Composable fun AppNavHost(modifier: Modifier = Modifier) { @@ -575,12 +634,12 @@ fun App( animatedVisibilityScope = this, onOpenProfile = { userId: Int -> if (userId != 0) { - navController.navigate("profile/$userId") + navController.navigateReplacingMainDetail("profile/$userId") } }, onOpenConversation = { userId: Int -> if (userId != 0) { - navController.navigate(DmNav.chatRoute(userId)) + navController.navigateToDmChat(userId) } } ) @@ -620,9 +679,9 @@ fun App( ProfileScreen( userId = userId, username = profileUsername, - showBackButton = true, + showBackButton = !settingsProfileSplit, onBack = { navController.navigateUp() }, - onChat = { navController.navigate(DmNav.chatRoute(it)) }, + onChat = { navController.navigateToDmChat(it) }, sharedTransitionScope = this@SharedTransitionLayout, animatedVisibilityScope = this@composable, showErrorAsToast = fromDeepLink @@ -802,56 +861,72 @@ fun App( if (showConversationListDetail) { ConversationListDetailShell( - widthSizeClass = widthSizeClass, showProfilePane = showProfileThirdPane, + listPaneWidth = listPaneWidth, listPane = { MainScreen( sharedTransitionScope = this@SharedTransitionLayout, snackbarHostState = profileLookupSnackbarHostState, - listPaneOnly = true, + embeddedInListDetail = true, + initialPage = pendingMainTab, + forceSettingsTab = forceSettingsListTab, + onPageChanged = { pendingMainTab = it }, ) }, detailPane = { - if (showProfileThirdPane) { - androidx.compose.animation.AnimatedVisibility( - visible = true, - enter = EnterTransition.None, - exit = ExitTransition.None, - ) { - val dmUserId = dmUserIdFromRoute(currentRoute) - when { - dmUserId != null -> DmChatRoute( - otherUserId = dmUserId, - scrollToMessageId = null, - navController = navController, - sharedTransitionScope = this@SharedTransitionLayout, - animatedVisibilityScope = this, - ) - currentRoute == PublicChatNav.PROFILE_ROUTE || - currentRoute == PublicChatNav.CHAT_ROUTE -> { - PublicChatChatRoute( - scrollToMessageId = scrollToMessageId, + when { + showProfileThirdPane -> { + androidx.compose.animation.AnimatedVisibility( + visible = true, + enter = EnterTransition.None, + exit = ExitTransition.None, + ) { + val chatRouteForDetail = + when { + isConversationProfileRoute(currentRoute) -> + currentRoute + isConversationChatRoute(previousRoute) -> + previousRoute + else -> null + } + val dmUserId = dmUserIdFromRoute(chatRouteForDetail) + ?: dmUserIdFromRoute(currentRoute) + when { + dmUserId != null -> DmChatRoute( + otherUserId = dmUserId, + scrollToMessageId = null, navController = navController, sharedTransitionScope = this@SharedTransitionLayout, animatedVisibilityScope = this, ) + chatRouteForDetail == PublicChatNav.PROFILE_ROUTE || + chatRouteForDetail == PublicChatNav.CHAT_ROUTE || + currentRoute == PublicChatNav.PROFILE_ROUTE -> { + PublicChatChatRoute( + scrollToMessageId = scrollToMessageId, + navController = navController, + sharedTransitionScope = this@SharedTransitionLayout, + animatedVisibilityScope = this, + ) + } } } } - } else { - AppNavHost(Modifier.fillMaxSize()) + isSettingsDetailRoute(currentRoute) -> + AppNavHost(Modifier.fillMaxSize()) + currentRoute == "chat" -> { + when (pendingMainTab) { + MAIN_PAGE_CONTACTS -> EmptyContactsPlaceholder() + MAIN_PAGE_SETTINGS -> EmptySettingsPlaceholder() + else -> EmptyConversationPlaceholder() + } + } + else -> AppNavHost(Modifier.fillMaxSize()) } }, profilePane = { AppNavHost(Modifier.fillMaxSize()) }, - onSelectMainTab = { page -> - pendingMainTab = page - navController.navigate("chat") { - popUpTo("chat") { inclusive = true } - launchSingleTop = true - } - }, ) } else { AppNavHost(Modifier.fillMaxSize()) diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatInput.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatInput.kt index 2e5c06f..522a5c5 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatInput.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatInput.kt @@ -36,6 +36,8 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.BasicTextField +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.rounded.Reply import androidx.compose.material.icons.rounded.ArrowUpward @@ -63,14 +65,22 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.KeyEventType +import androidx.compose.ui.input.key.isShiftPressed +import androidx.compose.ui.input.key.key +import androidx.compose.ui.input.key.onPreviewKeyEvent +import androidx.compose.ui.input.key.type import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil3.compose.AsyncImage +import com.pr0gramm3r101.utils.conditional import dev.chrisbanes.haze.HazeState import dev.chrisbanes.haze.blur.blurEffect import dev.chrisbanes.haze.hazeEffect @@ -85,6 +95,7 @@ import ru.fromchat.cd_pick_file import ru.fromchat.cd_pick_image import ru.fromchat.cd_remove import ru.fromchat.cd_send +import ru.fromchat.config.Settings import ru.fromchat.message_corrupted_short import ru.fromchat.message_editing_title import ru.fromchat.message_placeholder @@ -290,6 +301,7 @@ fun ChatInput( } val canSend = !isReadOnly && (text.isNotBlank() || attachments.isNotEmpty()) + val enterToSend = Settings.enterToSend val cdClose = stringResource(Res.string.cd_close) val cdRemove = stringResource(Res.string.cd_remove) val cdPickImage = stringResource(Res.string.cd_pick_image) @@ -301,6 +313,15 @@ fun ChatInput( val blockedMessage = stringResource(Res.string.suspend_chat_banner_message) val cdVoiceUnavailable = "Функция пока не готова. Следите за обновлениями!" + fun sendMessage() { + if (!canSend) return + val plaintext = text.trim().ifBlank { "" } + onSend(plaintext, attachments) + onTextChange("") + attachments = emptyList() + typingHandler.stopTyping() + } + Box( modifier = Modifier .fillMaxWidth() @@ -447,10 +468,27 @@ fun ChatInput( modifier = Modifier .weight(1f) .fillMaxWidth() - .align(Alignment.Bottom), + .align(Alignment.Bottom) + .conditional(enterToSend) { + onPreviewKeyEvent { event -> + if (event.type != KeyEventType.KeyDown) return@onPreviewKeyEvent false + if (event.key != Key.Enter && event.key != Key.NumPadEnter) { + return@onPreviewKeyEvent false + } + if (event.isShiftPressed) return@onPreviewKeyEvent false + sendMessage() + true + } + }, textStyle = inputTextStyle, singleLine = false, maxLines = 5, + keyboardOptions = KeyboardOptions( + imeAction = if (enterToSend) ImeAction.Send else ImeAction.Default, + ), + keyboardActions = KeyboardActions( + onSend = { sendMessage() }, + ), cursorBrush = SolidColor(MaterialTheme.colorScheme.primary), decorationBox = { innerTextField -> Box( @@ -545,11 +583,7 @@ fun ChatInput( .clip(CircleShape) .clickable { if (canSend) { - val plaintext = text.trim().ifBlank { "" } - onSend(plaintext, attachments) - onTextChange("") - attachments = emptyList() - typingHandler.stopTyping() + sendMessage() } else { scope.launch { snackbarHostState?.showSnackbar(message = cdVoiceUnavailable) diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatScreen.kt index 4f94e50..3ba34ea 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatScreen.kt @@ -1075,13 +1075,18 @@ fun ChatScreen( Box( modifier = Modifier .fillMaxSize() - .pointerInput(Unit) { - detectTapGestures { - if (contextMenuState.isOpen) { - contextMenuState = contextMenuState.copy(isOpen = false) + .then( + if (contextMenuState.isOpen) { + Modifier.pointerInput(Unit) { + detectTapGestures { + contextMenuState = + contextMenuState.copy(isOpen = false) + } } - } - } + } else { + Modifier + }, + ), ) { if (panelState.isLoading && panelState.messages.isEmpty()) { Box( diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.kt new file mode 100644 index 0000000..5dc07ea --- /dev/null +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.kt @@ -0,0 +1,10 @@ +package ru.fromchat.ui.chat + +import androidx.compose.runtime.Composable + +/** + * On desktop, provides a [MessageContextMenu]-styled text selection menu (copy, etc.). + * On touch targets this is a no-op passthrough. + */ +@Composable +internal expect fun ProvideChatTextSelectionMenu(content: @Composable () -> Unit) diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageContextMenu.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageContextMenu.kt index f6da6b6..2e98e99 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageContextMenu.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageContextMenu.kt @@ -317,15 +317,114 @@ private fun ContextMenuContent( transformOriginX: Float = 0f, transformOriginY: Float = 0f, ) { - val menuShape = RoundedCornerShape(16.dp) val menuScrollState = rememberScrollState() + val labelReply = stringResource(Res.string.action_reply) + val labelEdit = stringResource(Res.string.action_edit) + val labelDelete = stringResource(Res.string.action_delete) + val labelCopy = stringResource(Res.string.action_copy) + val labelSave = stringResource(Res.string.action_save) + val labelCancelSend = stringResource(Res.string.action_cancel_send) + val labelRetrySend = stringResource(Res.string.action_retry_send) + val isQueued = message.isQueuedOutbound() && isAuthor + val sendFailed = isQueued && !message.uploadError.isNullOrBlank() + val canSave = resolveSavableMessageImage(message) != null || + resolveSavableMessageFile(message) != null + + ChatStyleContextMenuFrame( + modifier = modifier, + animated = animated, + withShadow = withShadow, + scale = scale, + alpha = alpha, + transformOriginX = transformOriginX, + transformOriginY = transformOriginY, + ) { + Column( + modifier = Modifier + .padding(horizontal = 8.dp, vertical = 8.dp) + .verticalScroll(menuScrollState), + verticalArrangement = Arrangement.spacedBy(2.dp), + ) { + if (!message.isContentCorrupted) { + ChatStyleContextMenuItem( + icon = Icons.Rounded.ContentCopy, + text = labelCopy, + onClick = { onCopy(message) }, + ) + } + if (canSave) { + ChatStyleContextMenuItem( + icon = Icons.Rounded.SaveAlt, + text = labelSave, + onClick = { onSave(message) }, + ) + } + if (sendFailed) { + ChatStyleContextMenuItem( + icon = Icons.Rounded.Refresh, + text = labelRetrySend, + onClick = { onRetrySend(message) }, + ) + ChatStyleContextMenuItem( + icon = Icons.Rounded.Close, + text = labelCancelSend, + onClick = { onCancelSend(message) }, + isError = true, + ) + } else if (isQueued) { + ChatStyleContextMenuItem( + icon = Icons.Rounded.Close, + text = labelCancelSend, + onClick = { onCancelSend(message) }, + isError = true, + ) + } else if (!isReadOnly) { + ChatStyleContextMenuItem( + icon = Icons.AutoMirrored.Rounded.Reply, + text = labelReply, + onClick = { onReply(message) }, + ) + if (isAuthor && !message.isContentCorrupted) { + ChatStyleContextMenuItem( + icon = Icons.Rounded.Edit, + text = labelEdit, + onClick = { onEdit(message) }, + ) + } + if (canDelete) { + ChatStyleContextMenuItem( + icon = Icons.Rounded.Delete, + text = labelDelete, + onClick = { onDelete(message) }, + isError = true, + ) + } + } + } + } +} + +private val chatStyleMenuItemShape = RoundedCornerShape(12.dp) + +/** Shared chrome for message + text-selection context menus. */ +@Composable +internal fun ChatStyleContextMenuFrame( + modifier: Modifier = Modifier, + animated: Boolean = false, + withShadow: Boolean = true, + scale: Float = 1f, + alpha: Float = 1f, + transformOriginX: Float = 0f, + transformOriginY: Float = 0f, + content: @Composable () -> Unit, +) { + val menuShape = RoundedCornerShape(16.dp) val density = LocalDensity.current val shadowElevationPx = if (withShadow) { with(density) { 12.dp.toPx() } } else { 0f } - val baseModifier = modifier.width(IntrinsicSize.Max) val containerModifier = if (animated) { @@ -336,150 +435,78 @@ private fun ContextMenuContent( transformOrigin = TransformOrigin(transformOriginX, transformOriginY), shadowElevation = shadowElevationPx, shape = menuShape, - clip = true + clip = true, ) } else { baseModifier.graphicsLayer( shadowElevation = shadowElevationPx, shape = menuShape, - clip = true + clip = true, ) } - val menuColor = MaterialTheme.colorScheme.surfaceContainer - val edgePadding = 8.dp - val itemSpacing = 2.dp - val labelReply = stringResource(Res.string.action_reply) - val labelEdit = stringResource(Res.string.action_edit) - val labelDelete = stringResource(Res.string.action_delete) - val labelCopy = stringResource(Res.string.action_copy) - val labelSave = stringResource(Res.string.action_save) - val labelCancelSend = stringResource(Res.string.action_cancel_send) - val labelRetrySend = stringResource(Res.string.action_retry_send) - val isQueued = message.isQueuedOutbound() && isAuthor - val sendFailed = isQueued && !message.uploadError.isNullOrBlank() - val savableImage = resolveSavableMessageImage(message) - val savableFile = resolveSavableMessageFile(message) - val canSave = savableImage != null || savableFile != null - Box(modifier = containerModifier) { - Box(modifier = Modifier.matchParentSize().background(menuColor, menuShape)) - Column( + Box( modifier = Modifier - .padding(horizontal = edgePadding, vertical = edgePadding) - .verticalScroll(menuScrollState), - verticalArrangement = Arrangement.spacedBy(itemSpacing) - ) { - if (!message.isContentCorrupted) { - ContextMenuItem( - icon = Icons.Rounded.ContentCopy, - text = labelCopy, - onClick = { onCopy(message) } - ) - } - if (canSave) { - ContextMenuItem( - icon = Icons.Rounded.SaveAlt, - text = labelSave, - onClick = { onSave(message) } - ) - } - if (sendFailed) { - ContextMenuItem( - icon = Icons.Rounded.Refresh, - text = labelRetrySend, - onClick = { onRetrySend(message) }, - ) - ContextMenuItem( - icon = Icons.Rounded.Close, - text = labelCancelSend, - onClick = { onCancelSend(message) }, - isError = true, - ) - } else if (isQueued) { - ContextMenuItem( - icon = Icons.Rounded.Close, - text = labelCancelSend, - onClick = { onCancelSend(message) }, - isError = true - ) - } else if (!isReadOnly) { - ContextMenuItem( - icon = Icons.AutoMirrored.Rounded.Reply, - text = labelReply, - onClick = { onReply(message) } - ) - if (isAuthor && !message.isContentCorrupted) { - ContextMenuItem( - icon = Icons.Rounded.Edit, - text = labelEdit, - onClick = { onEdit(message) } - ) - } - if (canDelete) { - ContextMenuItem( - icon = Icons.Rounded.Delete, - text = labelDelete, - onClick = { onDelete(message) }, - isError = true - ) - } - } - } + .matchParentSize() + .background(MaterialTheme.colorScheme.surfaceContainer, menuShape), + ) + content() } } -private val itemShape = RoundedCornerShape(12.dp) - @Composable -private fun ContextMenuItem( +internal fun ChatStyleContextMenuItem( icon: ImageVector, text: String, onClick: () -> Unit, isError: Boolean = false, - modifier: Modifier = Modifier + enabled: Boolean = true, + modifier: Modifier = Modifier, ) { - val textColor = if (isError) { - MaterialTheme.colorScheme.error - } else { - MaterialTheme.colorScheme.onSurface - } - val iconColor = if (isError) { - MaterialTheme.colorScheme.error - } else { - MaterialTheme.colorScheme.onSurface + val textColor = when { + !enabled -> MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) + isError -> MaterialTheme.colorScheme.error + else -> MaterialTheme.colorScheme.onSurface } + val iconColor = textColor Box( modifier = modifier .fillMaxWidth() .padding(4.dp) - .clip(itemShape) - .scaleOnPress( - scale = 0.96f, - onClick = onClick, - indication = LocalIndication.current, - animationSpec = spring( - dampingRatio = Spring.DampingRatioMediumBouncy, - stiffness = Spring.StiffnessMedium, - ), + .clip(chatStyleMenuItemShape) + .then( + if (enabled) { + Modifier.scaleOnPress( + scale = 0.96f, + onClick = onClick, + indication = LocalIndication.current, + animationSpec = spring( + dampingRatio = Spring.DampingRatioMediumBouncy, + stiffness = Spring.StiffnessMedium, + ), + ) + } else { + Modifier + }, ) .padding(horizontal = 12.dp, vertical = 8.dp), - contentAlignment = Alignment.CenterStart + contentAlignment = Alignment.CenterStart, ) { Row( horizontalArrangement = Arrangement.spacedBy(16.dp), - verticalAlignment = Alignment.CenterVertically + verticalAlignment = Alignment.CenterVertically, ) { Icon( imageVector = icon, contentDescription = text, tint = iconColor, - modifier = Modifier.size(20.dp) + modifier = Modifier.size(20.dp), ) Text( text = text, style = MaterialTheme.typography.bodyMedium, - color = textColor + color = textColor, ) } } diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageItem.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageItem.kt index 7211ddb..2e1bfd7 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageItem.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/MessageItem.kt @@ -11,6 +11,7 @@ import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.awaitEachGesture import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -46,18 +47,16 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.TransformOrigin import androidx.compose.ui.graphics.graphicsLayer -import androidx.compose.ui.input.pointer.PointerEventPass -import androidx.compose.ui.input.pointer.PointerEventType +import androidx.compose.ui.input.pointer.AwaitPointerEventScope +import androidx.compose.ui.input.pointer.PointerEvent +import androidx.compose.ui.input.pointer.changedToDown import androidx.compose.ui.input.pointer.isSecondaryPressed import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.LayoutCoordinates -import androidx.compose.ui.layout.boundsInRoot import androidx.compose.ui.layout.layout import androidx.compose.ui.layout.onGloballyPositioned -import androidx.compose.ui.layout.positionInRoot import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics @@ -65,6 +64,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.util.fastAll import kotlin.math.roundToInt import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch @@ -115,6 +115,37 @@ private fun isMessageCorrupted(message: Message): Boolean { } } +/** First pointer-down event; does not require the press to be unconsumed. */ +private suspend fun AwaitPointerEventScope.awaitEventFirstDown(): PointerEvent { + var event: PointerEvent + do { + event = awaitPointerEvent() + } while (!event.changes.fastAll { it.changedToDown() }) + return event +} + +/** + * Secondary-click only. Primary clicks pass through so [SelectionContainer] can select text. + * Skips already-consumed presses (e.g. text-selection context menu). + */ +private fun Modifier.onMouseSecondaryClick( + key: Any?, + enabled: Boolean, + onSecondaryClick: (localOffset: Offset) -> Unit, +): Modifier { + if (!enabled) return this + return pointerInput(key) { + awaitEachGesture { + val event = awaitEventFirstDown() + if (!event.buttons.isSecondaryPressed) return@awaitEachGesture + val change = event.changes.firstOrNull() ?: return@awaitEachGesture + if (change.isConsumed) return@awaitEachGesture + event.changes.forEach { it.consume() } + onSecondaryClick(change.position) + } + } +} + /** * Scales layout height with the exit animation so the list collapses in real time. */ @@ -470,27 +501,22 @@ fun MessageItem( val mouseMessageUi = supportsMouseMessageInteraction() + val openMessageMenu: (LayoutCoordinates?, Offset) -> Unit = { coords, localOffset -> + if (coords != null && coords.isAttached) { + onTapPosition(coords.localToRoot(localOffset)) + } + isPressed = true + onLongPress() + } + val rowLongPress = if (isContextMenuOpen) Modifier - else Modifier.pointerInput(message.id, onLongPress, mouseMessageUi) { - if (mouseMessageUi) { - awaitPointerEventScope { - while (true) { - val event = awaitPointerEvent(PointerEventPass.Main) - if (event.type == PointerEventType.Press && - event.buttons.isSecondaryPressed - ) { - event.changes.forEach { it.consume() } - val local = event.changes.firstOrNull()?.position ?: continue - val coords = rowLayoutCoords - if (coords != null && coords.isAttached) { - onTapPosition(coords.localToRoot(local)) - } - onLongPress() - } - } - } - } else { + else if (mouseMessageUi) { + Modifier.onMouseSecondaryClick(message.id, enabled = true) { localOffset -> + openMessageMenu(rowLayoutCoords, localOffset) + } + } else { + Modifier.pointerInput(message.id, onLongPress) { detectTapGestures( onPress = { isPressed = true @@ -501,11 +527,7 @@ fun MessageItem( } }, onLongPress = { localOffset -> - val coords = rowLayoutCoords - if (coords != null && coords.isAttached) { - onTapPosition(coords.localToRoot(localOffset)) - } - onLongPress() + openMessageMenu(rowLayoutCoords, localOffset) }, ) } @@ -614,49 +636,40 @@ fun MessageItem( if (isContextMenuOpen) Modifier else Modifier .onGloballyPositioned { bubbleContentCoords = it } - .pointerInput(message.id, onBubbleTap, onLongPress, mouseMessageUi) { + .then( if (mouseMessageUi) { - awaitPointerEventScope { - while (true) { - val event = awaitPointerEvent(PointerEventPass.Main) - when { - event.type == PointerEventType.Press && - event.buttons.isSecondaryPressed -> { - event.changes.forEach { it.consume() } - val local = - event.changes.firstOrNull()?.position - ?: continue - val coords = bubbleContentCoords - if (coords != null && coords.isAttached) { - onTapPosition(coords.localToRoot(local)) - } - isPressed = true - onLongPress() - } - } - } + Modifier.onMouseSecondaryClick( + message.id, + enabled = true, + ) { localOffset -> + openMessageMenu(bubbleContentCoords, localOffset) } } else { - detectTapGestures( - onPress = { - isPressed = true - try { - awaitRelease() - } finally { - isPressed = false - } - }, - onTap = { onBubbleTap?.invoke() }, - onLongPress = { localOffset -> - val coords = bubbleContentCoords - if (coords != null && coords.isAttached) { - onTapPosition(coords.localToRoot(localOffset)) - } - onLongPress() - }, - ) - } - } + Modifier.pointerInput( + message.id, + onBubbleTap, + onLongPress, + ) { + detectTapGestures( + onPress = { + isPressed = true + try { + awaitRelease() + } finally { + isPressed = false + } + }, + onTap = { onBubbleTap?.invoke() }, + onLongPress = { localOffset -> + openMessageMenu( + bubbleContentCoords, + localOffset, + ) + }, + ) + } + }, + ) Box { Column( @@ -697,11 +710,23 @@ fun MessageItem( Modifier.padding(start = 8.dp, end = 8.dp, bottom = 4.dp) val usernameInset = Modifier.padding(horizontal = 4.dp, vertical = 2.dp) - if (onUsernameClick != null) { - Box( - modifier = usernameOutset - .clip(usernameShape) - .pointerInput(message.id, onUsernameClick) { + val usernameGestures = + if (mouseMessageUi) { + Modifier + .onMouseSecondaryClick( + message.id, + enabled = !isContextMenuOpen, + ) { localOffset -> + openMessageMenu( + rowLayoutCoords, + localOffset, + ) + } + .pointerInput( + message.id, + onUsernameClick, + onBubbleTap, + ) { detectTapGestures( onPress = { isPressed = true @@ -711,25 +736,56 @@ fun MessageItem( isPressed = false } }, - onTap = { onUsernameClick.invoke() }, - onLongPress = { - val coords = bubbleContentCoords - if ( - coords != null && - coords.isAttached - ) { - val center = Offset( - coords.size.width / 2f, - coords.size.height / 2f, - ) - onTapPosition( - coords.localToRoot(center), - ) - } - onLongPress() + onTap = { + onUsernameClick?.invoke() + ?: onBubbleTap?.invoke() }, ) } + } else { + Modifier.pointerInput( + message.id, + onUsernameClick, + onBubbleTap, + onLongPress, + ) { + detectTapGestures( + onPress = { + isPressed = true + try { + awaitRelease() + } finally { + isPressed = false + } + }, + onTap = { + onUsernameClick?.invoke() + ?: onBubbleTap?.invoke() + }, + onLongPress = { + val coords = bubbleContentCoords + if ( + coords != null && + coords.isAttached + ) { + val center = Offset( + coords.size.width / 2f, + coords.size.height / 2f, + ) + onTapPosition( + coords.localToRoot(center), + ) + } + onLongPress() + }, + ) + } + } + if (onUsernameClick != null) { + Box( + modifier = usernameOutset + .clip(usernameShape) + .then(usernameGestures), ) { Row( verticalAlignment = Alignment.CenterVertically, @@ -750,36 +806,7 @@ fun MessageItem( } } else { Box( - modifier = usernameOutset - .pointerInput(message.id, onBubbleTap) { - detectTapGestures( - onPress = { - isPressed = true - try { - awaitRelease() - } finally { - isPressed = false - } - }, - onTap = { onBubbleTap?.invoke() }, - onLongPress = { - val coords = bubbleContentCoords - if ( - coords != null && - coords.isAttached - ) { - val center = Offset( - coords.size.width / 2f, - coords.size.height / 2f, - ) - onTapPosition( - coords.localToRoot(center), - ) - } - onLongPress() - }, - ) - }, + modifier = usernameOutset.then(usernameGestures), ) { Row( verticalAlignment = Alignment.CenterVertically, @@ -1079,13 +1106,17 @@ fun MessageItem( !isFilenameOnlyMessageCaption(message) ) { if (mouseMessageUi) { - SelectionContainer { - Text( - text = message.content, - style = MaterialTheme.typography.bodyLarge, - color = contentColor, - modifier = Modifier.padding(horizontal = 14.dp) - ) + ProvideChatTextSelectionMenu { + SelectionContainer { + Text( + text = message.content, + style = MaterialTheme.typography.bodyLarge, + color = contentColor, + modifier = Modifier.padding( + horizontal = 14.dp, + ), + ) + } } } else { Text( diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/dm/DmNav.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/dm/DmNav.kt index 494f841..6ec9ac3 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/dm/DmNav.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/dm/DmNav.kt @@ -8,9 +8,10 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember +import androidx.navigation.NavController +import androidx.navigation.NavOptionsBuilder import ru.fromchat.api.local.cache.CacheContext import androidx.compose.ui.Modifier -import androidx.navigation.NavController import ru.fromchat.api.local.db.store.ProfileCache import ru.fromchat.ui.chat.rememberChatNavigationGate import ru.fromchat.utils.haptic.HapticFeedbackEvent @@ -33,6 +34,22 @@ object DmNav { fun profileRoute(otherUserId: Int) = "dm/$otherUserId/profile" } +/** + * Opens a DM chat, replacing any prior conversation/profile above the main `chat` root + * so large-screen switches do not stack previous chats. + */ +fun NavController.navigateToDmChat( + otherUserId: Int, + sourceMessageId: Int? = null, + builder: NavOptionsBuilder.() -> Unit = {}, +) { + navigate(DmNav.chatRoute(otherUserId, sourceMessageId)) { + popUpTo("chat") { saveState = true } + launchSingleTop = true + builder() + } +} + private const val DM_AVATAR_KEY_PREFIX = "dm-avatar-" @Composable @@ -105,7 +122,7 @@ fun DmProfileRoute( onChat = { runNav { haptic(HapticFeedbackEvent.ProfileClosed) - navController.popBackStack() + navController.navigateToDmChat(otherUserId) } }, modifier = modifier.fillMaxSize(), diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/publicchat/PublicChatNav.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/publicchat/PublicChatNav.kt index 12c9a15..cf7b333 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/publicchat/PublicChatNav.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/chat/panels/publicchat/PublicChatNav.kt @@ -7,6 +7,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.navigation.NavController +import androidx.navigation.NavOptionsBuilder import ru.fromchat.api.ApiClient import ru.fromchat.api.local.db.store.PublicChatProfileCache import ru.fromchat.ui.chat.rememberChatNavigationGate @@ -23,6 +24,19 @@ object PublicChatNav { const val SHARED_HEADER_KEY = "public-chat-header" } +/** + * Opens the public chat, replacing any prior conversation/profile above the main `chat` root. + */ +fun NavController.navigateToPublicChat( + builder: NavOptionsBuilder.() -> Unit = {}, +) { + navigate(PublicChatNav.CHAT_ROUTE) { + popUpTo("chat") { saveState = true } + launchSingleTop = true + builder() + } +} + @Composable fun PublicChatChatRoute( scrollToMessageId: Int? = null, @@ -78,7 +92,7 @@ fun PublicChatProfileRoute( onChat = { runNav { haptic(HapticFeedbackEvent.ProfileClosed) - navController.popBackStack() + navController.navigateToPublicChat() } }, modifier = modifier.fillMaxSize(), diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/components/AppPanel.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/components/AppPanel.kt new file mode 100644 index 0000000..6deb6bc --- /dev/null +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/components/AppPanel.kt @@ -0,0 +1,36 @@ +package ru.fromchat.ui.components + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.unit.dp + +/** + * Rounded lowest-surface container for list–detail panes and other full-area content. + * Size with [modifier]; content fills the panel. + */ +@Composable +fun AppPanel( + modifier: Modifier = Modifier, + color: Color = MaterialTheme.colorScheme.surfaceContainerLowest, + shape: Shape = RoundedCornerShape(24.dp), + content: @Composable BoxScope.() -> Unit, +) { + Surface( + modifier = modifier, + shape = shape, + color = color, + ) { + Box( + modifier = Modifier.fillMaxSize(), + content = content, + ) + } +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt index e2bc779..efa89e1 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ContactsTab.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -21,29 +22,44 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import ru.fromchat.ui.components.Text import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource import ru.fromchat.Res -import ru.fromchat.* +import ru.fromchat.contacts +import ru.fromchat.contacts_empty_body +import ru.fromchat.contacts_empty_title +import ru.fromchat.ui.extraStatusBars @OptIn(ExperimentalMaterial3Api::class) @Composable fun ContactsTab() { Scaffold( + containerColor = Color.Transparent, + contentWindowInsets = WindowInsets(0, 0, 0, 0), topBar = { TopAppBar( + windowInsets = if (LocalMainChromeInsets.current.top > 0.dp) { + WindowInsets.extraStatusBars + } else { + WindowInsets(0, 0, 0, 0) + }, title = { Text( text = stringResource(Res.string.contacts), maxLines = 1, overflow = TextOverflow.Ellipsis ) - } + }, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = Color.Transparent, + ), ) } ) { innerPadding -> diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ConversationListDetailShell.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ConversationListDetailShell.kt index dd666a8..0682c51 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ConversationListDetailShell.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/ConversationListDetailShell.kt @@ -1,195 +1,116 @@ package ru.fromchat.ui.main import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.core.CubicBezierEasing +import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.tween -import androidx.compose.animation.slideInHorizontally -import androidx.compose.animation.slideOutHorizontally -import androidx.compose.foundation.background +import androidx.compose.animation.expandHorizontally +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.shrinkHorizontally +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.imePadding -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.union import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.widthIn -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Chat -import androidx.compose.material.icons.filled.Contacts -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.Settings -import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.NavigationBar -import androidx.compose.material3.NavigationBarItem -import androidx.compose.material3.VerticalDivider +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp -import com.pr0gramm3r101.utils.NavigationItem -import com.pr0gramm3r101.utils.SimpleNavigationRail -import com.pr0gramm3r101.utils.WindowWidthSizeClass -import org.jetbrains.compose.resources.stringResource -import ru.fromchat.Res -import ru.fromchat.chats -import ru.fromchat.contacts -import ru.fromchat.profile -import ru.fromchat.settings -import ru.fromchat.ui.components.Text +import ru.fromchat.ui.components.AppPanel +import ru.fromchat.ui.extraStatusBars /** Minimum width to show chat + profile side-by-side beside the list. */ val ConversationProfileThirdPaneMinWidth = 1100.dp -private val ProfilePaneSlideEasing = CubicBezierEasing(0.22f, 1f, 0.36f, 1f) -private const val ProfilePaneAnimMs = 520 +private const val ProfilePaneAnimMs = 280 +/** + * List–detail (optional profile) shell. The list pane uses [AppPanel]; detail and profile + * panes stay plain (no rounded surface wrapper). Spacing alone separates panes. + * + * Pads with [WindowInsets.safeDrawing] ∪ [WindowInsets.extraStatusBars] so panes clear the + * macOS title bar / system bars, then consumes those insets so child top bars do not double-pad. + * Window background stays edge-to-edge behind this layer. + */ @Composable fun ConversationListDetailShell( - widthSizeClass: WindowWidthSizeClass, showProfilePane: Boolean, + listPaneWidth: Dp, listPane: @Composable () -> Unit, detailPane: @Composable () -> Unit, profilePane: @Composable () -> Unit, - onSelectMainTab: (Int) -> Unit, modifier: Modifier = Modifier, ) { - val useRail = widthSizeClass == WindowWidthSizeClass.EXPANDED - val chatsLabel = stringResource(Res.string.chats) - val contactsLabel = stringResource(Res.string.contacts) - val settingsLabel = stringResource(Res.string.settings) - val profileLabel = stringResource(Res.string.profile) - BoxWithConstraints(modifier.fillMaxSize()) { - val canFitProfilePane = maxWidth >= ConversationProfileThirdPaneMinWidth - val profileVisible = showProfilePane && canFitProfilePane + val profileVisible = showProfilePane && maxWidth >= ConversationProfileThirdPaneMinWidth + val fadeAnim = tween( + durationMillis = ProfilePaneAnimMs, + easing = FastOutSlowInEasing, + ) + val sizeAnim = tween( + durationMillis = ProfilePaneAnimMs, + easing = FastOutSlowInEasing, + ) + val paneInsets = WindowInsets.safeDrawing.union(WindowInsets.extraStatusBars) - Row(Modifier.fillMaxSize()) { - if (useRail) { - SimpleNavigationRail( - selectedItem = MAIN_PAGE_CHATS, - modifier = Modifier.fillMaxHeight(), - NavigationItem( - name = chatsLabel, - selectedIcon = Icons.AutoMirrored.Filled.Chat, - onClick = { onSelectMainTab(MAIN_PAGE_CHATS) }, - ), - NavigationItem( - name = contactsLabel, - selectedIcon = Icons.Filled.Contacts, - onClick = { onSelectMainTab(MAIN_PAGE_CONTACTS) }, - ), - NavigationItem( - name = settingsLabel, - selectedIcon = Icons.Filled.Settings, - onClick = { onSelectMainTab(MAIN_PAGE_SETTINGS) }, - ), - NavigationItem( - name = profileLabel, - selectedIcon = Icons.Filled.Person, - onClick = { onSelectMainTab(MAIN_PAGE_PROFILE) }, - ), - ) + Row( + Modifier + .fillMaxSize() + .windowInsetsPadding(paneInsets) + .consumeWindowInsets(paneInsets) + .padding(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + AppPanel( + Modifier + .width(listPaneWidth) + .fillMaxHeight(), + ) { + listPane() } - - Column(Modifier.weight(1f).fillMaxHeight()) { - Row(Modifier.weight(1f).fillMaxWidth()) { - Box( - Modifier - .width(360.dp) - .fillMaxHeight(), - ) { - listPane() - } - VerticalDivider() - Box( - Modifier - .weight(1f) - .fillMaxHeight(), - ) { - detailPane() - } - AnimatedVisibility( - visible = profileVisible, - enter = slideInHorizontally( - animationSpec = tween( - durationMillis = ProfilePaneAnimMs, - easing = ProfilePaneSlideEasing, - ), - initialOffsetX = { it }, - ), - exit = slideOutHorizontally( - animationSpec = tween( - durationMillis = ProfilePaneAnimMs, - easing = ProfilePaneSlideEasing, - ), - targetOffsetX = { it }, - ), - ) { - Row(Modifier.fillMaxHeight()) { - VerticalDivider() - Box( - Modifier - .widthIn(min = 320.dp, max = 420.dp) - .fillMaxHeight() - .width(380.dp), - ) { - profilePane() - } - } - } - } - - if (!useRail) { - NavigationBar( - modifier = Modifier - .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceContainer) - .imePadding(), - containerColor = Color.Transparent, - tonalElevation = 0.dp, - windowInsets = WindowInsets.navigationBars.only(WindowInsetsSides.Bottom), - ) { - NavigationBarItem( - selected = true, - onClick = { onSelectMainTab(MAIN_PAGE_CHATS) }, - label = { Text(chatsLabel) }, - icon = { - Icon(Icons.AutoMirrored.Filled.Chat, contentDescription = null) - }, - ) - NavigationBarItem( - selected = false, - onClick = { onSelectMainTab(MAIN_PAGE_CONTACTS) }, - label = { Text(contactsLabel) }, - icon = { - Icon(Icons.Filled.Contacts, contentDescription = null) - }, - ) - NavigationBarItem( - selected = false, - onClick = { onSelectMainTab(MAIN_PAGE_SETTINGS) }, - label = { Text(settingsLabel) }, - icon = { - Icon(Icons.Filled.Settings, contentDescription = null) - }, - ) - NavigationBarItem( - selected = false, - onClick = { onSelectMainTab(MAIN_PAGE_PROFILE) }, - label = { Text(profileLabel) }, - icon = { - Icon(Icons.Filled.Person, contentDescription = null) - }, - ) - } + Box( + Modifier + .weight(1f) + .fillMaxHeight(), + ) { + detailPane() + } + AnimatedVisibility( + visible = profileVisible, + enter = fadeIn(animationSpec = fadeAnim) + expandHorizontally( + animationSpec = sizeAnim, + expandFrom = Alignment.End, + clip = false, + ), + exit = fadeOut( + animationSpec = tween( + durationMillis = 220, + easing = FastOutSlowInEasing, + ), + ) + shrinkHorizontally( + animationSpec = sizeAnim, + shrinkTowards = Alignment.End, + clip = false, + ), + ) { + Box( + Modifier + .widthIn(min = 320.dp, max = 420.dp) + .width(380.dp) + .fillMaxHeight(), + ) { + profilePane() } } } diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/EmptyConversationPlaceholder.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/EmptyConversationPlaceholder.kt index 28c8be0..f0f39ed 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/EmptyConversationPlaceholder.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/EmptyConversationPlaceholder.kt @@ -14,27 +14,57 @@ import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource import ru.fromchat.Res import ru.fromchat.select_chat_placeholder +import ru.fromchat.select_contact_placeholder +import ru.fromchat.select_settings_placeholder import ru.fromchat.ui.components.Text import ru.fromchat.ui.extraStatusBars +/** Empty detail pane when nothing is selected in a list–detail layout. */ @Composable -fun EmptyConversationPlaceholder(modifier: Modifier = Modifier) { - val density = LocalDensity.current - val topInset = with(density) { - WindowInsets.extraStatusBars.getTop(this).toDp() - } +fun EmptyPanePlaceholder( + text: String, + modifier: Modifier = Modifier, +) { Box( modifier = modifier .fillMaxSize() - .padding(top = topInset) + .padding( + top = with(LocalDensity.current) { + WindowInsets.extraStatusBars.getTop(this).toDp() + }, + ) .padding(horizontal = 32.dp), contentAlignment = Alignment.Center, ) { Text( - text = stringResource(Res.string.select_chat_placeholder), + text = text, style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, textAlign = TextAlign.Center, ) } } + +@Composable +fun EmptyConversationPlaceholder(modifier: Modifier = Modifier) { + EmptyPanePlaceholder( + text = stringResource(Res.string.select_chat_placeholder), + modifier = modifier, + ) +} + +@Composable +fun EmptyContactsPlaceholder(modifier: Modifier = Modifier) { + EmptyPanePlaceholder( + text = stringResource(Res.string.select_contact_placeholder), + modifier = modifier, + ) +} + +@Composable +fun EmptySettingsPlaceholder(modifier: Modifier = Modifier) { + EmptyPanePlaceholder( + text = stringResource(Res.string.select_settings_placeholder), + modifier = modifier, + ) +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainDetailNav.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainDetailNav.kt new file mode 100644 index 0000000..4e1faff --- /dev/null +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainDetailNav.kt @@ -0,0 +1,20 @@ +package ru.fromchat.ui.main + +import androidx.navigation.NavController +import androidx.navigation.NavOptionsBuilder + +/** + * Opens a main-hub detail destination, replacing any prior conversation/settings/profile + * above the main `chat` root so large-screen switches do not stack previous panes. + * Matches [ru.fromchat.ui.chat.panels.dm.navigateToDmChat] / public chat. + */ +fun NavController.navigateReplacingMainDetail( + route: String, + builder: NavOptionsBuilder.() -> Unit = {}, +) { + navigate(route) { + popUpTo("chat") { saveState = true } + launchSingleTop = true + builder() + } +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt index c29d514..5ae58b2 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/MainScreen.kt @@ -6,17 +6,13 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.asPaddingValues -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState @@ -47,8 +43,6 @@ import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex -import com.pr0gramm3r101.utils.NavigationItem -import com.pr0gramm3r101.utils.SimpleNavigationRail import com.pr0gramm3r101.utils.WindowWidthSizeClass import com.pr0gramm3r101.utils.currentWindowAdaptiveInfo import com.pr0gramm3r101.utils.widthSizeClass @@ -71,12 +65,12 @@ import ru.fromchat.ui.LocalNavController import ru.fromchat.ui.chat.rememberChatSurfaceContainerHazeStyle import ru.fromchat.ui.components.FromChatSnackbarHost import ru.fromchat.ui.components.Text +import ru.fromchat.ui.extraStatusBars import ru.fromchat.ui.main.chats.ChatContextMenuOverlayController import ru.fromchat.ui.main.chats.ChatContextMenuOverlayHost import ru.fromchat.ui.main.chats.ChatsTab import ru.fromchat.ui.main.settings.SettingsTab import ru.fromchat.ui.profile.ProfileScreen -import ru.fromchat.ui.extraStatusBars const val MAIN_PAGE_CHATS = 0 const val MAIN_PAGE_CONTACTS = 1 @@ -90,9 +84,12 @@ private const val PAGE_PROFILE = MAIN_PAGE_PROFILE private const val PAGE_COUNT = 4 /** - * @param listPaneOnly When true, renders only the chats list (no nav rail/bar) for use as the - * list side of a list–detail conversation layout. Host owns navigation chrome. + * @param embeddedInListDetail When true, this screen is the left pane of a list–detail layout. + * Nav chrome stays inside this pane (bottom bar), never spanning the window. * @param initialPage Pager page when showing the full MainScreen. + * @param forceSettingsTab When true, scrolls the pager to settings (settings/profile detail open). + * Does not snap back when cleared — avoids fighting user tab changes. + * @param onPageChanged Invoked when the pager settles on a page (for list–detail empty panes). */ @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -100,8 +97,10 @@ fun MainScreen( sharedTransitionScope: SharedTransitionScope? = null, animatedVisibilityScope: AnimatedVisibilityScope? = null, snackbarHostState: SnackbarHostState? = null, - listPaneOnly: Boolean = false, + embeddedInListDetail: Boolean = false, initialPage: Int = PAGE_CHATS, + forceSettingsTab: Boolean = false, + onPageChanged: (Int) -> Unit = {}, ) { val effectiveSnackbarHostState = snackbarHostState ?: remember { SnackbarHostState() } val navController = LocalNavController.current @@ -117,29 +116,34 @@ fun MainScreen( val chatContextMenuOverlay = remember { ChatContextMenuOverlayController() } val widthClass = currentWindowAdaptiveInfo().widthSizeClass - // Compact/medium: bottom bar. Expanded: rail. List pane never owns chrome. - val useNavigationRail = !listPaneOnly && widthClass == WindowWidthSizeClass.EXPANDED - val useBottomBar = !listPaneOnly && !useNavigationRail - LaunchedEffect(initialPage) { - if (!listPaneOnly && pagerState.currentPage != initialPage) { - pagerState.scrollToPage(initialPage.coerceIn(0, PAGE_COUNT - 1)) + LaunchedEffect(forceSettingsTab) { + if (forceSettingsTab && pagerState.currentPage != PAGE_SETTINGS) { + pagerState.scrollToPage(PAGE_SETTINGS) } } val selectedPage = pagerState.currentPage + LaunchedEffect(selectedPage) { + onPageChanged(selectedPage) + } val isChatsPage = selectedPage == PAGE_CHATS val chatMenuBlurProgress = chatContextMenuOverlay.blurProgress - val statusBarTop = with(density) { - WindowInsets.extraStatusBars.getTop(this).toDp() + // List–detail shell already pads/consumes safeDrawing ∪ extraStatusBars; do not re-apply top. + val statusBarTop = if (embeddedInListDetail) { + 0.dp + } else { + with(density) { + WindowInsets.extraStatusBars.getTop(this).toDp() + } } var bottomChromeHeightDp by remember { mutableStateOf(0.dp) } - val mainChromeInsets = remember(statusBarTop, bottomChromeHeightDp, useNavigationRail, useBottomBar) { + val mainChromeInsets = remember(statusBarTop, bottomChromeHeightDp) { MainChromeInsets( top = statusBarTop, - bottom = if (useBottomBar) bottomChromeHeightDp else 0.dp, + bottom = bottomChromeHeightDp, ) } @@ -148,71 +152,82 @@ fun MainScreen( val settingsLabel = stringResource(Res.string.settings) val profileLabel = stringResource(Res.string.profile) - BoxWithConstraints(Modifier.fillMaxSize()) { - Row(Modifier.fillMaxSize()) { - if (useNavigationRail) { - SimpleNavigationRail( - selectedItem = selectedPage, - modifier = Modifier.fillMaxHeight(), - NavigationItem( - name = chatsLabel, - selectedIcon = Icons.AutoMirrored.Filled.Chat, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_CHATS) } - }, - ), - NavigationItem( - name = contactsLabel, - selectedIcon = Icons.Filled.Contacts, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_CONTACTS) } - }, - ), - NavigationItem( - name = settingsLabel, - selectedIcon = Icons.Filled.Settings, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_SETTINGS) } - }, - ), - NavigationItem( - name = profileLabel, - selectedIcon = Icons.Filled.Person, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_PROFILE) } - }, - ), - ) - } + fun clearConversationStack() { + // Pop above chat only — inclusive pop remounts the chat destination and briefly + // drops the shell route, which remounts list–detail ↔ compact and blinks forever. + navController.popBackStack("chat", inclusive = false) + } - Box( + fun openOwnProfileInDetailPane() { + val userId = ApiClient.user?.id?.takeIf { it > 0 } ?: return + navController.navigateReplacingMainDetail("profile/$userId") + } + + fun selectMainPage(page: Int) { + when { + page == PAGE_PROFILE && widthClass != WindowWidthSizeClass.COMPACT -> { + scope.launch { pagerState.animateScrollToPage(PAGE_SETTINGS) } + openOwnProfileInDetailPane() + } + page == PAGE_CHATS -> { + scope.launch { pagerState.animateScrollToPage(PAGE_CHATS) } + if (embeddedInListDetail && selectedPage != PAGE_CHATS) { + clearConversationStack() + } + } + else -> { + scope.launch { pagerState.animateScrollToPage(page) } + if (embeddedInListDetail) { + clearConversationStack() + } + } + } + } + + val navSelectedPage = + if (selectedPage == PAGE_SETTINGS && + widthClass != WindowWidthSizeClass.COMPACT && + navController.currentBackStackEntry?.destination?.route?.startsWith("profile/") == true + ) { + PAGE_PROFILE + } else { + selectedPage + } + + BoxWithConstraints(Modifier.fillMaxSize()) { + Box( + modifier = Modifier + .fillMaxSize() + .hazeSource(contextMenuHazeState), + ) { + Scaffold( + snackbarHost = { + FromChatSnackbarHost( + hostState = effectiveSnackbarHostState, + modifier = Modifier.padding(bottom = mainChromeInsets.bottom), + ) + }, + containerColor = Color.Transparent, + contentWindowInsets = WindowInsets(0, 0, 0, 0), modifier = Modifier - .weight(1f) - .fillMaxHeight() - .hazeSource(contextMenuHazeState), + .fillMaxSize() + .imePadding(), ) { - Scaffold( - snackbarHost = { - FromChatSnackbarHost( - hostState = effectiveSnackbarHostState, - modifier = Modifier.padding(bottom = mainChromeInsets.bottom), - ) - }, - containerColor = Color.Transparent, - contentWindowInsets = WindowInsets(0, 0, 0, 0), - modifier = Modifier - .fillMaxSize() - .imePadding(), - ) { - CompositionLocalProvider(LocalMainChromeInsets provides mainChromeInsets) { - Box( - modifier = Modifier - .fillMaxSize() - .hazeSource(navBarHazeState), - ) { - if (listPaneOnly) { - ChatsTab( - isVisible = true, + CompositionLocalProvider(LocalMainChromeInsets provides mainChromeInsets) { + Box( + modifier = Modifier + .fillMaxSize() + .hazeSource(navBarHazeState), + ) { + HorizontalPager( + state = pagerState, + modifier = Modifier.fillMaxSize(), + beyondViewportPageCount = 1, + userScrollEnabled = widthClass == WindowWidthSizeClass.COMPACT, + ) { page -> + when (page) { + PAGE_CHATS -> ChatsTab( + isVisible = isChatsPage, onOpenSearch = { navController.navigate("search/conversations") }, @@ -220,118 +235,90 @@ fun MainScreen( sharedTransitionScope = sharedTransitionScope, animatedVisibilityScope = animatedVisibilityScope, ) - } else { - HorizontalPager( - state = pagerState, - modifier = Modifier.fillMaxSize(), - beyondViewportPageCount = 1, - ) { page -> - when (page) { - PAGE_CHATS -> ChatsTab( - isVisible = isChatsPage, - onOpenSearch = { - navController.navigate("search/conversations") - }, - chatContextMenuOverlay = chatContextMenuOverlay, - sharedTransitionScope = sharedTransitionScope, - animatedVisibilityScope = animatedVisibilityScope, - ) - PAGE_CONTACTS -> ContactsTab() - PAGE_SETTINGS -> SettingsTab() - PAGE_PROFILE -> { - ProfileScreen( - userId = ApiClient.user?.id, - onBack = {}, - onChat = { _ -> }, - modifier = Modifier - .fillMaxSize() - .mainPagerBottomInset(), - onOpenSettings = { - scope.launch { - pagerState.animateScrollToPage(PAGE_SETTINGS) - } - }, - ) - } - else -> Unit - } + PAGE_CONTACTS -> ContactsTab() + PAGE_SETTINGS -> SettingsTab() + PAGE_PROFILE -> { + ProfileScreen( + userId = ApiClient.user?.id, + onBack = {}, + onChat = { _ -> }, + modifier = Modifier + .fillMaxSize() + .mainPagerBottomInset(), + onOpenSettings = { + scope.launch { + pagerState.animateScrollToPage(PAGE_SETTINGS) + } + }, + ) } + else -> Unit } } } } + } - if (useBottomBar) { - Column( - modifier = Modifier - .align(Alignment.BottomCenter) - .fillMaxWidth() - .zIndex(1f) - .imePadding() - .onSizeChanged { size -> - val measured = with(density) { size.height.toDp() } - if (measured != bottomChromeHeightDp) { - bottomChromeHeightDp = measured - } - } - .background(MaterialTheme.colorScheme.surfaceContainer) - .hazeEffect(state = navBarHazeState) { - blurEffect { - style = navBarHazeStyle - } - }, - ) { - NavigationBar( - modifier = Modifier.fillMaxWidth(), - containerColor = Color.Transparent, - tonalElevation = 0.dp, - windowInsets = WindowInsets.navigationBars.only(WindowInsetsSides.Bottom), - ) { - NavigationBarItem( - selected = selectedPage == PAGE_CHATS, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_CHATS) } - }, - label = { Text(chatsLabel) }, - icon = { - Icon( - Icons.AutoMirrored.Filled.Chat, - contentDescription = null, - ) - }, - ) - NavigationBarItem( - selected = selectedPage == PAGE_CONTACTS, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_CONTACTS) } - }, - label = { Text(contactsLabel) }, - icon = { - Icon(Icons.Filled.Contacts, contentDescription = null) - }, - ) - NavigationBarItem( - selected = selectedPage == PAGE_SETTINGS, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_SETTINGS) } - }, - label = { Text(settingsLabel) }, - icon = { - Icon(Icons.Filled.Settings, contentDescription = null) - }, - ) - NavigationBarItem( - selected = selectedPage == PAGE_PROFILE, - onClick = { - scope.launch { pagerState.animateScrollToPage(PAGE_PROFILE) } - }, - label = { Text(profileLabel) }, - icon = { - Icon(Icons.Filled.Person, contentDescription = null) - }, - ) + Column( + modifier = Modifier + .align(Alignment.BottomCenter) + .fillMaxWidth() + .zIndex(1f) + .imePadding() + .onSizeChanged { size -> + val measured = with(density) { size.height.toDp() } + if (measured != bottomChromeHeightDp) { + bottomChromeHeightDp = measured } } + .background(MaterialTheme.colorScheme.surfaceContainer) + .hazeEffect(state = navBarHazeState) { + blurEffect { + style = navBarHazeStyle + } + }, + ) { + NavigationBar( + modifier = Modifier.fillMaxWidth(), + containerColor = Color.Transparent, + tonalElevation = 0.dp, + windowInsets = WindowInsets.navigationBars.only(WindowInsetsSides.Bottom), + ) { + NavigationBarItem( + selected = navSelectedPage == PAGE_CHATS, + onClick = { selectMainPage(PAGE_CHATS) }, + label = { Text(chatsLabel) }, + icon = { + Icon( + Icons.AutoMirrored.Filled.Chat, + contentDescription = null, + ) + }, + ) + NavigationBarItem( + selected = navSelectedPage == PAGE_CONTACTS, + onClick = { selectMainPage(PAGE_CONTACTS) }, + label = { Text(contactsLabel) }, + icon = { + Icon(Icons.Filled.Contacts, contentDescription = null) + }, + ) + NavigationBarItem( + selected = navSelectedPage == PAGE_SETTINGS, + onClick = { selectMainPage(PAGE_SETTINGS) }, + label = { Text(settingsLabel) }, + icon = { + Icon(Icons.Filled.Settings, contentDescription = null) + }, + ) + NavigationBarItem( + selected = navSelectedPage == PAGE_PROFILE, + onClick = { selectMainPage(PAGE_PROFILE) }, + label = { Text(profileLabel) }, + icon = { + Icon(Icons.Filled.Person, contentDescription = null) + }, + ) } } } diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatListShared.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatListShared.kt index 924b2b2..14c7d2a 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatListShared.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatListShared.kt @@ -14,7 +14,9 @@ import androidx.compose.animation.scaleOut import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.gestures.awaitEachGesture import androidx.compose.foundation.gestures.detectTapGestures +import androidx.compose.foundation.gestures.waitForUpOrCancellation import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues @@ -60,6 +62,11 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.TransformOrigin import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.input.pointer.PointerEvent +import androidx.compose.ui.input.pointer.PointerEventTimeoutCancellationException +import androidx.compose.ui.input.pointer.PointerType +import androidx.compose.ui.input.pointer.changedToDown +import androidx.compose.ui.input.pointer.isSecondaryPressed import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInRoot @@ -67,6 +74,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp +import androidx.compose.ui.util.fastAll +import kotlinx.coroutines.withTimeout import ru.fromchat.ui.components.SearchBar import ru.fromchat.ui.components.SearchBarSharedElement import com.pr0gramm3r101.components.Category @@ -126,6 +135,52 @@ private val ChatListCategoryMargin = PaddingValues( bottom = 12.dp, ) +/** + * Opens on primary click. Selection mode: touch/stylus long-press, or mouse secondary click. + * Mouse primary long-press does not enter selection. + */ +@OptIn(ExperimentalFoundationApi::class) +private fun Modifier.chatRowOpenAndSelectGestures( + selectionEnabled: Boolean, + interactionSource: MutableInteractionSource, + onOpen: () -> Unit, + onEnterSelection: () -> Unit, +): Modifier = + combinedClickable( + interactionSource = interactionSource, + indication = ripple(), + onClick = onOpen, + ).pointerInput(selectionEnabled) { + if (!selectionEnabled) return@pointerInput + awaitEachGesture { + var downEvent: PointerEvent + do { + downEvent = awaitPointerEvent() + } while (!downEvent.changes.fastAll { it.changedToDown() }) + val down = downEvent.changes.firstOrNull() ?: return@awaitEachGesture + when (down.type) { + PointerType.Mouse -> { + if (!downEvent.buttons.isSecondaryPressed || down.isConsumed) { + return@awaitEachGesture + } + downEvent.changes.forEach { it.consume() } + onEnterSelection() + } + PointerType.Touch, PointerType.Stylus -> { + try { + withTimeout(viewConfiguration.longPressTimeoutMillis) { + waitForUpOrCancellation() + } + } catch (_: PointerEventTimeoutCancellationException) { + onEnterSelection() + waitForUpOrCancellation() + } + } + else -> Unit + } + } + } + @Composable internal fun ChatListHeadlineWithBadge( title: String, @@ -721,15 +776,11 @@ internal fun PublicChatRow( .alpha(if (isHiddenForOverlay) 0f else 1f) .fillMaxWidth() .clip(clipShape) - .combinedClickable( + .chatRowOpenAndSelectGestures( + selectionEnabled = listMode == ChatsListMode.Normal, interactionSource = rowInteractionSource, - indication = ripple(), - onClick = onOpenPublic, - onLongClick = if (listMode == ChatsListMode.Normal) { - { onBodyLongPress() } - } else { - null - }, + onOpen = onOpenPublic, + onEnterSelection = onBodyLongPress, ) .onGloballyPositioned { coords -> rowRootOffset = coords.positionInRoot() @@ -871,15 +922,11 @@ internal fun DmConversationRow( .alpha(if (isHiddenForOverlay) 0f else 1f) .fillMaxWidth() .clip(clipShape) - .combinedClickable( + .chatRowOpenAndSelectGestures( + selectionEnabled = listMode == ChatsListMode.Normal, interactionSource = rowInteractionSource, - indication = ripple(), - onClick = onOpenConversation, - onLongClick = if (listMode == ChatsListMode.Normal) { - { onBodyLongPress() } - } else { - null - }, + onOpen = onOpenConversation, + onEnterSelection = onBodyLongPress, ) .onGloballyPositioned { coords -> rowRootOffset = coords.positionInRoot() diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatsTab.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatsTab.kt index 6bfc79e..fcac91c 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatsTab.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/chats/ChatsTab.kt @@ -53,7 +53,6 @@ import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.union -import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf @@ -141,7 +140,8 @@ import ru.fromchat.status_updating import ru.fromchat.account_suspended import ru.fromchat.ui.LocalNavController import ru.fromchat.ui.main.LocalMainChromeInsets -import ru.fromchat.ui.chat.panels.dm.DmNav +import ru.fromchat.ui.chat.panels.dm.navigateToDmChat +import ru.fromchat.ui.chat.panels.publicchat.navigateToPublicChat import ru.fromchat.ui.components.BackHandler import ru.fromchat.ui.components.BrandTitle import ru.fromchat.ui.components.ConnectingEllipsis @@ -337,7 +337,9 @@ private fun rememberSearchBarCollapseSnap( @OptIn(ExperimentalMaterial3Api::class) @Composable private fun chatsTopAppBarColors(blurReveal: Float) = TopAppBarDefaults.topAppBarColors( - containerColor = MaterialTheme.colorScheme.surface.copy(alpha = 1f - blurReveal.coerceIn(0f, 1f)), + // Match AppPanel (`surfaceContainerLowest`) when unscrolled so the bar is not a separate stripe. + containerColor = MaterialTheme.colorScheme.surfaceContainerLowest + .copy(alpha = 1f - blurReveal.coerceIn(0f, 1f)), scrolledContainerColor = Color.Transparent, ) @@ -375,7 +377,12 @@ private fun ChatsNormalTopBar( ) { TopAppBar( modifier = modifier, - windowInsets = WindowInsets.extraStatusBars, + // Shell already applies/consumes status insets in list–detail; avoid double top padding. + windowInsets = if (LocalMainChromeInsets.current.top > 0.dp) { + WindowInsets.extraStatusBars + } else { + WindowInsets(0, 0, 0, 0) + }, colors = chatsTopAppBarColors(blurReveal), title = { Row( @@ -384,7 +391,7 @@ private fun ChatsNormalTopBar( horizontalArrangement = Arrangement.Start, ) { AsyncImage( - model = Res.getUri("drawable/logo_square.svg"), + model = Res.getUri("drawable/logo_square.png"), contentDescription = null, contentScale = ContentScale.Fit, modifier = Modifier @@ -469,7 +476,11 @@ private fun ChatsSelectionTopBar( TopAppBar( modifier = modifier, - windowInsets = WindowInsets.extraStatusBars, + windowInsets = if (LocalMainChromeInsets.current.top > 0.dp) { + WindowInsets.extraStatusBars + } else { + WindowInsets(0, 0, 0, 0) + }, colors = chatsTopAppBarColors(blurReveal), navigationIcon = { IconButton(onClick = onClose) { @@ -841,6 +852,7 @@ fun ChatsTab( PredictiveBackHandler( enabled = selectionMode, onProgress = { backProgress -> + if (!selectionMode) return@PredictiveBackHandler scope.launch { selectionTransitionProgress.snapTo((1f - backProgress).coerceIn(0f, 1f)) } @@ -950,7 +962,7 @@ fun ChatsTab( when { selectionMode && publicChatSelected -> publicChatSelected = false selectionMode -> publicChatSelected = true - else -> navController.navigate("chats/publicChat") + else -> navController.navigateToPublicChat() } }, onOpenConversation = { userId -> @@ -961,7 +973,7 @@ fun ChatsTab( selectionMode -> selectedOtherUserIds += userId - userId != 0 -> navController.navigate(DmNav.chatRoute(userId)) + userId != 0 -> navController.navigateToDmChat(userId) } }, onAvatarContextMenuPressStart = { lazyIndex, target, userId, rowOffset, rowSize, position, groupCount -> @@ -1084,9 +1096,9 @@ fun ChatsTab( } chatContextMenuOverlay.onMessage = { when (contextMenuState.target) { - ChatContextMenuTarget.Public -> navController.navigate("chats/publicChat") + ChatContextMenuTarget.Public -> navController.navigateToPublicChat() ChatContextMenuTarget.Dm -> { - contextMenuState.otherUserId?.let { navController.navigate(DmNav.chatRoute(it)) } + contextMenuState.otherUserId?.let { navController.navigateToDmChat(it) } } } } diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AboutScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AboutScreen.kt index c3af0b0..58ef0c3 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AboutScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AboutScreen.kt @@ -9,14 +9,11 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.outlined.Description import androidx.compose.material.icons.outlined.Shield import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MediumTopAppBar import androidx.compose.material3.Scaffold import ru.fromchat.ui.components.Text import androidx.compose.material3.TopAppBarDefaults @@ -47,7 +44,6 @@ import ru.fromchat.about_link_terms import ru.fromchat.about_link_website import ru.fromchat.about_version import ru.fromchat.app_desc -import ru.fromchat.back import ru.fromchat.legal.DocumentType import ru.fromchat.ui.LocalNavController import ru.fromchat.ui.components.BrandTitle @@ -59,30 +55,28 @@ private const val URL_WEBSITE = "https://fromchat.ru" @OptIn(ExperimentalMaterial3Api::class) @Composable fun AboutScreen() { + val useCollapsing = settingsDetailUseCollapsingTopBar() val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()) val navController = LocalNavController.current val uriHandler = LocalUriHandler.current Scaffold( - modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = if (useCollapsing) { + Modifier.nestedScroll(scrollBehavior.nestedScrollConnection) + } else { + Modifier + }, topBar = { - MediumTopAppBar( + SettingsDetailTopBar( title = { Text( stringResource(Res.string.about), maxLines = 1, - overflow = TextOverflow.Ellipsis + overflow = TextOverflow.Ellipsis, ) }, - navigationIcon = { - IconButton(onClick = { navController.navigateUp() }) { - Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = stringResource(Res.string.back) - ) - } - }, - scrollBehavior = scrollBehavior + onBack = { navController.navigateUp() }, + scrollBehavior = scrollBehavior, ) }, ) { innerPadding -> @@ -100,7 +94,7 @@ fun AboutScreen() { ) { Box(Modifier.padding(bottom = 12.dp)) { AsyncImage( - model = Res.getUri("drawable/logo_square.svg"), + model = Res.getUri("drawable/logo_square.png"), contentDescription = null, contentScale = ContentScale.Fit, modifier = Modifier diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AppearanceScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AppearanceScreen.kt index 0dabee5..6938f0b 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AppearanceScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/AppearanceScreen.kt @@ -11,18 +11,16 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Brush import androidx.compose.material.icons.filled.DarkMode +import androidx.compose.material.icons.filled.KeyboardReturn import androidx.compose.material.icons.filled.LightMode import androidx.compose.material.icons.filled.Settings import androidx.compose.material.icons.filled.Wallpaper import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MediumTopAppBar import androidx.compose.material3.Scaffold import ru.fromchat.ui.components.Text import androidx.compose.material3.TopAppBarDefaults @@ -44,9 +42,10 @@ import com.pr0gramm3r101.utils.materialYouAvailable import org.jetbrains.compose.resources.stringResource import ru.fromchat.Res import ru.fromchat.as_system -import ru.fromchat.back import ru.fromchat.config.Settings import ru.fromchat.dark +import ru.fromchat.enter_to_send +import ru.fromchat.enter_to_send_d import ru.fromchat.light import ru.fromchat.materialYou import ru.fromchat.materialYou_d @@ -59,24 +58,26 @@ import ru.fromchat.ui.theme @OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) @Composable fun AppearanceScreen(onBack: () -> Unit) { + val useCollapsing = settingsDetailUseCollapsingTopBar() val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()) var materialYouSwitch by remember { mutableStateOf(Settings.materialYou && materialYouAvailable) } + var enterToSendSwitch by remember { mutableStateOf(Settings.enterToSend) } var themeChipIndex by remember { mutableIntStateOf(Settings.theme.ordinal) } Scaffold( - modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = if (useCollapsing) { + Modifier.nestedScroll(scrollBehavior.nestedScrollConnection) + } else { + Modifier + }, topBar = { - MediumTopAppBar( + SettingsDetailTopBar( title = { Text(stringResource(Res.string.settings_category_appearance)) }, - navigationIcon = { - IconButton(onClick = onBack) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(Res.string.back)) - } - }, - scrollBehavior = scrollBehavior + onBack = onBack, + scrollBehavior = scrollBehavior, ) } ) { innerPadding -> @@ -105,6 +106,19 @@ fun AppearanceScreen(onBack: () -> Unit) { Icon(Icons.Filled.Wallpaper, null) } ) + SwitchListItem( + headline = stringResource(Res.string.enter_to_send), + supportingText = stringResource(Res.string.enter_to_send_d), + checked = enterToSendSwitch, + onCheckedChange = { + enterToSendSwitch = it + Settings.enterToSend = it + }, + divider = true, + leadingContent = { + Icon(Icons.Filled.KeyboardReturn, null) + } + ) ListItem( headline = stringResource(Res.string.theme), leadingContent = { Icon(Icons.Filled.Brush, null) }, @@ -145,4 +159,4 @@ fun AppearanceScreen(onBack: () -> Unit) { } } } -} \ No newline at end of file +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/DevicesScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/DevicesScreen.kt index 751c63b..f2f4816 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/DevicesScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/DevicesScreen.kt @@ -434,8 +434,10 @@ fun DevicesScreen(onBack: () -> Unit) { TopAppBar( title = {}, navigationIcon = { - IconButton(onClick = onBack) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(Res.string.back)) + if (settingsDetailShowBackButton()) { + IconButton(onClick = onBack) { + Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(Res.string.back)) + } } }, colors = TopAppBarDefaults.topAppBarColors( diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/LogsScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/LogsScreen.kt index 0cbdb18..bd7e46e 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/LogsScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/LogsScreen.kt @@ -376,6 +376,9 @@ fun LogsScreen() { } fun enterEntrySelection(entryId: Long) { + if (searchMode) { + exitSearchMode() + } haptic(HapticFeedbackEvent.SelectionModeEntered) scope.launch { selectionTransitionProgress.snapTo(0f) } listMode = LogsListMode.Selecting @@ -467,6 +470,12 @@ fun LogsScreen() { LaunchedEffect(Unit) { AppLogStore.ensureLoaded() + listMode = LogsListMode.Normal + selectedEntryIds = emptySet() + searchMode = false + searchQuery = "" + selectionTransitionProgress.snapTo(0f) + searchTransitionProgress.snapTo(0f) } LaunchedEffect(navController.currentBackStackEntry) { @@ -767,14 +776,16 @@ fun LogsScreen() { } .background(MaterialTheme.colorScheme.surfaceContainer), navigationIcon = { - IconButton( - onClick = { navController.navigateUp() }, - enabled = selectionProgress < 1f && searchProgress < 1f, - ) { - Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = stringResource(Res.string.back), - ) + if (settingsDetailShowBackButton()) { + IconButton( + onClick = { navController.navigateUp() }, + enabled = selectionProgress < 1f && searchProgress < 1f, + ) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(Res.string.back), + ) + } } }, title = { @@ -871,7 +882,7 @@ fun LogsScreen() { }, scrollBehavior = scrollBehavior, ) - if (searchMode || searchProgress > 0f) { + if (searchMode) { TopAppBar( modifier = Modifier.graphicsLayer { alpha = searchProgress }, colors = logsTransparentTopAppBarColors(), @@ -931,7 +942,7 @@ fun LogsScreen() { }, ) } - if (selectionMode || selectionProgress > 0f) { + if (selectionMode) { TopAppBar( modifier = Modifier.graphicsLayer { alpha = selectionProgress }, navigationIcon = { diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/NotificationsScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/NotificationsScreen.kt index 2c5115c..5e0ee71 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/NotificationsScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/NotificationsScreen.kt @@ -6,13 +6,10 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Notifications import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.MediumTopAppBar import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.TopAppBarDefaults @@ -36,7 +33,6 @@ import ru.fromchat.Res import ru.fromchat.api.ensureFcmTokenRegistered import ru.fromchat.api.isFcmPushRegisteredLocally import ru.fromchat.api.unregisterFcmTokenFromServer -import ru.fromchat.back import ru.fromchat.error_unexpected import ru.fromchat.settings_notification_settings import ru.fromchat.settings_notification_settings_d @@ -51,6 +47,7 @@ import ru.fromchat.ui.components.Text @OptIn(ExperimentalMaterial3Api::class) @Composable fun NotificationsScreen(onBack: () -> Unit) { + val useCollapsing = settingsDetailUseCollapsingTopBar() val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()) val coroutineScope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } @@ -63,16 +60,16 @@ fun NotificationsScreen(onBack: () -> Unit) { Scaffold( snackbarHost = { FromChatSnackbarHost(hostState = snackbarHostState) }, - modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = if (useCollapsing) { + Modifier.nestedScroll(scrollBehavior.nestedScrollConnection) + } else { + Modifier + }, topBar = { - MediumTopAppBar( + SettingsDetailTopBar( title = { Text(stringResource(Res.string.settings_notifications_title)) }, - navigationIcon = { - IconButton(onClick = onBack) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(Res.string.back)) - } - }, - scrollBehavior = scrollBehavior + onBack = onBack, + scrollBehavior = scrollBehavior, ) } ) { innerPadding -> diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/SettingsDetailTopBar.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/SettingsDetailTopBar.kt new file mode 100644 index 0000000..12adb21 --- /dev/null +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/SettingsDetailTopBar.kt @@ -0,0 +1,67 @@ +package ru.fromchat.ui.main.settings + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MediumTopAppBar +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.runtime.Composable +import com.pr0gramm3r101.utils.WindowWidthSizeClass +import com.pr0gramm3r101.utils.currentWindowAdaptiveInfo +import com.pr0gramm3r101.utils.widthSizeClass +import org.jetbrains.compose.resources.stringResource +import ru.fromchat.Res +import ru.fromchat.back +import ru.fromchat.ui.LocalNavController + +/** + * Back is shown on compact (full-screen stack), and on large screens only when the + * previous destination is not the list–detail shell (`chat`) — i.e. when nested + * deeper than a settings detail opened as the right pane. + */ +@Composable +fun settingsDetailShowBackButton(): Boolean { + if (currentWindowAdaptiveInfo().widthSizeClass == WindowWidthSizeClass.COMPACT) { + return true + } + val previousRoute = LocalNavController.current.previousBackStackEntry?.destination?.route + return previousRoute != null && previousRoute != "chat" +} + +@Composable +fun settingsDetailUseCollapsingTopBar(): Boolean = + currentWindowAdaptiveInfo().widthSizeClass == WindowWidthSizeClass.COMPACT + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SettingsDetailTopBar( + title: @Composable () -> Unit, + onBack: () -> Unit, + scrollBehavior: TopAppBarScrollBehavior? = null, +) { + val navigationIcon: @Composable () -> Unit = { + if (settingsDetailShowBackButton()) { + IconButton(onClick = onBack) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(Res.string.back), + ) + } + } + } + if (settingsDetailUseCollapsingTopBar()) { + MediumTopAppBar( + title = title, + navigationIcon = navigationIcon, + scrollBehavior = scrollBehavior, + ) + } else { + TopAppBar( + title = title, + navigationIcon = navigationIcon, + ) + } +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/SettingsTab.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/SettingsTab.kt index 9294143..85a6e9a 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/SettingsTab.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/SettingsTab.kt @@ -2,6 +2,7 @@ package ru.fromchat.ui.main.settings import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons @@ -9,6 +10,7 @@ import androidx.compose.material.icons.filled.AccountCircle import androidx.compose.material.icons.filled.Devices import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.Notifications +import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.outlined.BugReport import androidx.compose.material.icons.filled.Palette import androidx.compose.material.icons.filled.Storage @@ -21,17 +23,23 @@ import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.pr0gramm3r101.components.Category import com.pr0gramm3r101.components.ListItem +import com.pr0gramm3r101.utils.WindowWidthSizeClass +import com.pr0gramm3r101.utils.currentWindowAdaptiveInfo import com.pr0gramm3r101.utils.verticalScroll +import com.pr0gramm3r101.utils.widthSizeClass import org.jetbrains.compose.resources.stringResource import ru.fromchat.Res import ru.fromchat.about +import ru.fromchat.api.ApiClient import ru.fromchat.change_server import ru.fromchat.change_server_d +import ru.fromchat.profile import ru.fromchat.settings import ru.fromchat.settings_category_account import ru.fromchat.settings_category_account_d @@ -44,8 +52,12 @@ import ru.fromchat.settings_category_notifications_d import ru.fromchat.logs_title import ru.fromchat.settings_hub_about_sub import ru.fromchat.settings_hub_logs_sub +import ru.fromchat.settings_hub_profile_sub import ru.fromchat.ui.LocalNavController +import ru.fromchat.ui.extraStatusBars +import ru.fromchat.ui.main.LocalMainChromeInsets import ru.fromchat.ui.main.mainPagerBottomInset +import ru.fromchat.ui.main.navigateReplacingMainDetail val SettingsStepHorizontalPadding = 24.dp @@ -54,14 +66,26 @@ val SettingsStepHorizontalPadding = 24.dp fun SettingsTab() { val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()) val navController = LocalNavController.current + val isTwoPane = currentWindowAdaptiveInfo().widthSizeClass != WindowWidthSizeClass.COMPACT Scaffold( modifier = Modifier.fillMaxSize().nestedScroll(scrollBehavior.nestedScrollConnection), + containerColor = Color.Transparent, + contentWindowInsets = WindowInsets(0, 0, 0, 0), topBar = { MediumTopAppBar( + windowInsets = if (LocalMainChromeInsets.current.top > 0.dp) { + WindowInsets.extraStatusBars + } else { + WindowInsets(0, 0, 0, 0) + }, title = { Text(stringResource(Res.string.settings), maxLines = 1, overflow = TextOverflow.Ellipsis) }, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = Color.Transparent, + scrolledContainerColor = Color.Transparent, + ), scrollBehavior = scrollBehavior ) } @@ -73,11 +97,25 @@ fun SettingsTab() { .mainPagerBottomInset() .padding(innerPadding) ) { + if (isTwoPane) { + Category(Modifier.padding(top = 16.dp)) { + ListItem( + headline = stringResource(Res.string.profile), + supportingText = stringResource(Res.string.settings_hub_profile_sub), + onClick = { + val userId = ApiClient.user?.id?.takeIf { it > 0 } ?: return@ListItem + navController.navigateReplacingMainDetail("profile/$userId") + }, + leadingContent = { Icon(Icons.Filled.Person, null) }, + ) + } + } + Category(Modifier.padding(top = 16.dp)) { ListItem( headline = stringResource(Res.string.settings_category_account), supportingText = stringResource(Res.string.settings_category_account_d), - onClick = { navController.navigate(SettingsRoutes.Account) }, + onClick = { navController.navigateReplacingMainDetail(SettingsRoutes.Account) }, leadingContent = { Icon(Icons.Filled.AccountCircle, null) }, divider = true ) @@ -85,7 +123,7 @@ fun SettingsTab() { ListItem( headline = stringResource(Res.string.settings_category_devices), supportingText = stringResource(Res.string.settings_category_devices_d), - onClick = { navController.navigate(SettingsRoutes.Devices) }, + onClick = { navController.navigateReplacingMainDetail(SettingsRoutes.Devices) }, leadingContent = { Icon(Icons.Filled.Devices, null) }, divider = true ) @@ -93,7 +131,7 @@ fun SettingsTab() { ListItem( headline = stringResource(Res.string.settings_category_appearance), supportingText = stringResource(Res.string.settings_category_appearance_d), - onClick = { navController.navigate(SettingsRoutes.Appearance) }, + onClick = { navController.navigateReplacingMainDetail(SettingsRoutes.Appearance) }, leadingContent = { Icon(Icons.Filled.Palette, null) }, divider = true ) @@ -101,7 +139,7 @@ fun SettingsTab() { ListItem( headline = stringResource(Res.string.settings_category_notifications), supportingText = stringResource(Res.string.settings_category_notifications_d), - onClick = { navController.navigate(SettingsRoutes.Notifications) }, + onClick = { navController.navigateReplacingMainDetail(SettingsRoutes.Notifications) }, leadingContent = { Icon(Icons.Filled.Notifications, null) }, divider = true ) @@ -109,7 +147,7 @@ fun SettingsTab() { ListItem( headline = stringResource(Res.string.change_server), supportingText = stringResource(Res.string.change_server_d), - onClick = { navController.navigate(SettingsRoutes.ServerConfig) }, + onClick = { navController.navigateReplacingMainDetail(SettingsRoutes.ServerConfig) }, leadingContent = { Icon(Icons.Filled.Storage, null) }, divider = true ) @@ -117,7 +155,7 @@ fun SettingsTab() { ListItem( headline = stringResource(Res.string.about), supportingText = stringResource(Res.string.settings_hub_about_sub), - onClick = { navController.navigate(SettingsRoutes.About) }, + onClick = { navController.navigateReplacingMainDetail(SettingsRoutes.About) }, leadingContent = { Icon(Icons.Filled.Info, null) }, divider = true ) @@ -125,10 +163,10 @@ fun SettingsTab() { ListItem( headline = stringResource(Res.string.logs_title), supportingText = stringResource(Res.string.settings_hub_logs_sub), - onClick = { navController.navigate(SettingsRoutes.Logs) }, + onClick = { navController.navigateReplacingMainDetail(SettingsRoutes.Logs) }, leadingContent = { Icon(Icons.Outlined.BugReport, null) } ) } } } -} \ No newline at end of file +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/account/AccountScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/account/AccountScreen.kt index 423c9cd..cfdb1a6 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/account/AccountScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/account/AccountScreen.kt @@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material.icons.automirrored.filled.Logout import androidx.compose.material.icons.filled.AccountCircle @@ -17,9 +16,7 @@ import androidx.compose.material.icons.filled.Key import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MediumTopAppBar import androidx.compose.material3.Scaffold import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBarDefaults @@ -41,7 +38,6 @@ import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.vectorResource import ru.fromchat.Res import ru.fromchat.api.ApiClient -import ru.fromchat.back import ru.fromchat.cancel import ru.fromchat.ic_yandex import ru.fromchat.logout @@ -55,6 +51,8 @@ import ru.fromchat.settings_account_title import ru.fromchat.settings_change_password import ru.fromchat.settings_security_change_password_sub import ru.fromchat.ui.components.Text +import ru.fromchat.ui.main.settings.SettingsDetailTopBar +import ru.fromchat.ui.main.settings.settingsDetailUseCollapsingTopBar @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -65,6 +63,7 @@ fun AccountScreen( onChangeYandexId: () -> Unit, onDeleteAccount: () -> Unit, ) { + val useCollapsing = settingsDetailUseCollapsingTopBar() val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()) val scope = rememberCoroutineScope() var showLogoutConfirm by remember { mutableStateOf(false) } @@ -76,16 +75,16 @@ fun AccountScreen( } Scaffold( - modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = if (useCollapsing) { + Modifier.nestedScroll(scrollBehavior.nestedScrollConnection) + } else { + Modifier + }, topBar = { - MediumTopAppBar( + SettingsDetailTopBar( title = { Text(stringResource(Res.string.settings_account_title)) }, - navigationIcon = { - IconButton(onClick = onBack) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(Res.string.back)) - } - }, - scrollBehavior = scrollBehavior + onBack = onBack, + scrollBehavior = scrollBehavior, ) } ) { innerPadding -> diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/server/ServerConfigScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/server/ServerConfigScreen.kt index 049b202..be2c8d2 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/server/ServerConfigScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/main/settings/server/ServerConfigScreen.kt @@ -119,6 +119,7 @@ import ru.fromchat.ui.components.SettingsPasswordOutlineFieldShape import ru.fromchat.ui.components.rememberLazyListFocusScrollState import ru.fromchat.ui.components.trackLazyListFocus import ru.fromchat.ui.main.settings.SettingsStepHorizontalPadding +import ru.fromchat.ui.main.settings.settingsDetailShowBackButton private object ServerConfigLazyListIndices { const val SERVER_IP_FIELD = 2 @@ -334,11 +335,13 @@ fun ServerConfigScreen() { TopAppBar( title = {}, navigationIcon = { - IconButton(onClick = navController::navigateUp) { - Icon( - Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = stringResource(Res.string.back) - ) + if (settingsDetailShowBackButton()) { + IconButton(onClick = navController::navigateUp) { + Icon( + Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(Res.string.back) + ) + } } }, colors = TopAppBarDefaults.topAppBarColors( diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/profile/ProfileScreen.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/profile/ProfileScreen.kt index 1263ebb..a5ae0dd 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/profile/ProfileScreen.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/profile/ProfileScreen.kt @@ -63,7 +63,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.relocation.BringIntoViewRequester @@ -192,6 +191,7 @@ import ru.fromchat.ui.components.ScreenSurface import ru.fromchat.ui.components.ShimmerBox import ru.fromchat.ui.components.Text import ru.fromchat.ui.components.showReplacingSnackbar +import ru.fromchat.ui.extraStatusBars import ru.fromchat.utils.RegistrationDateFormatStrings import ru.fromchat.utils.formatLastSeen import ru.fromchat.utils.formatProfileRegistrationDate @@ -269,7 +269,7 @@ fun ProfileScreen( val navController = LocalNavController.current val scope = rememberCoroutineScope() val density = LocalDensity.current - val statusBarTopDp = with(density) { WindowInsets.statusBars.getTop(this).toDp() } + val statusBarTopDp = with(density) { WindowInsets.extraStatusBars.getTop(this).toDp() } val profileAvatarTop = statusBarTopDp + 24.dp val profileLoadFailed = stringResource(Res.string.profile_load_failed) @@ -881,7 +881,7 @@ fun PublicChatProfileScreen( val scope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } val density = LocalDensity.current - val statusBarTopDp = with(density) { WindowInsets.statusBars.getTop(this).toDp() } + val statusBarTopDp = with(density) { WindowInsets.extraStatusBars.getTop(this).toDp() } val profileAvatarTop = statusBarTopDp + 24.dp val profileLoadFailed = stringResource(Res.string.profile_load_failed) val profileNotFound = stringResource(Res.string.profile_not_found) @@ -2058,7 +2058,7 @@ private fun ProfileFloatingBackBar( onClick = onBack, modifier = Modifier .align(Alignment.TopStart) - .windowInsetsPadding(WindowInsets.statusBars), + .windowInsetsPadding(WindowInsets.extraStatusBars), colors = IconButtonDefaults.iconButtonColors( contentColor = MaterialTheme.colorScheme.onSurface, ), diff --git a/app/shared/src/iosMain/kotlin/ru/fromchat/config/DefaultEnterToSend.ios.kt b/app/shared/src/iosMain/kotlin/ru/fromchat/config/DefaultEnterToSend.ios.kt new file mode 100644 index 0000000..167d9b8 --- /dev/null +++ b/app/shared/src/iosMain/kotlin/ru/fromchat/config/DefaultEnterToSend.ios.kt @@ -0,0 +1,3 @@ +package ru.fromchat.config + +internal actual fun defaultEnterToSend(): Boolean = false diff --git a/app/shared/src/iosMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.ios.kt b/app/shared/src/iosMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.ios.kt new file mode 100644 index 0000000..0ea4d26 --- /dev/null +++ b/app/shared/src/iosMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.ios.kt @@ -0,0 +1,8 @@ +package ru.fromchat.ui.chat + +import androidx.compose.runtime.Composable + +@Composable +internal actual fun ProvideChatTextSelectionMenu(content: @Composable () -> Unit) { + content() +} diff --git a/app/shared/src/jvmMain/kotlin/ru/fromchat/config/DefaultEnterToSend.jvm.kt b/app/shared/src/jvmMain/kotlin/ru/fromchat/config/DefaultEnterToSend.jvm.kt new file mode 100644 index 0000000..22bedf7 --- /dev/null +++ b/app/shared/src/jvmMain/kotlin/ru/fromchat/config/DefaultEnterToSend.jvm.kt @@ -0,0 +1,3 @@ +package ru.fromchat.config + +internal actual fun defaultEnterToSend(): Boolean = true diff --git a/app/shared/src/jvmMain/kotlin/ru/fromchat/desktop/DesktopAboutContent.kt b/app/shared/src/jvmMain/kotlin/ru/fromchat/desktop/DesktopAboutContent.kt new file mode 100644 index 0000000..c699a80 --- /dev/null +++ b/app/shared/src/jvmMain/kotlin/ru/fromchat/desktop/DesktopAboutContent.kt @@ -0,0 +1,80 @@ +package ru.fromchat.desktop + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import ru.fromchat.legal.DocumentScreen +import ru.fromchat.legal.DocumentType +import ru.fromchat.ui.FromChatTheme +import ru.fromchat.ui.LocalNavController +import ru.fromchat.ui.components.ScreenSurface +import ru.fromchat.ui.main.settings.AboutScreen + +/** + * Hosts [AboutScreen] (and linked legal docs) for a dedicated desktop About window. + * Back from the root About destination closes via [onClose]. + */ +@Composable +fun DesktopAboutContent(onClose: () -> Unit) { + FromChatTheme { + ScreenSurface { + val navController = rememberNavController() + var aboutOpened by remember { mutableStateOf(false) } + + CompositionLocalProvider(LocalNavController provides navController) { + NavHost( + navController = navController, + startDestination = ABOUT_GATE_ROUTE, + ) { + composable(ABOUT_GATE_ROUTE) { + LaunchedEffect(Unit) { + if (!aboutOpened) { + aboutOpened = true + navController.navigate(ABOUT_ROUTE) + } else { + onClose() + } + } + } + + composable(ABOUT_ROUTE) { + AboutScreen() + } + + composable( + route = DocumentType.ROUTE, + arguments = listOf( + navArgument(DocumentType.ARG_DOCUMENT_TYPE) { type = NavType.StringType }, + ), + ) { entry -> + val type = entry.savedStateHandle + .get(DocumentType.ARG_DOCUMENT_TYPE) + ?.let(DocumentType::typeFromArg) + ?: return@composable + DocumentScreen( + type = type, + onBack = { navController.navigateUp() }, + onOpenLegalDocument = { linkedType -> + navController.navigate(DocumentType.route(linkedType)) { + launchSingleTop = true + } + }, + ) + } + } + } + } + } +} + +private const val ABOUT_GATE_ROUTE = "_about_gate" +private const val ABOUT_ROUTE = "about" diff --git a/app/shared/src/jvmMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.jvm.kt b/app/shared/src/jvmMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.jvm.kt new file mode 100644 index 0000000..158050a --- /dev/null +++ b/app/shared/src/jvmMain/kotlin/ru/fromchat/ui/chat/ChatTextSelectionMenu.jvm.kt @@ -0,0 +1,121 @@ +package ru.fromchat.ui.chat + +import androidx.compose.foundation.ContextMenuArea +import androidx.compose.foundation.ContextMenuItem +import androidx.compose.foundation.ContextMenuRepresentation +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.LocalContextMenuRepresentation +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.LocalTextContextMenu +import androidx.compose.foundation.text.TextContextMenu +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.ContentCopy +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Popup +import androidx.compose.ui.window.PopupProperties +import org.jetbrains.compose.resources.stringResource +import ru.fromchat.Res +import ru.fromchat.action_copy +import androidx.compose.foundation.ContextMenuState as FoundationContextMenuState + +@OptIn(ExperimentalFoundationApi::class) +@Composable +internal actual fun ProvideChatTextSelectionMenu(content: @Composable () -> Unit) { + val labelCopy = stringResource(Res.string.action_copy) + CompositionLocalProvider( + LocalContextMenuRepresentation provides ChatStyleTextContextMenuRepresentation, + LocalTextContextMenu provides ChatStyleTextContextMenu(labelCopy), + content = content, + ) +} + +@OptIn(ExperimentalFoundationApi::class) +private class ChatStyleTextContextMenu( + private val copyLabel: String, +) : TextContextMenu { + @Composable + override fun Area( + textManager: TextContextMenu.TextManager, + state: FoundationContextMenuState, + content: @Composable () -> Unit, + ) { + ContextMenuArea( + items = { + listOfNotNull( + textManager.copy?.takeIf { it.enabled }?.let { action -> + ContextMenuItem(copyLabel) { action.execute() } + }, + ) + }, + state = state, + // Empty selection: let secondary click reach the message menu handler. + enabled = textManager.selectedText.isNotEmpty(), + content = content, + ) + } +} + +private object ChatStyleTextContextMenuRepresentation : ContextMenuRepresentation { + @Composable + override fun Representation( + state: FoundationContextMenuState, + items: () -> List, + ) { + val status = state.status as? FoundationContextMenuState.Status.Open ?: return + val menuItems = items() + if (menuItems.isEmpty()) { + SideEffect { + state.status = FoundationContextMenuState.Status.Closed + } + return + } + + Popup( + alignment = Alignment.TopStart, + offset = IntOffset( + status.rect.left.toInt(), + status.rect.bottom.toInt(), + ), + onDismissRequest = { + state.status = FoundationContextMenuState.Status.Closed + }, + properties = PopupProperties( + focusable = true, + dismissOnBackPress = true, + dismissOnClickOutside = true, + clippingEnabled = false, + ), + ) { + ChatStyleContextMenuFrame { + Column( + modifier = Modifier + .padding(horizontal = 8.dp, vertical = 8.dp) + .verticalScroll(rememberScrollState()), + verticalArrangement = Arrangement.spacedBy(2.dp), + ) { + for (item in menuItems) { + ChatStyleContextMenuItem( + icon = Icons.Rounded.ContentCopy, + text = item.label, + enabled = item.enabled, + onClick = { + state.status = FoundationContextMenuState.Status.Closed + item.onClick() + }, + ) + } + } + } + } + } +}