From aac5081dec2720414255ab18a12d5c7878592886 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Sun, 18 Jan 2026 19:52:56 +0500 Subject: [PATCH] feat: Add screen orientation setting and improve padding for navigation bars in ChatsList and Onboarding screens --- app/src/main/AndroidManifest.xml | 3 ++- .../java/com/rosetta/messenger/MainActivity.kt | 17 ++++++++++++++++- .../push/RosettaFirebaseMessagingService.kt | 14 ++++++++++++++ .../ui/auth/ConfirmSeedPhraseScreen.kt | 1 + .../messenger/ui/auth/ImportSeedPhraseScreen.kt | 1 + .../messenger/ui/auth/SeedPhraseScreen.kt | 1 + .../messenger/ui/auth/SetPasswordScreen.kt | 2 +- .../rosetta/messenger/ui/auth/UnlockScreen.kt | 2 +- .../rosetta/messenger/ui/auth/WelcomeScreen.kt | 2 +- .../messenger/ui/chats/ChatsListScreen.kt | 14 ++++++++++---- .../messenger/ui/onboarding/OnboardingScreen.kt | 1 + 11 files changed, 49 insertions(+), 9 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f02b2ab..f50626c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,7 +23,8 @@ android:exported="true" android:label="@string/app_name" android:theme="@style/Theme.RosettaAndroid" - android:windowSoftInputMode="adjustResize"> + android:windowSoftInputMode="adjustResize" + android:screenOrientation="portrait"> diff --git a/app/src/main/java/com/rosetta/messenger/MainActivity.kt b/app/src/main/java/com/rosetta/messenger/MainActivity.kt index b80711a..7b7c215 100644 --- a/app/src/main/java/com/rosetta/messenger/MainActivity.kt +++ b/app/src/main/java/com/rosetta/messenger/MainActivity.kt @@ -87,7 +87,10 @@ class MainActivity : ComponentActivity() { // πŸ”” Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Firebase для push-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ initializeFirebase() - // οΏ½ ΠŸΡ€Π΅Π΄Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ эмодзи Π² Ρ„ΠΎΠ½Π΅ для ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ открытия ΠΏΠΈΠΊΠ΅Ρ€Π° + // πŸ”₯ ΠŸΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² foreground + com.rosetta.messenger.push.RosettaFirebaseMessagingService.isAppInForeground = true + + // πŸ“± ΠŸΡ€Π΅Π΄Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ эмодзи Π² Ρ„ΠΎΠ½Π΅ для ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ открытия ΠΏΠΈΠΊΠ΅Ρ€Π° // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ кэш OptimizedEmojiCache.preload(this) @@ -275,6 +278,18 @@ class MainActivity : ComponentActivity() { } } + override fun onResume() { + super.onResume() + // πŸ”₯ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ стало Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ - ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ увСдомлСния + com.rosetta.messenger.push.RosettaFirebaseMessagingService.isAppInForeground = true + } + + override fun onPause() { + super.onPause() + // πŸ”₯ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΡˆΠ»ΠΎ Π² background - Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ увСдомлСния + com.rosetta.messenger.push.RosettaFirebaseMessagingService.isAppInForeground = false + } + /** * πŸ”” Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Firebase Cloud Messaging */ diff --git a/app/src/main/java/com/rosetta/messenger/push/RosettaFirebaseMessagingService.kt b/app/src/main/java/com/rosetta/messenger/push/RosettaFirebaseMessagingService.kt index a2fe8ad..b50eb36 100644 --- a/app/src/main/java/com/rosetta/messenger/push/RosettaFirebaseMessagingService.kt +++ b/app/src/main/java/com/rosetta/messenger/push/RosettaFirebaseMessagingService.kt @@ -37,6 +37,10 @@ class RosettaFirebaseMessagingService : FirebaseMessagingService() { private const val CHANNEL_ID = "rosetta_messages" private const val CHANNEL_NAME = "Messages" private const val NOTIFICATION_ID = 1 + + // πŸ”₯ Π€Π»Π°Π³ - ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² foreground (Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ) + @Volatile + var isAppInForeground = false } /** @@ -89,6 +93,11 @@ class RosettaFirebaseMessagingService : FirebaseMessagingService() { * ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ Π½ΠΎΠ²ΠΎΠΌ сообщСнии */ private fun showMessageNotification(senderPublicKey: String?, senderName: String, messagePreview: String) { + // πŸ”₯ НС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ + if (isAppInForeground) { + return + } + createNotificationChannel() // Intent для открытия Ρ‡Π°Ρ‚Π° @@ -122,6 +131,11 @@ class RosettaFirebaseMessagingService : FirebaseMessagingService() { * ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ простоС ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ */ private fun showSimpleNotification(title: String, body: String) { + // πŸ”₯ НС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ + if (isAppInForeground) { + return + } + createNotificationChannel() val intent = Intent(this, MainActivity::class.java).apply { diff --git a/app/src/main/java/com/rosetta/messenger/ui/auth/ConfirmSeedPhraseScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/auth/ConfirmSeedPhraseScreen.kt index cc8a954..78e9138 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/auth/ConfirmSeedPhraseScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/auth/ConfirmSeedPhraseScreen.kt @@ -133,6 +133,7 @@ fun ConfirmSeedPhraseScreen( .fillMaxSize() .background(backgroundColor) .statusBarsPadding() + .navigationBarsPadding() ) { Column(modifier = Modifier.fillMaxSize()) { // Top bar diff --git a/app/src/main/java/com/rosetta/messenger/ui/auth/ImportSeedPhraseScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/auth/ImportSeedPhraseScreen.kt index 9073266..c70dfc0 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/auth/ImportSeedPhraseScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/auth/ImportSeedPhraseScreen.kt @@ -53,6 +53,7 @@ fun ImportSeedPhraseScreen( .fillMaxSize() .background(backgroundColor) .statusBarsPadding() + .navigationBarsPadding() ) { Column(modifier = Modifier.fillMaxSize()) { // Top bar diff --git a/app/src/main/java/com/rosetta/messenger/ui/auth/SeedPhraseScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/auth/SeedPhraseScreen.kt index 17be948..9059251 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/auth/SeedPhraseScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/auth/SeedPhraseScreen.kt @@ -56,6 +56,7 @@ fun SeedPhraseScreen( .fillMaxSize() .background(backgroundColor) .statusBarsPadding() + .navigationBarsPadding() ) { Column(modifier = Modifier.fillMaxSize()) { // Simple top bar diff --git a/app/src/main/java/com/rosetta/messenger/ui/auth/SetPasswordScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/auth/SetPasswordScreen.kt index 66b23a6..60e9063 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/auth/SetPasswordScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/auth/SetPasswordScreen.kt @@ -97,7 +97,7 @@ fun SetPasswordScreen( val isPasswordWeak = password.isNotEmpty() && password.length < 6 val canContinue = passwordsMatch && !isCreating - Box(modifier = Modifier.fillMaxSize().background(backgroundColor)) { + Box(modifier = Modifier.fillMaxSize().background(backgroundColor).navigationBarsPadding()) { Column(modifier = Modifier.fillMaxSize().statusBarsPadding()) { // Top Bar Row( diff --git a/app/src/main/java/com/rosetta/messenger/ui/auth/UnlockScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/auth/UnlockScreen.kt index 8d9ab55..81c8017 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/auth/UnlockScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/auth/UnlockScreen.kt @@ -167,7 +167,7 @@ fun UnlockScreen( } } - Box(modifier = Modifier.fillMaxSize().background(backgroundColor)) { + Box(modifier = Modifier.fillMaxSize().background(backgroundColor).navigationBarsPadding()) { Column( modifier = Modifier.fillMaxSize() diff --git a/app/src/main/java/com/rosetta/messenger/ui/auth/WelcomeScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/auth/WelcomeScreen.kt index 3da7c2d..901c33f 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/auth/WelcomeScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/auth/WelcomeScreen.kt @@ -76,7 +76,7 @@ fun WelcomeScreen( var visible by remember { mutableStateOf(false) } LaunchedEffect(Unit) { visible = true } - Box(modifier = Modifier.fillMaxSize().background(backgroundColor)) { + Box(modifier = Modifier.fillMaxSize().background(backgroundColor).navigationBarsPadding()) { // Back button when coming from UnlockScreen if (hasExistingAccount) { IconButton(onClick = onBack, modifier = Modifier.statusBarsPadding().padding(4.dp)) { diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt index b2f29aa..7785dc7 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt @@ -151,8 +151,15 @@ fun ChatsListScreen( LaunchedEffect(Unit) { hasInitialized = true } val view = androidx.compose.ui.platform.LocalView.current + val context = androidx.compose.ui.platform.LocalContext.current val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) val scope = rememberCoroutineScope() + + // πŸ”₯ ВБЕГДА Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΈ появлСнии ChatsListScreen + LaunchedEffect(Unit) { + val imm = context.getSystemService(android.content.Context.INPUT_METHOD_SERVICE) as android.view.inputmethod.InputMethodManager + imm.hideSoftInputFromWindow(view.windowToken, 0) + } // Update status bar and completely hide navigation bar LaunchedEffect(isDarkTheme) { @@ -199,11 +206,10 @@ fun ChatsListScreen( var showStatusDialog by remember { mutableStateOf(false) } val debugLogs by ProtocolManager.debugLogs.collectAsState() - // οΏ½ FCM Ρ‚ΠΎΠΊΠ΅Π½ Π΄ΠΈΠ°Π»ΠΎΠ³ + // πŸ“± FCM Ρ‚ΠΎΠΊΠ΅Π½ Π΄ΠΈΠ°Π»ΠΎΠ³ var showFcmDialog by remember { mutableStateOf(false) } - val context = LocalContext.current - // οΏ½πŸ“¬ Requests screen state + // πŸ“¬ Requests screen state var showRequestsScreen by remember { mutableStateOf(false) } // πŸ”₯ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ rememberSaveable Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ состояниС ΠΏΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ @@ -410,7 +416,7 @@ fun ChatsListScreen( } // Simple background - Box(modifier = Modifier.fillMaxSize().background(backgroundColor)) { + Box(modifier = Modifier.fillMaxSize().background(backgroundColor).navigationBarsPadding()) { ModalNavigationDrawer( drawerState = drawerState, drawerContent = { diff --git a/app/src/main/java/com/rosetta/messenger/ui/onboarding/OnboardingScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/onboarding/OnboardingScreen.kt index 484db3e..93db36c 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/onboarding/OnboardingScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/onboarding/OnboardingScreen.kt @@ -179,6 +179,7 @@ fun OnboardingScreen( Box( modifier = Modifier .fillMaxSize() + .navigationBarsPadding() ) { // Base background - shows the OLD theme color during transition Box(