Unread messages for private groups

This commit is contained in:
Garth Vander Houwen 2023-08-29 18:51:57 -07:00
parent b304b81d5f
commit 775898ebcd
4 changed files with 20 additions and 3 deletions

View file

@ -12,4 +12,10 @@ extension ChannelEntity {
self.value(forKey: "allPrivateMessages") as? [MessageEntity] ?? [MessageEntity]()
}
var unreadMessages: Int {
let unreadMessages = allPrivateMessages.filter{ ($0 as AnyObject).read == false }
return unreadMessages.count
}
}

View file

@ -226,6 +226,18 @@ struct ChannelMessageList: View {
}
}, secondaryButton: .cancel())
}
.onAppear {
if !message.read {
message.read = true
message.toUser?.objectWillChange.send()
do {
try context.save()
print("Read message \(message.messageId) ")
} catch {
print("Failed to read message \(message.messageId)")
}
}
}
}
}
}

View file

@ -47,7 +47,7 @@ struct Contacts: View {
ZStack {
Image(systemName: "circle.fill")
.opacity(channel.allPrivateMessages.count > 0 ? 1 : 0)
.opacity(channel.unreadMessages > 0 ? 1 : 0)
.font(.system(size: 10))
.foregroundColor(.accentColor)
.brightness(0.2)

View file

@ -364,8 +364,7 @@ struct UserMessageList: View {
.toolbar {
ToolbarItem(placement: .principal) {
HStack {
CircleText(text: user.shortName ?? "???", color: Color(UIColor(hex: UInt32(user.num))), circleSize: 44, fontSize: 14, textColor: UIColor(hex: UInt32(user.num)).isLight() ? .black : .white ).fixedSize()
Text(user.longName ?? "unknown".localized).font(.headline)
CircleText(text: user.shortName ?? "???", color: Color(UIColor(hex: UInt32(user.num))), circleSize: 44, fontSize: (user.shortName ?? "???").isEmoji() ? 32 : (user.shortName?.count ?? 0 == 4 ? 14 : (user.shortName?.count ?? 0 == 3 ? 18 : 22)), brightness: 0.0, textColor: UIColor(hex: UInt32(user.num)).isLight() ? .black : .white)
}
}
ToolbarItem(placement: .navigationBarTrailing) {