Prevent too much back and forth through the FFI layer when dealing with MediaSources

This commit is contained in:
Stefan Ceriu
2023-09-18 14:35:50 +03:00
parent a3e558c20c
commit f1375097e3

View File

@@ -24,30 +24,27 @@ struct MediaSourceProxy: Hashable {
/// This is optional when loading images and thumbnails in memory.
let mimeType: String?
let url: URL!
init(source: MediaSource, mimeType: String?) {
underlyingSource = source
url = URL(string: underlyingSource.url())
self.mimeType = mimeType
}
init(url: URL, mimeType: String?) {
underlyingSource = mediaSourceFromUrl(url: url.absoluteString)
self.url = URL(string: underlyingSource.url())
self.mimeType = mimeType
}
var url: URL! {
// Expecting these to always be valid URLs
URL(string: underlyingSource.url())
}
}
// MARK: - Hashable
extension MediaSource: Hashable {
public static func == (lhs: MediaSource, rhs: MediaSource) -> Bool {
lhs.url() == rhs.url()
// MARK: - Hashable
public static func == (lhs: MediaSourceProxy, rhs: MediaSourceProxy) -> Bool {
lhs.url == rhs.url
}
public func hash(into hasher: inout Hasher) {
hasher.combine(url())
hasher.combine(url)
}
}