mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-24 23:45:19 +00:00
Make Sidebar react to the nickname and RSSI changes. (#228)
This commit is contained in:
@@ -211,6 +211,7 @@ fun ChatHeaderContent(
|
|||||||
val favoritePeers by viewModel.favoritePeers.observeAsState(emptySet())
|
val favoritePeers by viewModel.favoritePeers.observeAsState(emptySet())
|
||||||
val peerFingerprints by viewModel.peerFingerprints.observeAsState(emptyMap())
|
val peerFingerprints by viewModel.peerFingerprints.observeAsState(emptyMap())
|
||||||
val peerSessionStates by viewModel.peerSessionStates.observeAsState(emptyMap())
|
val peerSessionStates by viewModel.peerSessionStates.observeAsState(emptyMap())
|
||||||
|
val peerNicknames by viewModel.peerNicknames.observeAsState(emptyMap())
|
||||||
|
|
||||||
// Reactive favorite computation - no more static lookups!
|
// Reactive favorite computation - no more static lookups!
|
||||||
val isFavorite = isFavoriteReactive(
|
val isFavorite = isFavoriteReactive(
|
||||||
@@ -224,7 +225,7 @@ fun ChatHeaderContent(
|
|||||||
|
|
||||||
PrivateChatHeader(
|
PrivateChatHeader(
|
||||||
peerID = selectedPrivatePeer,
|
peerID = selectedPrivatePeer,
|
||||||
peerNicknames = viewModel.meshService.getPeerNicknames(),
|
peerNicknames = peerNicknames,
|
||||||
isFavorite = isFavorite,
|
isFavorite = isFavorite,
|
||||||
sessionState = sessionState,
|
sessionState = sessionState,
|
||||||
onBackClick = onBackClick,
|
onBackClick = onBackClick,
|
||||||
|
|||||||
@@ -98,6 +98,12 @@ class ChatState {
|
|||||||
private val _peerFingerprints = MutableLiveData<Map<String, String>>(emptyMap())
|
private val _peerFingerprints = MutableLiveData<Map<String, String>>(emptyMap())
|
||||||
val peerFingerprints: LiveData<Map<String, String>> = _peerFingerprints
|
val peerFingerprints: LiveData<Map<String, String>> = _peerFingerprints
|
||||||
|
|
||||||
|
private val _peerNicknames = MutableLiveData<Map<String, String>>(emptyMap())
|
||||||
|
val peerNicknames: LiveData<Map<String, String>> = _peerNicknames
|
||||||
|
|
||||||
|
private val _peerRSSI = MutableLiveData<Map<String, Int>>(emptyMap())
|
||||||
|
val peerRSSI: LiveData<Map<String, Int>> = _peerRSSI
|
||||||
|
|
||||||
// peerIDToPublicKeyFingerprint REMOVED - fingerprints now handled centrally in PeerManager
|
// peerIDToPublicKeyFingerprint REMOVED - fingerprints now handled centrally in PeerManager
|
||||||
|
|
||||||
// Navigation state
|
// Navigation state
|
||||||
@@ -242,6 +248,14 @@ class ChatState {
|
|||||||
_peerFingerprints.value = fingerprints
|
_peerFingerprints.value = fingerprints
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setPeerNicknames(nicknames: Map<String, String>) {
|
||||||
|
_peerNicknames.value = nicknames
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setPeerRSSI(rssi: Map<String, Int>) {
|
||||||
|
_peerRSSI.value = rssi
|
||||||
|
}
|
||||||
|
|
||||||
fun setShowAppInfo(show: Boolean) {
|
fun setShowAppInfo(show: Boolean) {
|
||||||
_showAppInfo.value = show
|
_showAppInfo.value = show
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,6 +88,8 @@ class ChatViewModel(
|
|||||||
val favoritePeers: LiveData<Set<String>> = state.favoritePeers
|
val favoritePeers: LiveData<Set<String>> = state.favoritePeers
|
||||||
val peerSessionStates: LiveData<Map<String, String>> = state.peerSessionStates
|
val peerSessionStates: LiveData<Map<String, String>> = state.peerSessionStates
|
||||||
val peerFingerprints: LiveData<Map<String, String>> = state.peerFingerprints
|
val peerFingerprints: LiveData<Map<String, String>> = state.peerFingerprints
|
||||||
|
val peerNicknames: LiveData<Map<String, String>> = state.peerNicknames
|
||||||
|
val peerRSSI: LiveData<Map<String, Int>> = state.peerRSSI
|
||||||
val showAppInfo: LiveData<Boolean> = state.showAppInfo
|
val showAppInfo: LiveData<Boolean> = state.showAppInfo
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -303,7 +305,7 @@ class ChatViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update reactive states for all connected peers (session states and fingerprints)
|
* Update reactive states for all connected peers (session states, fingerprints, nicknames, RSSI)
|
||||||
*/
|
*/
|
||||||
private fun updateReactiveStates() {
|
private fun updateReactiveStates() {
|
||||||
val currentPeers = state.getConnectedPeersValue()
|
val currentPeers = state.getConnectedPeersValue()
|
||||||
@@ -313,10 +315,15 @@ class ChatViewModel(
|
|||||||
meshService.getSessionState(peerID).toString()
|
meshService.getSessionState(peerID).toString()
|
||||||
}
|
}
|
||||||
state.setPeerSessionStates(sessionStates)
|
state.setPeerSessionStates(sessionStates)
|
||||||
|
|
||||||
// Update fingerprint mappings from centralized manager
|
// Update fingerprint mappings from centralized manager
|
||||||
val fingerprints = privateChatManager.getAllPeerFingerprints()
|
val fingerprints = privateChatManager.getAllPeerFingerprints()
|
||||||
state.setPeerFingerprints(fingerprints)
|
state.setPeerFingerprints(fingerprints)
|
||||||
|
|
||||||
|
val nicknames = meshService.getPeerNicknames()
|
||||||
|
state.setPeerNicknames(nicknames)
|
||||||
|
|
||||||
|
val rssiValues = meshService.getPeerRSSI()
|
||||||
|
state.setPeerRSSI(rssiValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Debug and Troubleshooting
|
// MARK: - Debug and Troubleshooting
|
||||||
|
|||||||
@@ -43,10 +43,8 @@ fun SidebarOverlay(
|
|||||||
val selectedPrivatePeer by viewModel.selectedPrivateChatPeer.observeAsState()
|
val selectedPrivatePeer by viewModel.selectedPrivateChatPeer.observeAsState()
|
||||||
val nickname by viewModel.nickname.observeAsState("")
|
val nickname by viewModel.nickname.observeAsState("")
|
||||||
val unreadChannelMessages by viewModel.unreadChannelMessages.observeAsState(emptyMap())
|
val unreadChannelMessages by viewModel.unreadChannelMessages.observeAsState(emptyMap())
|
||||||
|
val peerNicknames by viewModel.peerNicknames.observeAsState(emptyMap())
|
||||||
// Get peer data from mesh service
|
val peerRSSI by viewModel.peerRSSI.observeAsState(emptyMap())
|
||||||
val peerNicknames = viewModel.meshService.getPeerNicknames()
|
|
||||||
val peerRSSI = viewModel.meshService.getPeerRSSI()
|
|
||||||
|
|
||||||
Box(
|
Box(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
|
|||||||
Reference in New Issue
Block a user