@@ -12,31 +12,31 @@ import PhoneNumberKit
12
12
13
13
struct Converter {
14
14
// MARK: Only used in DetailScreen
15
- static func getFormattedPhoneNumber( from phoneNumber: String ) -> String {
16
- let phoneNumberKit = PhoneNumberKit ( )
17
-
15
+ static func getFormattedPhoneNumber( from phoneNumber: String , with phoneNumberKit: PhoneNumberKit ) -> String {
18
16
print ( " formatting phone number: \( phoneNumber) " )
19
17
20
18
do {
21
19
let parsedPhoneNumber = try phoneNumberKit. parse ( phoneNumber. trimmingCharacters ( in: . whitespacesAndNewlines) )
22
- let formattedPhoneNumber = phoneNumberKit. format ( parsedPhoneNumber, toType: . national )
20
+ let formattedPhoneNumber = phoneNumberKit. format ( parsedPhoneNumber, toType: . international )
23
21
return formattedPhoneNumber
24
- }
25
- catch {
26
- print ( " PhoneNumberKit Parse Error: \( error) " )
22
+ } catch {
23
+ print ( " PhoneNumberKit parse error: \( error) " )
27
24
return phoneNumber
28
25
}
29
26
}
30
27
31
- static func getTappablePhoneNumber( from phoneNumber: String ) -> URL {
28
+ static func getTappablePhoneNumber( from phoneNumber: String ) -> URL ? {
32
29
print ( " getting tappable phone number: \( phoneNumber) " )
33
30
34
31
let tel = " tel:// "
35
32
let cleanNumber = phoneNumber. replacingOccurrences ( of: " [^ \\ d+] " , with: " " , options: [ . regularExpression] )
36
33
let formattedString = tel + cleanNumber
37
- let tappableNumber = URL ( string: formattedString) !
38
-
39
- return tappableNumber
34
+
35
+ if let tappableNumber = URL ( string: formattedString) {
36
+ return tappableNumber
37
+ } else {
38
+ return nil
39
+ }
40
40
}
41
41
42
42
static func getTappableEmail( from emailAddress: String ) -> URL {
@@ -97,14 +97,21 @@ struct Converter {
97
97
}
98
98
99
99
100
- // MARK: Used in HomeScreen and DetailScreen
101
-
100
+ // MARK: Used in ContactPictureView and DetailScreen
101
+
102
102
static func getContactPicture( from string: String ) -> Image {
103
- let imageData = NSData ( base64Encoded: string)
104
- let uiImage = UIImage ( data: imageData! as Data ) !
105
- let image = Image ( uiImage: uiImage)
106
-
107
- return image
103
+ if let imageData = NSData ( base64Encoded: string) {
104
+ if let uiImage = UIImage ( data: imageData as Data ) {
105
+ let image = Image ( uiImage: uiImage)
106
+ return image
107
+ } else {
108
+ let image = Image ( uiImage: UIImage ( named: " DefaultPhoto " ) !)
109
+ return image
110
+ }
111
+ } else {
112
+ let image = Image ( uiImage: UIImage ( named: " DefaultPhoto " ) !)
113
+ return image
114
+ }
108
115
}
109
116
110
117
static func convertNotificationPreferenceToString( contact: SelectedContact ) -> String {
@@ -324,10 +331,10 @@ struct Converter {
324
331
dateComponents. day = Int ( contact. notification_preference_custom_day)
325
332
dateComponents. year = Int ( contact. notification_preference_custom_year)
326
333
327
- let dateTime = Calendar . current. date ( from: dateComponents)
328
- let dateString = formatter. string ( from: dateTime! )
329
- let dayDate = formatter. date ( from: dateString) !
330
-
334
+ guard let dateTime = Calendar . current. date ( from: dateComponents) else { return " Unknown " }
335
+ let dateString = formatter. string ( from: dateTime)
336
+ guard let dayDate = formatter. date ( from: dateString) else { return " Unknown " }
337
+
331
338
day = formatter. string ( from: dayDate)
332
339
year = String ( contact. notification_preference_custom_year)
333
340
0 commit comments