mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-25 16:45:20 +00:00
keyboard works
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user