diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthSwiftUI/FirebaseAuthSwiftUI.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthSwiftUI/FirebaseAuthSwiftUI.swift index 7de9d6482a..a1588b257e 100644 --- a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthSwiftUI/FirebaseAuthSwiftUI.swift +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthSwiftUI/FirebaseAuthSwiftUI.swift @@ -63,12 +63,12 @@ public class FirebaseAuthSwiftUI { // main auth view - can be composed of custom views or fallback to default views. We can also pass // state upwards as opposed to having callbacks. // Negates the need for a delegate used in UIKit -public struct FUIAuthView: View { +public struct FUIAuthView: View { private var FUIAuth: FirebaseAuthSwiftUI - private var authPickerView: AuthPickerView + private var authPickerView: AuthPickerView public init(FUIAuth: FirebaseAuthSwiftUI, - _authPickerView: AuthPickerView? = nil) { + _authPickerView: AuthPickerView? = nil) { self.FUIAuth = FUIAuth authPickerView = _authPickerView ?? AuthPickerView() } @@ -84,24 +84,34 @@ public protocol AuthPickerViewProtocol: View { var title: AnyView { get } } -public struct AuthPickerView: AuthPickerViewProtocol { +public struct AuthPickerModifier: ViewModifier { + public func body(content: Content) -> some View { + content + .padding(20) + .background(Color.white) + .cornerRadius(12) + .shadow(radius: 10) + .padding() + } +} + +public struct AuthPickerView: AuthPickerViewProtocol { private var emailAuthButton: EmailAuthButton + private var vStackModifier: Modifier - public init(title: String? = nil, _emailAuthButton: EmailAuthButton? = nil) { + public init(title _: String? = nil, _emailAuthButton: EmailAuthButton? = nil, + _modifier: Modifier? = nil) { emailAuthButton = _emailAuthButton ?? EmailAuthButton() + vStackModifier = _modifier ?? AuthPickerModifier() as! Modifier } public var body: some View { VStack { title emailAuthButton - }.padding(20) - .background(Color.white) - .cornerRadius(12) - .shadow(radius: 10) - .padding() + }.modifier(vStackModifier) } - + // Default implementation that can be overridden public var title: AnyView { AnyView( diff --git a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift index 6c9a1c6358..9ffee1b66b 100644 --- a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift +++ b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift @@ -22,7 +22,7 @@ struct FirebaseSwiftUIExampleApp: App { // Put this at top level so user can control it in their app NavigationView { let firebaseAuthUI = FirebaseAuthSwiftUI() - FUIAuthView(FUIAuth: firebaseAuthUI) + FUIAuthView(FUIAuth: firebaseAuthUI) } } }