Using thumbnails for notification icons (#2142)

This commit is contained in:
Mauro 2023-11-22 13:06:54 +01:00 committed by GitHub
parent 7c3ee01a6f
commit a7c194198d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 20 additions and 1 deletions

View File

@ -117,7 +117,7 @@ extension UNMutableNotificationContent {
var fetchedImage: INImage?
let image: INImage
if let mediaSource = icon.mediaSource {
switch await mediaProvider?.loadImageDataFromSource(mediaSource) {
switch await mediaProvider?.loadThumbnailForSource(source: mediaSource, size: .init(width: 100, height: 100)) {
case .success(let data):
fetchedImage = INImage(imageData: data)
case .failure(let error):

View File

@ -104,6 +104,18 @@ struct MediaProvider: MediaProviderProtocol {
}
}
// MARK: Thumbnail
func loadThumbnailForSource(source: MediaSourceProxy, size: CGSize) async -> Result<Data, MediaProviderError> {
do {
let thumbnailData = try await mediaLoader.loadMediaThumbnailForSource(source, width: UInt(size.width), height: UInt(size.height))
return .success(thumbnailData)
} catch {
MXLog.error("Failed retrieving image with error: \(error)")
return .failure(.failedRetrievingThumbnail)
}
}
// MARK: - Private
private func cacheKeyForURL(_ url: URL, size: CGSize?) -> String {

View File

@ -21,10 +21,12 @@ enum MediaProviderError: Error {
case failedRetrievingImage
case failedRetrievingFile
case invalidImageData
case failedRetrievingThumbnail
}
protocol MediaProviderProtocol: ImageProviderProtocol {
func loadFileFromSource(_ source: MediaSourceProxy, body: String?) async -> Result<MediaFileHandleProxy, MediaProviderError>
func loadThumbnailForSource(source: MediaSourceProxy, size: CGSize) async -> Result<Data, MediaProviderError>
}
extension MediaProviderProtocol {

View File

@ -18,6 +18,10 @@ import Foundation
import UIKit
struct MockMediaProvider: MediaProviderProtocol {
func loadThumbnailForSource(source: MediaSourceProxy, size: CGSize) async -> Result<Data, MediaProviderError> {
fatalError("Not implemented")
}
func imageFromSource(_ source: MediaSourceProxy?, size: CGSize?) -> UIImage? {
guard source != nil else {
return nil

1
changelog.d/2136.bugfix Normal file
View File

@ -0,0 +1 @@
Fixed a bug that made iOS 17 render avatars sideways in notifications.