remove toE164 method from PhoneNumber

This commit is contained in:
Ehren Kret 2024-08-06 11:22:48 -05:00
parent fc350cb88a
commit 99cb4b5ebe
15 changed files with 31 additions and 39 deletions

View File

@ -117,7 +117,7 @@ final class CallKitCallManager {
let phoneNumbers = phoneNumberUtil.parsePhoneNumbers(
userSpecifiedText: handle, localPhoneNumber: localNumber
)
return phoneNumbers.first?.toE164()
return phoneNumbers.first?.e164
}()
if let phoneNumber {
let address = SignalServiceAddress(phoneNumber: phoneNumber)

View File

@ -250,7 +250,7 @@ extension ConversationViewController {
guard
let snippet = dataItem.snippet.strippedOrNil,
let phoneNumberObj = phoneNumberUtil.parsePhoneNumber(userSpecifiedText: snippet),
let phoneNumber = phoneNumberObj.toE164().strippedOrNil
let phoneNumber = phoneNumberObj.e164.strippedOrNil
else {
owsFailDebug("Invalid phone number.")
UIApplication.shared.open(dataItem.url, options: [:], completionHandler: nil)

View File

@ -31,15 +31,13 @@ public class PhoneNumberValidator: NSObject {
}
}
let validBrazilPhoneNumberRegex = try! NSRegularExpression(pattern: "^\\+55\\d{2}9?\\d{8}$", options: [])
private let validBrazilPhoneNumberRegex = try! NSRegularExpression(pattern: "^\\+55\\d{2}9?\\d{8}$", options: [])
private func isValidForBrazilRegistration(phoneNumber: PhoneNumber) -> Bool {
let e164 = phoneNumber.toE164()
return validBrazilPhoneNumberRegex.hasMatch(input: e164)
validBrazilPhoneNumberRegex.hasMatch(input: phoneNumber.e164)
}
let validUnitedStatesPhoneNumberRegex = try! NSRegularExpression(pattern: "^\\+1\\d{10}$", options: [])
private let validUnitedStatesPhoneNumberRegex = try! NSRegularExpression(pattern: "^\\+1\\d{10}$", options: [])
private func isValidForUnitedStatesRegistration(phoneNumber: PhoneNumber) -> Bool {
let e164 = phoneNumber.toE164()
return validUnitedStatesPhoneNumberRegex.hasMatch(input: e164)
validUnitedStatesPhoneNumberRegex.hasMatch(input: phoneNumber.e164)
}
}

View File

@ -440,7 +440,7 @@ private class ChangePhoneNumberValueViews: NSObject {
userSpecifiedText: phoneNumberWithoutCallingCode,
callingCode: callingCode
),
let e164String = phoneNumber.toE164().strippedOrNil,
let e164String = phoneNumber.e164.strippedOrNil,
let e164 = E164(e164String),
PhoneNumberValidator().isValidForRegistration(phoneNumber: phoneNumber)
else {

View File

@ -229,8 +229,7 @@ extension RegistrationPhoneNumberInputView: UITextFieldDelegate {
}
private func formatNationalNumber(input: String) -> String {
return PhoneNumber.bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber(
input, countryCodeString: countryState.callingCode)
return PhoneNumber.bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber(input, countryCodeString: countryState.callingCode)
}
}
@ -243,8 +242,7 @@ extension RegistrationPhoneNumberInputView: CountryCodeViewControllerDelegate {
) {
countryState = newCountryState
nationalNumberView.text = PhoneNumber.bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber(
nationalNumber, countryCodeString: countryState.callingCode)
nationalNumberView.text = PhoneNumber.bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber(nationalNumber, countryCodeString: countryState.callingCode)
delegate?.didChange()
}

View File

@ -357,7 +357,7 @@ class DeleteAccountConfirmationViewController: OWSTableViewController2 {
let possibleNumbers = phoneNumberUtil.parsePhoneNumbers(
userSpecifiedText: possiblePhoneNumber,
localPhoneNumber: localNumber
).map { $0.toE164() }
).map(\.e164)
return possibleNumbers.contains(localNumber)
}

View File

@ -1340,7 +1340,7 @@ class DebugUIMessages: DebugUIPage, Dependencies {
await DebugContactsUtils.createRandomContacts(threadQuantity) { contact, index, stop in
guard
let phoneNumberText = contact.phoneNumbers.first?.value.stringValue,
let e164 = phoneNumberUtil.parsePhoneNumber(userSpecifiedText: phoneNumberText)?.toE164()
let e164 = phoneNumberUtil.parsePhoneNumber(userSpecifiedText: phoneNumberText)?.e164
else {
owsFailDebug("Invalid phone number")
return

View File

@ -114,7 +114,7 @@ public struct FetchedSystemContacts {
)
var results = [CanonicalPhoneNumber]()
for phoneNumberObj in phoneNumbers {
guard let phoneNumber = E164(phoneNumberObj.toE164()) else {
guard let phoneNumber = E164(phoneNumberObj.e164) else {
owsFailDebug("Couldn't convert parsed phone number to E164")
continue
}

View File

@ -42,11 +42,6 @@ public class PhoneNumber: NSObject, NSCoding, Comparable {
coder.encode(e164, forKey: rpDefaultsKeyPhoneNumberCanonical)
}
// TODO: Remove this and use the property directly
public func toE164() -> String {
e164
}
public func getCallingCode() -> NSNumber? {
nbPhoneNumber.countryCode
}
@ -66,6 +61,8 @@ public class PhoneNumber: NSObject, NSCoding, Comparable {
return e164 == otherPhoneNumber.e164
}
public override var hash: Int { e164.hash }
public static func < (_ lhs: PhoneNumber, _ rhs: PhoneNumber) -> Bool {
lhs.compare(rhs) == .orderedAscending
}
@ -108,10 +105,9 @@ public class PhoneNumber: NSObject, NSCoding, Comparable {
}
private static func regionCode(from countryCodeString: String) -> String {
let index = countryCodeString.index(after: countryCodeString.startIndex)
// Int(String) could be used here except it doesn't skip whitespace and so would be a change
// from the objc NSString.integerValue behavior...
let countryCallingCode = (countryCodeString[index...] as NSString).integerValue
let countryCallingCode = (countryCodeString.dropFirst() as NSString).integerValue
return phoneNumberUtil.getRegionCodeForCountryCode(NSNumber(value: countryCallingCode))
}
}

View File

@ -437,7 +437,7 @@ extension PhoneNumberUtil {
guard let phoneNumber = parsePhoneNumber(text, regionCode: countryCode) else {
return
}
guard phoneNumbers.insert(phoneNumber.toE164()).inserted else {
guard phoneNumbers.insert(phoneNumber.e164).inserted else {
return
}
results.append(phoneNumber)

View File

@ -189,10 +189,10 @@ public class OWSContact: MTLModel {
let e164PhoneNumbers: [String] = phoneNumbers.compactMap { phoneNumber in
if let parsedPhoneNumber = phoneNumberUtil.parseE164(phoneNumber.phoneNumber) {
return parsedPhoneNumber.toE164()
return parsedPhoneNumber.e164
}
if let parsedPhoneNumber = phoneNumberUtil.parsePhoneNumber(userSpecifiedText: phoneNumber.phoneNumber) {
return parsedPhoneNumber.toE164()
return parsedPhoneNumber.e164
}
return nil
}

View File

@ -59,7 +59,7 @@ public class OWSContactPhoneNumber: MTLModel, OWSContactField {
if parsedPhoneNumber == nil {
parsedPhoneNumber = phoneNumberUtil.parsePhoneNumber(userSpecifiedText: phoneNumber)
}
return parsedPhoneNumber?.toE164()
return parsedPhoneNumber?.e164
}
// MARK: OWSContactField
@ -101,10 +101,10 @@ extension OWSContactPhoneNumber {
let unparsedPhoneNumber = cnLabeledValue.value.stringValue
let parsedPhoneNumber: String = {
if let phoneNumber = Self.phoneNumberUtil.parseE164(unparsedPhoneNumber) {
return phoneNumber.toE164()
return phoneNumber.e164
}
if let phoneNumber = Self.phoneNumberUtil.parsePhoneNumber(userSpecifiedText: unparsedPhoneNumber) {
return phoneNumber.toE164()
return phoneNumber.e164
}
return unparsedPhoneNumber
}()

View File

@ -23,7 +23,7 @@ class PhoneNumberTest: XCTestCase {
let shouldNotBeNil: [String] = ["+19025550123", "+33170393800"]
for input in shouldNotBeNil {
XCTAssertEqual(phoneNumberUtilRef.parseE164(input)?.toE164(), input, input)
XCTAssertEqual(phoneNumberUtilRef.parseE164(input)?.e164, input, input)
}
}
@ -52,22 +52,22 @@ class PhoneNumberTest: XCTestCase {
("", nil),
]
for (inputValue, expectedValue) in testCases {
let actualValue = phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: inputValue)?.toE164()
let actualValue = phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: inputValue)?.e164
XCTAssertEqual(actualValue, expectedValue, inputValue)
}
}
func testTryParsePhoneNumberWithCallingCode() {
XCTAssertEqual(
phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: "18085550101", callingCode: "1")?.toE164(),
phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: "18085550101", callingCode: "1")?.e164,
"+18085550101"
)
XCTAssertEqual(
phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: "61255504321", callingCode: "61")?.toE164(),
phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: "61255504321", callingCode: "61")?.e164,
"+61255504321"
)
XCTAssertEqual(
phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: "493083050", callingCode: "49")?.toE164(),
phoneNumberUtilRef.parsePhoneNumber(userSpecifiedText: "493083050", callingCode: "49")?.e164,
"+493083050"
)
}
@ -97,7 +97,7 @@ class PhoneNumberTest: XCTestCase {
]
for inputValue in inputValues {
let phoneNumbers = phoneNumberUtilRef.parsePhoneNumbers(userSpecifiedText: inputValue, localPhoneNumber: "+13213214321")
XCTAssertEqual(phoneNumbers.first?.toE164(), expectedValue, inputValue)
XCTAssertEqual(phoneNumbers.first?.e164, expectedValue, inputValue)
}
}
@ -121,7 +121,7 @@ class PhoneNumberTest: XCTestCase {
localPhoneNumber: localNumber
)
XCTAssertEqual(
phoneNumbers.contains(where: { $0.toE164() == testCase.expectedValue }),
phoneNumbers.contains(where: { $0.e164 == testCase.expectedValue }),
testCase.isExpected,
testCase.inputValue
)
@ -152,7 +152,7 @@ class PhoneNumberTest: XCTestCase {
localPhoneNumber: localNumber
)
XCTAssertEqual(
phoneNumbers.contains(where: { $0.toE164() == testCase.expectedValue }),
phoneNumbers.contains(where: { $0.e164 == testCase.expectedValue }),
testCase.isExpected,
testCase.inputValue
)

View File

@ -208,7 +208,7 @@ public class FindByPhoneNumberViewController: OWSTableViewController2 {
userSpecifiedText: callingCode + userSpecifiedText,
localPhoneNumber: localNumber
)
let possibleValidPhoneNumbers = possiblePhoneNumbers.map { $0.toE164() }.filter { !$0.isEmpty }
let possibleValidPhoneNumbers = possiblePhoneNumbers.map { $0.e164 }.filter { !$0.isEmpty }
// There should only be one phone number, since we're explicitly specifying
// a country code and therefore parsing a number in e164 format.

View File

@ -1235,7 +1235,7 @@ struct PhoneNumberFinder {
}
private func validE164(from phoneNumber: PhoneNumber) -> String? {
return E164(phoneNumber.toE164())?.stringValue
return E164(phoneNumber.e164)?.stringValue
}
enum LookupResult {