Skip to content

Commit

Permalink
chore: remove presentationContextProvider from tvOS and watchOS
Browse files Browse the repository at this point in the history
  • Loading branch information
grdsdev committed Apr 11, 2024
1 parent 5797feb commit eea5ae4
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions Sources/Auth/AuthClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,9 @@ public final class AuthClient: @unchecked Sendable {
return
}

var presentationContextProvider: DefaultPresentationContextProvider?
#if !os(tvOS) && !os(watchOS)
var presentationContextProvider: DefaultPresentationContextProvider?
#endif

let session = ASWebAuthenticationSession(
url: url,
Expand All @@ -700,16 +702,20 @@ public final class AuthClient: @unchecked Sendable {
continuation.resume(throwing: AuthError.missingURL)
}

// Keep a strong reference to presentationContextProvider until the flow completes.
_ = presentationContextProvider
#if !os(tvOS) && !os(watchOS)
// Keep a strong reference to presentationContextProvider until the flow completes.
_ = presentationContextProvider
#endif
}

configure(session)

if session.presentationContextProvider == nil {
presentationContextProvider = DefaultPresentationContextProvider()
session.presentationContextProvider = presentationContextProvider
}
#if !os(tvOS) && !os(watchOS)
if session.presentationContextProvider == nil {
presentationContextProvider = DefaultPresentationContextProvider()
session.presentationContextProvider = presentationContextProvider
}
#endif

session.start()
}
Expand Down Expand Up @@ -1255,11 +1261,13 @@ extension AuthClient {
public static let authChangeSessionInfoKey = "AuthClient.authChangeSession"
}

@MainActor
final class DefaultPresentationContextProvider: NSObject,
ASWebAuthenticationPresentationContextProviding
{
func presentationAnchor(for _: ASWebAuthenticationSession) -> ASPresentationAnchor {
ASPresentationAnchor()
#if !os(tvOS) && !os(watchOS)
@MainActor
final class DefaultPresentationContextProvider: NSObject,
ASWebAuthenticationPresentationContextProviding
{
func presentationAnchor(for _: ASWebAuthenticationSession) -> ASPresentationAnchor {
ASPresentationAnchor()
}
}
}
#endif

0 comments on commit eea5ae4

Please sign in to comment.