fix: update status bar color management for improved visibility in ChatDetailScreen and OtherProfileScreen

This commit is contained in:
2026-02-03 02:39:13 +05:00
parent 7d90a9d744
commit da76243e3a
8 changed files with 197 additions and 50 deletions

View File

@@ -1,7 +1,9 @@
package com.rosetta.messenger.ui.settings
import android.app.Activity
import android.util.Log
import androidx.activity.compose.BackHandler
import androidx.core.view.WindowCompat
import androidx.compose.animation.core.LinearOutSlowInEasing
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween
@@ -36,6 +38,7 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
@@ -82,6 +85,26 @@ fun OtherProfileScreen(
val secondaryTextColor = if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666)
val avatarColors = getAvatarColor(user.publicKey, isDarkTheme)
val context = LocalContext.current
val view = LocalView.current
val window = remember { (view.context as? Activity)?.window }
// 🎨 Статус бар - прозрачный с белыми иконками (поверх аватара)
DisposableEffect(Unit) {
val insetsController = window?.let { WindowCompat.getInsetsController(it, view) }
// Сохраняем оригинальные значения
val originalStatusBarColor = window?.statusBarColor ?: 0
val originalLightStatusBars = insetsController?.isAppearanceLightStatusBars ?: false
// Прозрачный статус бар с белыми иконками
window?.statusBarColor = android.graphics.Color.TRANSPARENT
insetsController?.isAppearanceLightStatusBars = false
onDispose {
// Восстанавливаем при выходе
window?.statusBarColor = originalStatusBarColor
insetsController?.isAppearanceLightStatusBars = originalLightStatusBars
}
}
// 🔥 Получаем тот же ChatViewModel что и в ChatDetailScreen для очистки истории
val viewModel: ChatViewModel = viewModel(key = "chat_${user.publicKey}")