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
@@ -58,6 +58,9 @@ fun ChatScreen(
onWalletClick: () -> Unit = {}, onWalletClick: () -> Unit = {},
onWalletClickWithToken: ((com.bitchat.android.parsing.ParsedCashuToken) -> Unit)? = null 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 // Initialize payment manager when wallet ViewModel is available
LaunchedEffect(walletViewModel) { LaunchedEffect(walletViewModel) {
walletViewModel?.let { wallet -> 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 colorScheme = MaterialTheme.colorScheme
val messages by viewModel.messages.observeAsState(emptyList()) val messages by viewModel.messages.observeAsState(emptyList())
val connectedPeers by viewModel.connectedPeers.observeAsState(emptyList()) val connectedPeers by viewModel.connectedPeers.observeAsState(emptyList())
@@ -3,6 +3,7 @@ package com.bitchat.android.ui
import android.app.Application import android.app.Application
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import androidx.compose.ui.focus.FocusManager
import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
@@ -33,6 +34,9 @@ class ChatViewModel(
private val context: Context = application.applicationContext private val context: Context = application.applicationContext
// Focus manager for keyboard control
private var focusManager: FocusManager? = null
// State management // State management
private val state = ChatState() private val state = ChatState()
@@ -52,6 +56,16 @@ class ChatViewModel(
paymentManager = PaymentManager(viewModelScope, walletViewModel) 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 // Delegate handler for mesh callbacks
private val meshDelegateHandler = MeshDelegateHandler( private val meshDelegateHandler = MeshDelegateHandler(
state = state, state = state,
@@ -59,8 +59,14 @@ fun MainAppScreen(
ChatScreen( ChatScreen(
viewModel = chatViewModel, viewModel = chatViewModel,
walletViewModel = walletViewModel, walletViewModel = walletViewModel,
onWalletClick = { showWallet = true }, onWalletClick = {
// Close the keyboard if it's open
chatViewModel.hideKeyboard()
showWallet = true
},
onWalletClickWithToken = { parsedToken -> onWalletClickWithToken = { parsedToken ->
// Close the keyboard if it's open
chatViewModel.hideKeyboard()
// Open wallet and show receive dialog with the parsed token immediately // Open wallet and show receive dialog with the parsed token immediately
showWallet = true showWallet = true
walletViewModel.openReceiveDialogWithParsedToken(parsedToken) walletViewModel.openReceiveDialogWithParsedToken(parsedToken)