ios: move caching images to background thread, dont use main thread scheduler for marking items read (#4840)

This commit is contained in:
Evgeny
2024-09-06 22:09:55 +01:00
committed by GitHub
parent 06939343a1
commit 1839dab17b
2 changed files with 8 additions and 3 deletions
+3 -2
View File
@@ -797,9 +797,10 @@ struct ChatView: View {
}
private func waitToMarkRead(_ op: @Sendable @escaping () async -> Void) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.6) {
Task {
_ = try? await Task.sleep(nanoseconds: 600_000000)
if m.chatId == chat.chatInfo.id {
Task(operation: op)
await op()
}
}
}
+5 -1
View File
@@ -391,7 +391,9 @@ public func imageFromBase64(_ base64Encoded: String?) -> UIImage? {
return img
} else if let data = Data(base64Encoded: dropImagePrefix(base64Encoded)),
let img = UIImage(data: data) {
imageCache.setObject(img, forKey: base64Encoded as NSString)
imageCacheQueue.async {
imageCache.setObject(img, forKey: base64Encoded as NSString)
}
return img
} else {
return nil
@@ -401,6 +403,8 @@ public func imageFromBase64(_ base64Encoded: String?) -> UIImage? {
}
}
private let imageCacheQueue = DispatchQueue.global(qos: .background)
private var imageCache: NSCache<NSString, UIImage> = {
var cache = NSCache<NSString, UIImage>()
cache.countLimit = 1000