Swiftgram/TelegramCore/DeleteMessages.swift
2018-07-20 14:16:30 +03:00

41 lines
1.4 KiB
Swift

import Foundation
#if os(macOS)
import PostboxMac
import SwiftSignalKitMac
#else
import Postbox
import SwiftSignalKit
#endif
private func removeMessageMedia(message: Message, mediaBox: MediaBox) {
for media in message.media {
if let image = media as? TelegramMediaImage {
let _ = mediaBox.removeCachedResources(Set(image.representations.map({ WrappedMediaResourceId($0.resource.id) }))).start()
} else if let file = media as? TelegramMediaFile {
let _ = mediaBox.removeCachedResources(Set(file.previewRepresentations.map({ WrappedMediaResourceId($0.resource.id) }))).start()
let _ = mediaBox.removeCachedResources(Set([WrappedMediaResourceId(file.resource.id)])).start()
}
}
}
public func deleteMessages(transaction: Transaction, mediaBox: MediaBox, ids: [MessageId]) {
for id in ids {
if id.peerId.namespace == Namespaces.Peer.SecretChat {
if let message = transaction.getMessage(id) {
removeMessageMedia(message: message, mediaBox: mediaBox)
}
}
}
transaction.deleteMessages(ids)
}
public func clearHistory(transaction: Transaction, mediaBox: MediaBox, peerId: PeerId) {
if peerId.namespace == Namespaces.Peer.SecretChat {
transaction.withAllMessages(peerId: peerId, { message in
removeMessageMedia(message: message, mediaBox: mediaBox)
return true
})
}
transaction.clearHistory(peerId)
}