Delete Messages fix

This commit is contained in:
Jake-B 2026-02-17 16:56:55 -05:00
parent d9e169142e
commit 8bb078d131
2 changed files with 14 additions and 3 deletions

View file

@ -156,10 +156,16 @@ extension MeshPackets {
nonisolated public func deleteChannelMessages(channel: ChannelEntity, context: NSManagedObjectContext) {
do {
let objects = channel.allPrivateMessages
// Copied logic from ChannelEntity.allPrivateMessages, which is always on the MainActor
// But this code may not be on the MainActor.
let fetchRequest = MessageEntity.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "channel == %ld AND toUser == nil AND isEmoji == false", channel.index)
let objects = (try? context.fetch(fetchRequest)) ?? [MessageEntity]()
for object in objects {
context.delete(object)
}
try context.save()
} catch let error as NSError {
Logger.data.error("\(error.localizedDescription, privacy: .public)")

View file

@ -162,8 +162,13 @@ struct ChannelList: View {
Button(role: .destructive) {
Task {
await MeshPackets.shared.deleteChannelMessages(channel: channelToDeleteMessages!)
context.refresh(myInfo, mergeChanges: true)
channelToDeleteMessages = nil
await MainActor.run {
context.refresh(channel, mergeChanges: true)
context.refresh(myInfo, mergeChanges: true)
// Reset state
channelToDeleteMessages = nil
}
}
} label: {
Text("Delete")