File tree Expand file tree Collapse file tree 2 files changed +52
-6
lines changed
Expand file tree Collapse file tree 2 files changed +52
-6
lines changed Original file line number Diff line number Diff line change 1+ //
2+ // AccountService+Twitter.swift
3+ // FirebaseUI
4+ //
5+ // Created by Russell Wheatley on 10/10/2025.
6+ //
7+
8+ @preconcurrency import FirebaseAuth
9+ import FirebaseAuthSwiftUI
10+ import Observation
11+
12+ protocol GoogleOperationReauthentication {
13+ var twitterProvider : TwitterProviderSwift { get }
14+ }
15+
16+ extension GoogleOperationReauthentication {
17+ @MainActor func reauthenticate( ) async throws -> AuthenticationToken {
18+ guard let user = Auth . auth ( ) . currentUser else {
19+ throw AuthServiceError . reauthenticationRequired ( " No user currently signed-in " )
20+ }
21+
22+ do {
23+ let credential = try await twitterProvider. createAuthCredential ( )
24+ try await user. reauthenticate ( with: credential)
25+
26+ return . firebase( " " )
27+ } catch {
28+ throw AuthServiceError . signInFailed ( underlying: error)
29+ }
30+ }
31+ }
32+
33+ @MainActor
34+ class TwitterDeleteUserOperation : AuthenticatedOperation ,
35+ @preconcurrency GoogleOperationReauthentication {
36+ let twitterProvider : TwitterProviderSwift
37+ init ( twitterProvider: TwitterProviderSwift ) {
38+ self . twitterProvider = twitterProvider
39+ }
40+
41+ func callAsFunction( on user: User ) async throws {
42+ try await callAsFunction ( on: user) {
43+ try await user. delete ( )
44+ }
45+ }
46+ }
Original file line number Diff line number Diff line change @@ -44,21 +44,21 @@ public class TwitterProviderSwift: AuthProviderSwift {
4444 }
4545}
4646
47- public class TwitterProviderAuthUI : AuthProviderUI {
47+ public class TwitterProviderAuthUI : AuthProviderUI , DeleteUserSwift {
4848 public var provider : AuthProviderSwift
4949
5050 public init ( provider: AuthProviderSwift ) {
5151 self . provider = provider
5252 }
5353
54- public let id : String = " twitter "
54+ public let id : String = " twitter.com "
5555
5656 @MainActor public func authButton( ) -> AnyView {
5757 AnyView ( SignInWithTwitterButton ( provider: provider) )
5858 }
5959
60- // TODO: need to implement delete user protocol
61- // @MainActor public func deleteUser(user _: User) async throws {
62- // <#code#>
63- // }
60+ public func deleteUser ( user : User ) async throws {
61+ let operation = TwitterDeleteUserOperation ( twitterProvider : provider as! TwitterProviderSwift )
62+ try await operation ( on : user )
63+ }
6464}
You can’t perform that action at this time.
0 commit comments