diff --git a/Model/Applications/VideosAPI.swift b/Model/Applications/VideosAPI.swift index b84b3c64..e4856b47 100644 --- a/Model/Applications/VideosAPI.swift +++ b/Model/Applications/VideosAPI.swift @@ -66,7 +66,7 @@ protocol VideosAPI { failureHandler: ((RequestError) -> Void)?, completionHandler: @escaping (PlayerQueueItem) -> Void ) - func shareURL(_ item: ContentItem, frontendHost: String?, time: CMTime?) -> URL? + func shareURL(_ item: ContentItem, frontendURL: String?, time: CMTime?) -> URL? func comments(_ id: Video.ID, page: String?) -> Resource? } @@ -108,15 +108,19 @@ extension VideosAPI { .onFailure { failureHandler?($0) } } - func shareURL(_ item: ContentItem, frontendHost: String? = nil, time: CMTime? = nil) -> URL? { - guard let frontendHost = frontendHost ?? account?.instance?.frontendHost, - var urlComponents = account?.instance?.urlComponents - else { + func shareURL(_ item: ContentItem, frontendURLString: String? = nil, time: CMTime? = nil) -> URL? { + var urlComponents: URLComponents? + if let frontendURLString, + let frontendURL = URL(string: frontendURLString) { + urlComponents = URLComponents(URL: frontendURL, resolvingAgainstBaseURL: false) + } else if let instanceComponents = account?.instance?.urlComponents { + urlComponents = instanceComponents + } + + guard var urlComponents else { return nil } - urlComponents.host = frontendHost - var queryItems = [URLQueryItem]() switch item.contentType { diff --git a/Shared/Views/ShareButton.swift b/Shared/Views/ShareButton.swift index 69451b92..9aa716ff 100644 --- a/Shared/Views/ShareButton.swift +++ b/Shared/Views/ShareButton.swift @@ -77,7 +77,7 @@ struct ShareButton: View { private var youtubeActions: some View { Group { - if let url = accounts.api.shareURL(contentItem, frontendHost: "www.youtube.com") { + if let url = accounts.api.shareURL(contentItem, frontendURL: "https://www.youtube.com") { Button(labelForShareURL("YouTube")) { shareAction(url) } @@ -87,7 +87,7 @@ struct ShareButton: View { shareAction( accounts.api.shareURL( contentItem, - frontendHost: "www.youtube.com", + frontendURL: "https://www.youtube.com", time: player.backend.currentTime )! )