mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 12:07:55 +00:00
Remove unused media loading from URL. (#663)
We are now using `MediaSource` everywhere (and should continue to do so).
This commit is contained in:
@@ -404,10 +404,6 @@ class ClientProxy: ClientProxyProtocol {
|
||||
}
|
||||
|
||||
extension ClientProxy: MediaLoaderProtocol {
|
||||
func mediaSourceForURL(_ url: URL) async -> MediaSourceProxy {
|
||||
await mediaLoader.mediaSourceForURL(url)
|
||||
}
|
||||
|
||||
func loadMediaContentForSource(_ source: MediaSourceProxy) async throws -> Data {
|
||||
try await mediaLoader.loadMediaContentForSource(source)
|
||||
}
|
||||
|
||||
@@ -69,10 +69,6 @@ class MockClientProxy: ClientProxyProtocol {
|
||||
.failure(.failedSettingAccountData)
|
||||
}
|
||||
|
||||
func mediaSourceForURL(_ url: URL) -> MediaSourceProxy {
|
||||
.init(url: url)
|
||||
}
|
||||
|
||||
func loadMediaContentForSource(_ source: MediaSourceProxy) async throws -> Data {
|
||||
throw ClientProxyError.failedLoadingMedia
|
||||
}
|
||||
|
||||
@@ -20,10 +20,6 @@ protocol ImageProviderProtocol {
|
||||
func imageFromSource(_ source: MediaSourceProxy?, size: CGSize?) -> UIImage?
|
||||
|
||||
@discardableResult func loadImageFromSource(_ source: MediaSourceProxy, size: CGSize?) async -> Result<UIImage, MediaProviderError>
|
||||
|
||||
func imageFromURL(_ url: URL?, size: CGSize?) -> UIImage?
|
||||
|
||||
@discardableResult func loadImageFromURL(_ url: URL, size: CGSize?) async -> Result<UIImage, MediaProviderError>
|
||||
}
|
||||
|
||||
extension ImageProviderProtocol {
|
||||
@@ -34,12 +30,4 @@ extension ImageProviderProtocol {
|
||||
@discardableResult func loadImageFromSource(_ source: MediaSourceProxy) async -> Result<UIImage, MediaProviderError> {
|
||||
await loadImageFromSource(source, size: nil)
|
||||
}
|
||||
|
||||
func imageFromURL(_ url: URL?) -> UIImage? {
|
||||
imageFromURL(url, size: nil)
|
||||
}
|
||||
|
||||
@discardableResult func loadImageFromURL(_ url: URL) async -> Result<UIImage, MediaProviderError> {
|
||||
await loadImageFromURL(url, size: nil)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,10 +33,6 @@ actor MediaLoader: MediaLoaderProtocol {
|
||||
self.client = client
|
||||
self.clientQueue = clientQueue
|
||||
}
|
||||
|
||||
func mediaSourceForURL(_ url: URL) -> MediaSourceProxy {
|
||||
.init(url: url)
|
||||
}
|
||||
|
||||
func loadMediaContentForSource(_ source: MediaSourceProxy) async throws -> Data {
|
||||
try await enqueueLoadMediaRequest(forSource: source) {
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
import Foundation
|
||||
|
||||
protocol MediaLoaderProtocol {
|
||||
func mediaSourceForURL(_ url: URL) async -> MediaSourceProxy
|
||||
|
||||
func loadMediaContentForSource(_ source: MediaSourceProxy) async throws -> Data
|
||||
|
||||
func loadMediaThumbnailForSource(_ source: MediaSourceProxy, width: UInt, height: UInt) async throws -> Data
|
||||
|
||||
@@ -43,18 +43,6 @@ struct MediaProvider: MediaProviderProtocol {
|
||||
return imageCache.retrieveImageInMemoryCache(forKey: cacheKey, options: nil)
|
||||
}
|
||||
|
||||
func imageFromURL(_ url: URL?, size: CGSize?) -> UIImage? {
|
||||
guard let url else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return imageFromSource(.init(url: url), size: size)
|
||||
}
|
||||
|
||||
func loadImageFromURL(_ url: URL, size: CGSize?) async -> Result<UIImage, MediaProviderError> {
|
||||
await loadImageFromSource(.init(url: url), size: size)
|
||||
}
|
||||
|
||||
func loadImageFromSource(_ source: MediaSourceProxy, size: CGSize?) async -> Result<UIImage, MediaProviderError> {
|
||||
if let image = imageFromSource(source, size: size) {
|
||||
return .success(image)
|
||||
@@ -103,18 +91,6 @@ struct MediaProvider: MediaProviderProtocol {
|
||||
let cacheKey = fileCacheKeyForURL(source.url)
|
||||
return fileCache.file(forKey: cacheKey, fileExtension: fileExtension)
|
||||
}
|
||||
|
||||
func fileFromURL(_ url: URL?, fileExtension: String) -> URL? {
|
||||
guard let url else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return fileFromSource(MediaSourceProxy(url: url), fileExtension: fileExtension)
|
||||
}
|
||||
|
||||
func loadFileFromURL(_ url: URL, fileExtension: String) async -> Result<URL, MediaProviderError> {
|
||||
await loadFileFromSource(MediaSourceProxy(url: url), fileExtension: fileExtension)
|
||||
}
|
||||
|
||||
@discardableResult func loadFileFromSource(_ source: MediaSourceProxy, fileExtension: String) async -> Result<URL, MediaProviderError> {
|
||||
if let url = fileFromSource(source, fileExtension: fileExtension) {
|
||||
|
||||
@@ -27,8 +27,4 @@ protocol MediaProviderProtocol: ImageProviderProtocol {
|
||||
func fileFromSource(_ source: MediaSourceProxy?, fileExtension: String) -> URL?
|
||||
|
||||
@discardableResult func loadFileFromSource(_ source: MediaSourceProxy, fileExtension: String) async -> Result<URL, MediaProviderError>
|
||||
|
||||
func fileFromURL(_ url: URL?, fileExtension: String) -> URL?
|
||||
|
||||
@discardableResult func loadFileFromURL(_ url: URL, fileExtension: String) async -> Result<URL, MediaProviderError>
|
||||
}
|
||||
|
||||
@@ -19,15 +19,7 @@ import UIKit
|
||||
|
||||
struct MockMediaProvider: MediaProviderProtocol {
|
||||
func imageFromSource(_ source: MediaSourceProxy?, size: CGSize?) -> UIImage? {
|
||||
imageFromURL(source?.url, size: size)
|
||||
}
|
||||
|
||||
func loadImageFromSource(_ source: MediaSourceProxy, size: CGSize?) async -> Result<UIImage, MediaProviderError> {
|
||||
.failure(.failedRetrievingImage)
|
||||
}
|
||||
|
||||
func imageFromURL(_ url: URL?, size: CGSize?) -> UIImage? {
|
||||
guard url != nil else {
|
||||
guard source != nil else {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -42,7 +34,7 @@ struct MockMediaProvider: MediaProviderProtocol {
|
||||
return UIImage(systemName: "photo")
|
||||
}
|
||||
|
||||
func loadImageFromURL(_ url: URL, size: CGSize?) async -> Result<UIImage, MediaProviderError> {
|
||||
func loadImageFromSource(_ source: MediaSourceProxy, size: CGSize?) async -> Result<UIImage, MediaProviderError> {
|
||||
guard let image = UIImage(systemName: "photo") else {
|
||||
fatalError()
|
||||
}
|
||||
@@ -57,12 +49,4 @@ struct MockMediaProvider: MediaProviderProtocol {
|
||||
@discardableResult func loadFileFromSource(_ source: MediaSourceProxy, fileExtension: String) async -> Result<URL, MediaProviderError> {
|
||||
.failure(.failedRetrievingFile)
|
||||
}
|
||||
|
||||
func fileFromURL(_ url: URL?, fileExtension: String) -> URL? {
|
||||
nil
|
||||
}
|
||||
|
||||
@discardableResult func loadFileFromURL(_ url: URL, fileExtension: String) async -> Result<URL, MediaProviderError> {
|
||||
.failure(.failedRetrievingFile)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,26 +56,6 @@ final class MediaProviderTests: XCTestCase {
|
||||
XCTAssertNil(image)
|
||||
}
|
||||
|
||||
func test_whenImageFromURLStringWithURLStringNil_nilReturned() throws {
|
||||
let image = mediaProvider.imageFromURL(nil, size: AvatarSize.room(on: .timeline).scaledSize)
|
||||
XCTAssertNil(image)
|
||||
}
|
||||
|
||||
func test_whenImageFromURLStringWithURLStringNotNilAndImageCacheContainsImage_imageIsReturned() throws {
|
||||
let avatarSize = AvatarSize.room(on: .timeline)
|
||||
let url = URL.picturesDirectory
|
||||
let key = "\(url.absoluteString){\(avatarSize.scaledValue),\(avatarSize.scaledValue)}"
|
||||
let imageForKey = UIImage()
|
||||
imageCache.retrievedImagesInMemory[key] = imageForKey
|
||||
let image = mediaProvider.imageFromURL(url, size: avatarSize.scaledSize)
|
||||
XCTAssertEqual(image, imageForKey)
|
||||
}
|
||||
|
||||
func test_whenImageFromURLStringWithURLStringNotNilAndImageNotCached_nilReturned() throws {
|
||||
let image = mediaProvider.imageFromURL(URL.picturesDirectory, size: AvatarSize.room(on: .timeline).scaledSize)
|
||||
XCTAssertNil(image)
|
||||
}
|
||||
|
||||
func test_whenLoadImageFromSourceAndImageCacheContainsImage_successIsReturned() async throws {
|
||||
let avatarSize = AvatarSize.room(on: .timeline)
|
||||
let url = URL.picturesDirectory
|
||||
@@ -213,27 +193,6 @@ final class MediaProviderTests: XCTestCase {
|
||||
XCTAssertEqual(result, expectedResult)
|
||||
}
|
||||
|
||||
func test_whenFileFromURLStringAndURLIsNil_nilIsReturned() async throws {
|
||||
mediaLoader.mediaContentData = try loadTestImage().pngData()
|
||||
let url = mediaProvider.fileFromURL(nil, fileExtension: "png")
|
||||
XCTAssertNil(url)
|
||||
}
|
||||
|
||||
func test_whenFileFromURLString_correctURLIsReturned() throws {
|
||||
let expectedURL = URL(filePath: "/some/file/path")
|
||||
fileCache.fileURLToReturn = expectedURL
|
||||
let url = mediaProvider.fileFromURL(URL(staticString: "test/test1"), fileExtension: "png")
|
||||
XCTAssertEqual(url?.absoluteString, expectedURL.absoluteString)
|
||||
}
|
||||
|
||||
func test_whenLoadFileFromURLString_correctURLIsReturned() async throws {
|
||||
let expectedURL = URL(filePath: "/some/file/path")
|
||||
let expectedResult: Result<URL, MediaProviderError> = .success(expectedURL)
|
||||
fileCache.fileURLToReturn = expectedURL
|
||||
let result = await mediaProvider.loadFileFromURL(URL(staticString: "test/test1"), fileExtension: "png")
|
||||
XCTAssertEqual(result, expectedResult)
|
||||
}
|
||||
|
||||
private func loadTestImage() throws -> UIImage {
|
||||
let bundle = Bundle(for: classForCoder)
|
||||
guard let path = bundle.path(forResource: "test_image", ofType: "png"),
|
||||
|
||||
@@ -24,10 +24,6 @@ class MockMediaLoader: MediaLoaderProtocol {
|
||||
var mediaContentData: Data?
|
||||
var mediaThumbnailData: Data?
|
||||
|
||||
func mediaSourceForURL(_ url: URL) -> MediaSourceProxy {
|
||||
MediaSourceProxy(url: URL.picturesDirectory)
|
||||
}
|
||||
|
||||
func loadMediaContentForSource(_ source: ElementX.MediaSourceProxy) async throws -> Data {
|
||||
if let mediaContentData {
|
||||
return mediaContentData
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Remove all APIs that load media from URLs. These were unused and we should continue to load media through MediaSource in the future.
|
||||
Reference in New Issue
Block a user