1
1
//
2
- // Copyright (c) 2022 Adyen N.V.
2
+ // Copyright (c) 2023 Adyen N.V.
3
3
//
4
4
// This file is open source and available under the MIT license. See the LICENSE file for more info.
5
5
//
@@ -31,11 +31,15 @@ public final class FormPhoneNumberItem: FormTextItem {
31
31
selectableValues: [ PhoneExtensionPickerItem ] ,
32
32
style: FormTextItemStyle ,
33
33
localizationParameters: LocalizationParameters ? = nil ) {
34
- // swiftlint:disable:next line_length
35
- let preselectedValue = selectableValues. first ( where: { $0. element. value == phoneNumber? . callingCode } ) ?? selectableValues. first ( where: { $0. identifier == Locale . current. regionCode } ) ?? selectableValues [ 0 ]
36
-
37
- phonePrefixItem = FormPhoneExtensionPickerItem ( preselectedValue: preselectedValue, selectableValues: selectableValues, style: style)
34
+
35
+ phonePrefixItem = FormPhoneExtensionPickerItem (
36
+ preselectedValue: selectableValues. preselectedPhoneNumberPrefix ( for: phoneNumber) ,
37
+ selectableValues: selectableValues,
38
+ style: style
39
+ )
40
+
38
41
super. init ( style: style)
42
+
39
43
phonePrefixItem. identifier = ViewIdentifierBuilder . build ( scopeInstance: self , postfix: " phoneExtensionPickerItem " )
40
44
value = phoneNumber? . value ?? " "
41
45
@@ -50,5 +54,25 @@ public final class FormPhoneNumberItem: FormTextItem {
50
54
override public func build( with builder: FormItemViewBuilder ) -> AnyFormItemView {
51
55
builder. build ( with: self )
52
56
}
57
+ }
58
+
59
+ private extension [ PhoneExtensionPickerItem ] {
53
60
61
+ func preselectedPhoneNumberPrefix( for phoneNumber: PhoneNumber ? ) -> PhoneExtensionPickerItem {
62
+
63
+ if let matchingCallingCode = first ( where: { $0. element. value == phoneNumber? . callingCode } ) {
64
+ return matchingCallingCode
65
+ }
66
+
67
+ if let matchingLocaleRegion = first ( where: { $0. identifier == Locale . current. regionCode } ) {
68
+ return matchingLocaleRegion
69
+ }
70
+
71
+ if let firstSelectableValue = first {
72
+ return firstSelectableValue
73
+ }
74
+
75
+ AdyenAssertion . assertionFailure ( message: " Empty list of selectableValues provided " )
76
+ return . init( identifier: " " , element: . init( value: " +1 " , countryCode: " US " ) )
77
+ }
54
78
}
0 commit comments