Skip to content

Commit f54f077

Browse files
committed
Show loading and success button state in POSSendReceiptView
1 parent 905753e commit f54f077

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

WooCommerce/Classes/POS/Presentation/Reusable Views/POSSendReceiptView.swift

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import class WordPressShared.EmailFormatValidator
55

66
struct POSSendReceiptView: View {
77
@State private var textFieldInput: String = ""
8-
@State private var isLoading: Bool = false
8+
@State private var buttonState: POSButtonState = .idle
99
@State private var errorMessage: String?
1010
@FocusState private var isTextFieldFocused: Bool
1111

@@ -29,7 +29,7 @@ struct POSSendReceiptView: View {
2929
ScrollView {
3030
VStack(alignment: .center, spacing: conditionalPadding(POSSpacing.medium)) {
3131
POSPageHeaderView(title: Localization.emailReceiptNavigationText,
32-
backButtonConfiguration: .init(state: isLoading ? .disabled: .enabled,
32+
backButtonConfiguration: .init(state: buttonState != .idle ? .disabled: .enabled,
3333
action: {
3434
withAnimation {
3535
isShowingSendReceiptView = false
@@ -74,10 +74,10 @@ struct POSSendReceiptView: View {
7474
.measureFrame {
7575
buttonFrame = $0
7676
}
77-
.buttonStyle(POSFilledButtonStyle(size: .normal, isLoading: isLoading))
77+
.buttonStyle(POSFilledButtonStyle(size: .normal, state: buttonState))
7878
.dynamicTypeSize(...DynamicTypeSize.accessibility3)
7979
.frame(maxWidth: .infinity)
80-
.disabled(isLoading)
80+
.disabled(buttonState != .idle)
8181
}
8282
.padding([.horizontal])
8383
.padding(.bottom, keyboardFrame.height)
@@ -102,18 +102,21 @@ struct POSSendReceiptView: View {
102102
errorMessage = Localization.emailValidationErrorText
103103
return
104104
}
105-
isLoading = true
105+
buttonState = .loading
106106
do {
107107
errorMessage = nil
108108
try await onSendReceipt(textFieldInput)
109+
109110
withAnimation {
111+
buttonState = .success
112+
} completion: {
110113
isShowingSendReceiptView = false
111114
isTextFieldFocused = false
112115
}
113116
} catch {
114117
errorMessage = Localization.sendReceiptErrorText
118+
buttonState = .idle
115119
}
116-
isLoading = false
117120
}
118121
}
119122
}

0 commit comments

Comments
 (0)