Merge pull request #1108 from meshtastic/fixReadIndicator

Fix read indicator
This commit is contained in:
Garth Vander Houwen 2025-02-25 06:29:30 -08:00 committed by GitHub
commit 976ad76a08
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -112,16 +112,8 @@ struct ChannelMessageList: View {
.frame(maxWidth: .infinity)
.id(message.messageId)
.onAppear {
if !message.read {
message.read = true
do {
try context.save()
Logger.data.info("📖 [App] Read message \(message.messageId) ")
appState.unreadChannelMessages = myInfo.unreadMessages
context.refresh(myInfo, mergeChanges: true)
} catch {
Logger.data.error("Failed to read message \(message.messageId): \(error.localizedDescription)")
}
Task {
await markMessageAsRead(message)
}
}
}
@ -178,4 +170,21 @@ struct ChannelMessageList: View {
}
}
}
@MainActor
func markMessageAsRead(_ message: MessageEntity) async {
guard !message.read else { return }
message.read = true
do {
try await Task.sleep(nanoseconds: 300_000_000) // 300ms debounce
try context.save()
Logger.data.info("📖 [App] Read message \(message.messageId)")
appState.unreadChannelMessages = myInfo.unreadMessages
context.refresh(myInfo, mergeChanges: true)
} catch {
Logger.data.error("Failed to read message \(message.messageId): \(error.localizedDescription)")
}
}
}