Skip to content

Commit 41a4329

Browse files
committed
Validate emails for coupon
1 parent b758416 commit 41a4329

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

WooCommerce/Classes/ViewRelated/Coupons/Add and Edit Coupons/UsageDetails/CouponAllowedEmails.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import SwiftUI
44
///
55
struct CouponAllowedEmails: View {
66
@ObservedObject private var viewModel: CouponAllowedEmailsViewModel
7+
@Environment(\.presentationMode) var presentation
78

89
init(viewModel: CouponAllowedEmailsViewModel) {
910
self.viewModel = viewModel
@@ -31,11 +32,14 @@ struct CouponAllowedEmails: View {
3132
.navigationBarTitleDisplayMode(.inline)
3233
.toolbar {
3334
ToolbarItem(placement: .navigationBarTrailing) {
34-
Button(action: {
35-
viewModel.validateEmails()
36-
}, label: Localization.done)
35+
Button(Localization.done) {
36+
viewModel.validateEmails {
37+
presentation.wrappedValue.dismiss()
38+
}
39+
}
3740
}
3841
}
42+
.wooNavigationBarStyle()
3943
}
4044
}
4145

WooCommerce/Classes/ViewRelated/Coupons/Add and Edit Coupons/UsageDetails/CouponAllowedEmailsViewModel.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import WordPressShared
23

34
/// View model for `CouponAllowedEmails` view.
45
///
@@ -16,8 +17,12 @@ final class CouponAllowedEmailsViewModel: ObservableObject {
1617

1718
/// Validate the input
1819
///
19-
func validateEmails() -> Bool {
20-
// TODO: implement this
21-
return true
20+
func validateEmails(dismissHandler: @escaping () -> Void) {
21+
let emails = emailPatterns.components(separatedBy: ", ")
22+
foundInvalidPatterns = emails.contains(where: { !EmailFormatValidator.validate(string: $0) })
23+
if !foundInvalidPatterns {
24+
onCompletion(emailPatterns)
25+
dismissHandler()
26+
}
2227
}
2328
}

0 commit comments

Comments
 (0)