Skip to content

Commit

Permalink
allow AuthViewPicker to modify VSStack
Browse files Browse the repository at this point in the history
  • Loading branch information
russellwheatley committed Mar 6, 2025
1 parent 827023b commit 76ca053
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<Modifier: ViewModifier>: View {
private var FUIAuth: FirebaseAuthSwiftUI
private var authPickerView: AuthPickerView
private var authPickerView: AuthPickerView<Modifier>

public init(FUIAuth: FirebaseAuthSwiftUI,
_authPickerView: AuthPickerView? = nil) {
_authPickerView: AuthPickerView<Modifier>? = nil) {
self.FUIAuth = FUIAuth
authPickerView = _authPickerView ?? AuthPickerView()
}
Expand All @@ -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<Modifier: ViewModifier>: 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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<AuthPickerModifier>(FUIAuth: firebaseAuthUI)
}
}
}
Expand Down

0 comments on commit 76ca053

Please sign in to comment.