TM-SGNL-iOS/SignalServiceKit/TestUtils/FakeContactsManager.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

53 lines
1.9 KiB
Swift

//
// Copyright 2018 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
public import Contacts
#if TESTABLE_BUILD
@objc(OWSFakeContactsManager)
public class FakeContactsManager: NSObject, ContactManager {
public var mockSignalAccounts = [String: SignalAccount]()
public func fetchSignalAccounts(for phoneNumbers: [String], transaction: SDSAnyReadTransaction) -> [SignalAccount?] {
return phoneNumbers.map { mockSignalAccounts[$0] }
}
public func displayNames(for addresses: [SignalServiceAddress], tx: SDSAnyReadTransaction) -> [DisplayName] {
return addresses.map { address in
if let phoneNumber = address.e164 {
if let signalAccount = mockSignalAccounts[phoneNumber.stringValue] {
var nameComponents = PersonNameComponents()
nameComponents.givenName = signalAccount.givenName
nameComponents.familyName = signalAccount.familyName
return .systemContactName(DisplayName.SystemContactName(
nameComponents: nameComponents,
multipleAccountLabel: nil
))
}
return .phoneNumber(phoneNumber)
}
return .unknown
}
}
public func displayNameString(for address: SignalServiceAddress, transaction: SDSAnyReadTransaction) -> String {
return displayName(for: address, tx: transaction).resolvedValue(config: DisplayName.Config(shouldUseSystemContactNicknames: false))
}
public func shortDisplayNameString(for address: SignalServiceAddress, transaction: SDSAnyReadTransaction) -> String {
return displayNameString(for: address, transaction: transaction)
}
public func cnContactId(for phoneNumber: String) -> String? {
return nil
}
public func cnContact(withId contactId: String?) -> CNContact? {
return nil
}
}
#endif