Files
letro-ios/ElementX/Sources/Services/Media/Provider/MediaSourceProxy.swift
Stefan Ceriu 4c7791ab24 Fix various small errors when running in the Swift 6 language mode (#4109)
* Fix various small errors when running in the Swift 6 language mode

* Make the `TargetConfiguration` run on the main actor.

* Fixed a comment

* Add a comment as to why we can't make the whole NSE a main actor.

* Fix the unit tests

* Fix `blankLinesAtStartOfScope` swiftformat error.
2025-05-13 11:43:47 +03:00

42 lines
1.2 KiB
Swift

//
// Copyright 2022-2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
import Foundation
@preconcurrency import MatrixRustSDK
struct MediaSourceProxy: Hashable, Sendable {
/// The media source provided by Rust.
let underlyingSource: MediaSource
/// The media's mime type, used when loading the media's file.
/// 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?) throws {
underlyingSource = try MediaSource.fromUrl(url: url.absoluteString)
self.url = URL(string: underlyingSource.url())
self.mimeType = mimeType
}
// MARK: - Hashable
static func == (lhs: MediaSourceProxy, rhs: MediaSourceProxy) -> Bool {
lhs.url == rhs.url
}
func hash(into hasher: inout Hasher) {
hasher.combine(url)
}
}