Compare commits
3 Commits
3eac17d9a8
...
b271917594
| Author | SHA1 | Date | |
|---|---|---|---|
| b271917594 | |||
| 4cfa9f1d48 | |||
| 20c6696fdf |
@@ -20,7 +20,11 @@ import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalFocusManager
|
||||
import androidx.compose.ui.platform.LocalView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.firebase.FirebaseApp
|
||||
@@ -586,6 +590,8 @@ fun MainScreen(
|
||||
|
||||
// Load username AND name from AccountManager (persisted in DataStore)
|
||||
val context = LocalContext.current
|
||||
val focusManager = LocalFocusManager.current
|
||||
val rootView = LocalView.current
|
||||
val callScope = rememberCoroutineScope()
|
||||
val callUiState by CallManager.state.collectAsState()
|
||||
var pendingOutgoingCall by remember { mutableStateOf<SearchUser?>(null) }
|
||||
@@ -757,6 +763,19 @@ fun MainScreen(
|
||||
CallManager.bindAccount(accountPublicKey)
|
||||
}
|
||||
|
||||
LaunchedEffect(callUiState.isVisible) {
|
||||
if (callUiState.isVisible) {
|
||||
focusManager.clearFocus(force = true)
|
||||
|
||||
// Fallback for cases where IME survives focus reset due to window transitions.
|
||||
val activity = rootView.context as? android.app.Activity
|
||||
activity?.window?.let { window ->
|
||||
WindowCompat.getInsetsController(window, rootView)
|
||||
?.hide(WindowInsetsCompat.Type.ime())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(accountPublicKey, reloadTrigger) {
|
||||
if (accountPublicKey.isNotBlank()) {
|
||||
val accountManager = AccountManager(context)
|
||||
|
||||
@@ -17,11 +17,12 @@ object ReleaseNotes {
|
||||
val RELEASE_NOTICE = """
|
||||
Update v$VERSION_PLACEHOLDER
|
||||
|
||||
Оптимизация E2EE и списка чатов
|
||||
- В release отключена frame-диагностика E2EE (детальные frame-логи только в debug)
|
||||
- Упрощен ChatsListScreen: убрано дублирование collectAsState и вынесены route-компоненты
|
||||
- Ускорены выборки по вложениям: добавлен denormalized attachment type + индекс в БД
|
||||
- Добавлена миграция БД с backfill типа вложения для старых сообщений
|
||||
Оптимизация производительности и стабильности
|
||||
- В release отключена frame-диагностика E2EE (детальные frame-логи оставлены только в debug)
|
||||
- Оптимизирован чат-лист: убрано дублирование collectAsState и вынесены route-компоненты
|
||||
- Ускорены выборки по вложениям: добавлен denormalized attachment type и индекс в БД
|
||||
- Добавлен macrobenchmark-модуль с замерами startup, search и chat list scroll
|
||||
- Исправлено поведение UI в звонке: клавиатура автоматически закрывается при открытии call overlay
|
||||
""".trimIndent()
|
||||
|
||||
fun getNotice(version: String): String =
|
||||
|
||||
Reference in New Issue
Block a user