mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Delete Messages fix
This commit is contained in:
parent
d9e169142e
commit
8bb078d131
2 changed files with 14 additions and 3 deletions
|
|
@ -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)")
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue