Add force parameter to resource cleanup

This commit is contained in:
Ali 2021-04-16 22:54:27 +04:00
parent 275927c785
commit 16c095d490
4 changed files with 14 additions and 12 deletions

View File

@ -1110,15 +1110,17 @@ public final class MediaBox {
}
}
public func removeCachedResources(_ ids: Set<WrappedMediaResourceId>) -> Signal<Void, NoError> {
public func removeCachedResources(_ ids: Set<WrappedMediaResourceId>, force: Bool = false) -> Signal<Void, NoError> {
return Signal { subscriber in
self.dataQueue.async {
for id in ids {
if self.fileContexts[id] != nil {
continue
}
if self.keepResourceContexts[id] != nil {
continue
if !force {
if self.fileContexts[id] != nil {
continue
}
if self.keepResourceContexts[id] != nil {
continue
}
}
let paths = self.storePathsForId(id.id)
unlink(paths.complete)

View File

@ -35,7 +35,7 @@ public func deleteMessages(transaction: Transaction, mediaBox: MediaBox, ids: [M
}
}
if !resourceIds.isEmpty {
let _ = mediaBox.removeCachedResources(Set(resourceIds)).start()
let _ = mediaBox.removeCachedResources(Set(resourceIds), force: true).start()
}
for id in ids {
if id.peerId.namespace == Namespaces.Peer.CloudChannel && id.namespace == Namespaces.Message.Cloud {
@ -73,7 +73,7 @@ public func deleteAllMessagesWithForwardAuthor(transaction: Transaction, mediaBo
addMessageMediaResourceIdsToRemove(media: media, resourceIds: &resourceIds)
})
if !resourceIds.isEmpty {
let _ = mediaBox.removeCachedResources(Set(resourceIds)).start()
let _ = mediaBox.removeCachedResources(Set(resourceIds), force: true).start()
}
}
@ -85,7 +85,7 @@ public func clearHistory(transaction: Transaction, mediaBox: MediaBox, peerId: P
return true
})
if !resourceIds.isEmpty {
let _ = mediaBox.removeCachedResources(Set(resourceIds)).start()
let _ = mediaBox.removeCachedResources(Set(resourceIds), force: true).start()
}
}
transaction.clearHistory(peerId, namespaces: namespaces, forEachMedia: { _ in

View File

@ -2486,7 +2486,7 @@ func replayFinalState(accountManager: AccountManager, postbox: Postbox, accountP
addMessageMediaResourceIdsToRemove(media: media, resourceIds: &resourceIds)
})
if !resourceIds.isEmpty {
let _ = mediaBox.removeCachedResources(Set(resourceIds)).start()
let _ = mediaBox.removeCachedResources(Set(resourceIds), force: true).start()
}
deletedMessageIds.append(contentsOf: ids.map { .global($0) })
case let .DeleteMessages(ids):
@ -2503,7 +2503,7 @@ func replayFinalState(accountManager: AccountManager, postbox: Postbox, accountP
addMessageMediaResourceIdsToRemove(media: media, resourceIds: &resourceIds)
})
if !resourceIds.isEmpty {
let _ = mediaBox.removeCachedResources(Set(resourceIds)).start()
let _ = mediaBox.removeCachedResources(Set(resourceIds), force: true).start()
}
case let .UpdatePeerChatInclusion(peerId, groupId, changedGroup):
let currentInclusion = transaction.getPeerChatListInclusion(peerId)

View File

@ -1352,7 +1352,7 @@ private func markOutgoingOperationAsCompleted(transaction: Transaction, peerId:
if let operation = entry?.contents as? SecretChatOutgoingOperation {
return PeerOperationLogEntryUpdate(mergedIndex: .remove, contents: .update(operation.withUpdatedDelivered(true)))
} else {
assertionFailure()
//assertionFailure()
return PeerOperationLogEntryUpdate(mergedIndex: .remove, contents: .none)
}
})