import UIKit import Shared import Combine final class CreateGroupCollectionCell: UICollectionViewCell { let titleLabel = UILabel() let removeButton = UIButton() let upperView = UIView() let avatarView = AvatarView() var didTapRemove: (() -> Void)? var cancellables = Set<AnyCancellable>() override init(frame: CGRect) { super.init(frame: frame) titleLabel.numberOfLines = 2 titleLabel.lineBreakMode = .byWordWrapping titleLabel.textAlignment = .center titleLabel.textColor = Asset.neutralDark.color titleLabel.font = Fonts.Mulish.semiBold.font(size: 14.0) removeButton.layer.cornerRadius = 9 removeButton.backgroundColor = Asset.accentDanger.color removeButton.setImage(Asset.contactListAvatarRemove.image, for: .normal) upperView.addSubview(avatarView) contentView.addSubview(titleLabel) contentView.addSubview(upperView) contentView.addSubview(removeButton) upperView.snp.makeConstraints { $0.top.equalToSuperview() $0.left.equalToSuperview() $0.right.equalToSuperview() } avatarView.snp.makeConstraints { $0.width.equalTo(48) $0.height.equalTo(48) $0.top.equalToSuperview().offset(4) $0.left.equalToSuperview().offset(4) $0.right.equalToSuperview().offset(-4) $0.bottom.equalToSuperview().offset(-4) } removeButton.snp.makeConstraints { $0.centerY.equalTo(avatarView.snp.top).offset(5) $0.centerX.equalTo(avatarView.snp.right).offset(-5) $0.width.equalTo(18) $0.height.equalTo(18) } titleLabel.snp.makeConstraints { $0.top.equalTo(upperView.snp.bottom) $0.left.equalToSuperview() $0.right.equalToSuperview() $0.bottom.equalToSuperview() } } required init?(coder: NSCoder) { nil } override func prepareForReuse() { super.prepareForReuse() titleLabel.text = nil avatarView.prepareForReuse() cancellables.removeAll() } func setup(title: String, image: Data?) { titleLabel.text = title avatarView.setupProfile(title: title, image: image, size: .large) cancellables.removeAll() removeButton.publisher(for: .touchUpInside) .sink { [unowned self] in didTapRemove?() } .store(in: &cancellables) } }