Tusker/Tusker/Screens/Profile/ProfileNoContentCollectionV...

82 lines
2.8 KiB
Swift

//
// ProfileNoContentCollectionViewCell.swift
// Tusker
//
// Created by Shadowfacts on 2/22/23.
// Copyright © 2023 Shadowfacts. All rights reserved.
//
import UIKit
class ProfileNoContentCollectionViewCell: UICollectionViewListCell {
weak var delegate: TuskerNavigationDelegate?
private var accountURL: URL?
private var button: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
let title = UILabel()
title.text = "There's nothing here"
title.adjustsFontForContentSizeCategory = true
title.font = .preferredFont(forTextStyle: .headline)
title.numberOfLines = 0
title.textAlignment = .center
title.textColor = .secondaryLabel
let body = UILabel()
body.text = "Your instance may not show all of the posts from accounts on other instances."
body.adjustsFontForContentSizeCategory = true
body.font = .preferredFont(forTextStyle: .body)
body.numberOfLines = 0
body.textAlignment = .center
body.textColor = .secondaryLabel
button = UIButton(configuration: .plain(), primaryAction: UIAction(handler: { [unowned self] _ in
if let delegate = self.delegate,
let accountURL = self.accountURL {
delegate.selected(url: accountURL)
}
}))
let stack = UIStackView(arrangedSubviews: [
title,
body,
button,
])
stack.axis = .vertical
stack.alignment = .center
stack.spacing = 4
stack.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(stack)
NSLayoutConstraint.activate([
stack.leadingAnchor.constraint(equalToSystemSpacingAfter: contentView.leadingAnchor, multiplier: 1),
contentView.trailingAnchor.constraint(equalToSystemSpacingAfter: stack.trailingAnchor, multiplier: 1),
stack.topAnchor.constraint(equalToSystemSpacingBelow: contentView.topAnchor, multiplier: 1),
contentView.bottomAnchor.constraint(equalToSystemSpacingBelow: stack.bottomAnchor, multiplier: 1),
])
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func updateUI(accountURL: URL) {
self.accountURL = accountURL
var title: AttributedString = "View on "
var host = AttributedString(accountURL.host!)
host.font = .preferredFont(forTextStyle: .body).withTraits(.traitBold)
title += host
var config = UIButton.Configuration.plain()
config.attributedTitle = title
config.image = UIImage(systemName: "safari")
config.imagePadding = 4
button.configuration = config
}
}