mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 04:05:20 +00:00
Add room message indicator and simplify room header
- Add blue hashtag icon in main header when there are unread room messages - Remove member count from room title for cleaner look - Add debug logging to diagnose room member list issue
This commit is contained in:
@@ -251,6 +251,7 @@ class ChatViewModel: ObservableObject {
|
||||
roomMembers[room] = []
|
||||
}
|
||||
roomMembers[room]?.insert(meshService.myPeerID)
|
||||
print("[DEBUG-ROOM] Added self \(meshService.myPeerID) to room \(room), total members: \(roomMembers[room]?.count ?? 0)")
|
||||
} else {
|
||||
// Add to main messages
|
||||
messages.append(message)
|
||||
@@ -676,6 +677,9 @@ extension ChatViewModel: BitchatDelegate {
|
||||
}
|
||||
if let senderPeerID = message.senderPeerID {
|
||||
roomMembers[room]?.insert(senderPeerID)
|
||||
print("[DEBUG-ROOM] Added member \(senderPeerID) to room \(room), total members: \(roomMembers[room]?.count ?? 0)")
|
||||
} else {
|
||||
print("[DEBUG-ROOM] No senderPeerID for message in room \(room)")
|
||||
}
|
||||
|
||||
// Update unread count if not currently viewing this room
|
||||
|
||||
@@ -206,14 +206,13 @@ struct ContentView: View {
|
||||
} else if let currentRoom = viewModel.currentRoom {
|
||||
// Room header
|
||||
HStack(spacing: 4) {
|
||||
let memberCount = (viewModel.roomMembers[currentRoom]?.count ?? 0) + 1 // +1 for self
|
||||
Button(action: {
|
||||
withAnimation(.spring(response: 0.3, dampingFraction: 0.8)) {
|
||||
showSidebar.toggle()
|
||||
sidebarDragOffset = 0
|
||||
}
|
||||
}) {
|
||||
Text("\(currentRoom) (\(memberCount))")
|
||||
Text(currentRoom)
|
||||
.font(.system(size: 18, weight: .medium, design: .monospaced))
|
||||
.foregroundColor(Color.blue)
|
||||
}
|
||||
@@ -291,6 +290,15 @@ struct ContentView: View {
|
||||
|
||||
// People counter with unread indicator
|
||||
HStack(spacing: 4) {
|
||||
// Check for any unread room messages
|
||||
let hasUnreadRoomMessages = viewModel.unreadRoomMessages.values.contains { $0 > 0 }
|
||||
|
||||
if hasUnreadRoomMessages {
|
||||
Image(systemName: "number")
|
||||
.font(.system(size: 12))
|
||||
.foregroundColor(Color.blue)
|
||||
}
|
||||
|
||||
if !viewModel.unreadPrivateMessages.isEmpty {
|
||||
Image(systemName: "envelope.fill")
|
||||
.font(.system(size: 12))
|
||||
@@ -593,11 +601,18 @@ struct ContentView: View {
|
||||
if let currentRoom = viewModel.currentRoom,
|
||||
let roomMemberIDs = viewModel.roomMembers[currentRoom] {
|
||||
// Show only peers who have sent messages to this room (including self)
|
||||
print("[DEBUG-VIEW] Room \(currentRoom) has members: \(roomMemberIDs)")
|
||||
print("[DEBUG-VIEW] Connected peers: \(viewModel.connectedPeers)")
|
||||
|
||||
var memberPeers = viewModel.connectedPeers.filter { roomMemberIDs.contains($0) }
|
||||
// Always include ourselves if we're connected
|
||||
if viewModel.connectedPeers.contains(myPeerID) {
|
||||
memberPeers.append(myPeerID)
|
||||
if viewModel.connectedPeers.contains(myPeerID) && roomMemberIDs.contains(myPeerID) {
|
||||
if !memberPeers.contains(myPeerID) {
|
||||
memberPeers.append(myPeerID)
|
||||
}
|
||||
}
|
||||
|
||||
print("[DEBUG-VIEW] Peers to show in room: \(memberPeers)")
|
||||
return Array(Set(memberPeers)) // Remove duplicates
|
||||
} else {
|
||||
// Show all connected peers in main chat
|
||||
|
||||
Reference in New Issue
Block a user