86 lines
3.0 KiB
Swift
86 lines
3.0 KiB
Swift
//
|
|
// TrendingHashtagCollectionViewCell.swift
|
|
// Tusker
|
|
//
|
|
// Created by Shadowfacts on 6/29/22.
|
|
// Copyright © 2022 Shadowfacts. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import Pachyderm
|
|
|
|
class TrendingHashtagCollectionViewCell: UICollectionViewCell {
|
|
|
|
private let hashtagLabel = UILabel()
|
|
private let peopleTodayLabel = UILabel()
|
|
private let historyView = TrendHistoryView()
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
|
|
hashtagLabel.font = .preferredFont(forTextStyle: .title2)
|
|
hashtagLabel.adjustsFontForContentSizeCategory = true
|
|
peopleTodayLabel.font = .preferredFont(forTextStyle: .caption1)
|
|
peopleTodayLabel.adjustsFontForContentSizeCategory = true
|
|
|
|
let vStack = UIStackView(arrangedSubviews: [
|
|
hashtagLabel,
|
|
peopleTodayLabel,
|
|
])
|
|
vStack.axis = .vertical
|
|
vStack.alignment = .fill
|
|
vStack.distribution = .fill
|
|
vStack.spacing = 0
|
|
|
|
let hStack = UIStackView(arrangedSubviews: [
|
|
vStack,
|
|
historyView,
|
|
])
|
|
hStack.axis = .horizontal
|
|
hStack.alignment = .center
|
|
hStack.distribution = .fill
|
|
hStack.spacing = 8
|
|
hStack.translatesAutoresizingMaskIntoConstraints = false
|
|
addSubview(hStack)
|
|
|
|
NSLayoutConstraint.activate([
|
|
hStack.leadingAnchor.constraint(equalToSystemSpacingAfter: leadingAnchor, multiplier: 1),
|
|
trailingAnchor.constraint(equalToSystemSpacingAfter: hStack.trailingAnchor, multiplier: 1),
|
|
hStack.topAnchor.constraint(equalTo: topAnchor, constant: 8),
|
|
hStack.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -8),
|
|
|
|
historyView.widthAnchor.constraint(equalToConstant: 100),
|
|
historyView.heightAnchor.constraint(equalToConstant: 44),
|
|
])
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func updateConfiguration(using state: UICellConfigurationState) {
|
|
backgroundConfiguration = .appListGroupedCell(for: state)
|
|
}
|
|
|
|
func updateUI(hashtag: Hashtag) {
|
|
hashtagLabel.text = "#\(hashtag.name)"
|
|
historyView.setHistory(hashtag.history)
|
|
historyView.isHidden = hashtag.history == nil || hashtag.history!.count < 2
|
|
|
|
if let history = hashtag.history,
|
|
history.count >= 2 {
|
|
let sorted = history.sorted(by: { $0.day < $1.day })
|
|
let lastTwo = sorted[(sorted.count - 2)...]
|
|
let accounts = lastTwo.map(\.accounts).reduce(0, +)
|
|
let uses = lastTwo.map(\.uses).reduce(0, +)
|
|
|
|
let format = NSLocalizedString("trending hashtag info", comment: "trending hashtag posts and people")
|
|
peopleTodayLabel.text = String.localizedStringWithFormat(format, accounts, uses)
|
|
peopleTodayLabel.isHidden = false
|
|
} else {
|
|
peopleTodayLabel.isHidden = true
|
|
}
|
|
}
|
|
|
|
}
|