keyboard works

This commit is contained in:
callebtc 2025-07-15 18:32:22 +02:00
parent adf12e14b7
commit 6dbac1eb4f
3 changed files with 29 additions and 1 deletions

View File

@ -58,6 +58,9 @@ fun ChatScreen(
onWalletClick: () -> Unit = {},
onWalletClickWithToken: ((com.bitchat.android.parsing.ParsedCashuToken) -> Unit)? = null
) {
// Get focus manager for keyboard control
val focusManager = LocalFocusManager.current
// Initialize payment manager when wallet ViewModel is available
LaunchedEffect(walletViewModel) {
walletViewModel?.let { wallet ->
@ -65,6 +68,11 @@ fun ChatScreen(
}
}
// Initialize focus manager for keyboard control
LaunchedEffect(focusManager) {
viewModel.setFocusManager(focusManager)
}
val colorScheme = MaterialTheme.colorScheme
val messages by viewModel.messages.observeAsState(emptyList())
val connectedPeers by viewModel.connectedPeers.observeAsState(emptyList())

View File

@ -3,6 +3,7 @@ package com.bitchat.android.ui
import android.app.Application
import android.content.Context
import android.util.Log
import androidx.compose.ui.focus.FocusManager
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.viewModelScope
@ -33,6 +34,9 @@ class ChatViewModel(
private val context: Context = application.applicationContext
// Focus manager for keyboard control
private var focusManager: FocusManager? = null
// State management
private val state = ChatState()
@ -52,6 +56,16 @@ class ChatViewModel(
paymentManager = PaymentManager(viewModelScope, walletViewModel)
}
// Initialize focus manager for keyboard control
fun setFocusManager(focusManager: FocusManager) {
this.focusManager = focusManager
}
// Hide keyboard
fun hideKeyboard() {
focusManager?.clearFocus()
}
// Delegate handler for mesh callbacks
private val meshDelegateHandler = MeshDelegateHandler(
state = state,

View File

@ -59,8 +59,14 @@ fun MainAppScreen(
ChatScreen(
viewModel = chatViewModel,
walletViewModel = walletViewModel,
onWalletClick = { showWallet = true },
onWalletClick = {
// Close the keyboard if it's open
chatViewModel.hideKeyboard()
showWallet = true
},
onWalletClickWithToken = { parsedToken ->
// Close the keyboard if it's open
chatViewModel.hideKeyboard()
// Open wallet and show receive dialog with the parsed token immediately
showWallet = true
walletViewModel.openReceiveDialogWithParsedToken(parsedToken)