Skip to content

Commit 92b58c7

Browse files
committed
refactor: use alert in email link and update password
1 parent 15248bb commit 92b58c7

File tree

2 files changed

+34
-24
lines changed

2 files changed

+34
-24
lines changed

FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Views/EmailLinkView.swift

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ public struct EmailLinkView {
2121
@Environment(AuthService.self) private var authService
2222
@Environment(\.reportError) private var reportError
2323
@State private var email = ""
24-
@State private var showModal = false
24+
@State private var showAlert = false
2525

2626
public init() {}
2727

2828
private func sendEmailLink() async throws {
2929
do {
3030
try await authService.sendEmailSignInLink(email: email)
31-
showModal = true
31+
showAlert = true
3232
} catch {
3333
if let errorHandler = reportError {
3434
errorHandler(error)
@@ -73,24 +73,15 @@ extension EmailLinkView: View {
7373
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
7474
.navigationTitle(authService.string.signInWithEmailLinkViewTitle)
7575
.safeAreaPadding()
76-
.sheet(isPresented: $showModal) {
77-
VStack(spacing: 24) {
78-
Text(authService.string.signInWithEmailLinkViewMessage)
79-
.font(.headline)
80-
Button {
81-
showModal = false
82-
} label: {
83-
Text(authService.string.okButtonLabel)
84-
.padding(.vertical, 8)
85-
.frame(maxWidth: .infinity)
86-
}
87-
.buttonStyle(.borderedProminent)
88-
.padding([.top, .bottom], 8)
89-
.frame(maxWidth: .infinity)
76+
.alert(
77+
authService.string.signInWithEmailLinkViewTitle,
78+
isPresented: $showAlert
79+
) {
80+
Button(authService.string.okButtonLabel) {
81+
showAlert = false
9082
}
91-
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
92-
.safeAreaPadding()
93-
.presentationDetents([.medium])
83+
} message: {
84+
Text(authService.string.signInWithEmailLinkViewMessage)
9485
}
9586
.onOpenURL { url in
9687
Task {

FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Views/UpdatePasswordView.swift

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,25 @@ public struct UpdatePasswordView {
3232
@Environment(AuthService.self) private var authService
3333
@State private var password = ""
3434
@State private var confirmPassword = ""
35+
@State private var showAlert = false
3536

3637
@FocusState private var focus: FocusableField?
3738

3839
private var isValid: Bool {
3940
FormValidators.atLeast6Characters.isValid(input: password) &&
4041
FormValidators.confirmPassword(password: password).isValid(input: confirmPassword)
4142
}
43+
44+
private func updatePassword() {
45+
Task {
46+
do {
47+
try await authService.updatePassword(to: confirmPassword)
48+
showAlert = true
49+
} catch {
50+
51+
}
52+
}
53+
}
4254
}
4355

4456
extension UpdatePasswordView: View {
@@ -80,15 +92,11 @@ extension UpdatePasswordView: View {
8092
.focused($focus, equals: .confirmPassword)
8193

8294
Button(action: {
83-
Task {
84-
try await authService.updatePassword(to: confirmPassword)
85-
authService.navigator.clear()
86-
}
95+
updatePassword()
8796
}, label: {
8897
Text(authService.string.updatePasswordButtonLabel)
8998
.padding(.vertical, 8)
9099
.frame(maxWidth: .infinity)
91-
92100
})
93101
.disabled(!isValid)
94102
.padding([.top, .bottom], 8)
@@ -98,6 +106,17 @@ extension UpdatePasswordView: View {
98106
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
99107
.safeAreaPadding()
100108
.navigationTitle(authService.string.passwordRecoveryTitle)
109+
.alert(
110+
"Password Updated",
111+
isPresented: $showAlert
112+
) {
113+
Button(authService.string.okButtonLabel) {
114+
showAlert = false
115+
authService.navigator.clear()
116+
}
117+
} message: {
118+
Text("Your password has been successfully updated.")
119+
}
101120
.sheet(isPresented: $passwordPrompt.isPromptingPassword) {
102121
PasswordPromptSheet(coordinator: authService.passwordPrompt)
103122
}

0 commit comments

Comments
 (0)