TM-SGNL-iOS/SignalUI/RecipientPickers/NonContactTableViewCell.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

62 lines
2.2 KiB
Swift

//
// Copyright 2019 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import SignalServiceKit
public final class NonContactTableViewCell: UITableViewCell, ReusableTableViewCell {
public static let reuseIdentifier = "NonContactTableViewCell"
private let iconView: UIImageView = {
let avatarSize = CGFloat(AvatarBuilder.smallAvatarSizePoints)
let iconView = UIImageView()
iconView.contentMode = .center
iconView.autoSetDimensions(to: CGSize(square: avatarSize))
iconView.layer.cornerRadius = avatarSize * 0.5
iconView.clipsToBounds = true
return iconView
}()
private let labelView: UILabel = {
let labelView = UILabel()
labelView.font = OWSTableItem.primaryLabelFont
return labelView
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
OWSTableItem.configureCell(self)
let stackView = UIStackView()
stackView.spacing = ContactCellView.avatarTextHSpacing
stackView.addArrangedSubview(iconView)
stackView.addArrangedSubview(labelView)
contentView.addSubview(stackView)
stackView.autoPinWidthToSuperviewMargins()
stackView.autoPinHeightToSuperview(withMargin: 7)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func configureWithTitle(_ title: String, imageName: String) {
iconView.setTemplateImageName(imageName, tintColor: Theme.isDarkThemeEnabled ? .ows_gray02 : .ows_gray75)
iconView.backgroundColor = Theme.isDarkThemeEnabled ? .ows_gray75 : .ows_gray10
labelView.textColor = Theme.primaryTextColor
labelView.text = title
}
public func configureWithUsername(_ username: String) {
configureWithTitle(username, imageName: "search-20")
}
public func configureWithPhoneNumber(_ phoneNumber: String) {
let formattedPhoneNumber = PhoneNumber.bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber(phoneNumber)
configureWithTitle(formattedPhoneNumber, imageName: "person-20")
}
}