Mark items read on selection
This commit is contained in:
parent
a1cf4a5789
commit
3d07069ee5
|
@ -9,7 +9,7 @@ import UIKit
|
||||||
import SwiftSoup
|
import SwiftSoup
|
||||||
|
|
||||||
protocol ItemCollectionViewCellDelegate: AnyObject {
|
protocol ItemCollectionViewCellDelegate: AnyObject {
|
||||||
func itemCellSelected(item: Item)
|
func itemCellSelected(cell: ItemCollectionViewCell, item: Item)
|
||||||
}
|
}
|
||||||
|
|
||||||
class ItemCollectionViewCell: UICollectionViewListCell {
|
class ItemCollectionViewCell: UICollectionViewListCell {
|
||||||
|
@ -80,10 +80,23 @@ class ItemCollectionViewCell: UICollectionViewListCell {
|
||||||
}
|
}
|
||||||
contentLabel.isHidden = contentLabel.text?.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty ?? true
|
contentLabel.isHidden = contentLabel.text?.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty ?? true
|
||||||
|
|
||||||
setColors()
|
updateColors()
|
||||||
}
|
}
|
||||||
|
|
||||||
private func setColors() {
|
func setRead(_ read: Bool, animated: Bool) {
|
||||||
|
guard self.item.read != read else { return }
|
||||||
|
self.item.read = read
|
||||||
|
if animated {
|
||||||
|
// i don't know why .transition works but .animate doesn't
|
||||||
|
UIView.transition(with: self, duration: 0.2, options: .transitionCrossDissolve) {
|
||||||
|
self.updateColors()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
updateColors()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func updateColors() {
|
||||||
if item.read {
|
if item.read {
|
||||||
titleLabel.textColor = .secondaryLabel
|
titleLabel.textColor = .secondaryLabel
|
||||||
feedTitleLabel.textColor = .secondaryLabel
|
feedTitleLabel.textColor = .secondaryLabel
|
||||||
|
@ -113,16 +126,12 @@ class ItemCollectionViewCell: UICollectionViewListCell {
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func cellDoubleTapped() {
|
@objc private func cellDoubleTapped() {
|
||||||
self.item.read = !self.item.read
|
setRead(!item.read, animated: true)
|
||||||
// i don't know why .transition works but .animate doesn't
|
|
||||||
UIView.transition(with: self, duration: 0.2, options: .transitionCrossDissolve) {
|
|
||||||
self.setColors()
|
|
||||||
}
|
|
||||||
shouldHighlight = true
|
shouldHighlight = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func cellSingleTapped() {
|
@objc private func cellSingleTapped() {
|
||||||
delegate?.itemCellSelected(item: item)
|
delegate?.itemCellSelected(cell: self, item: item)
|
||||||
shouldHighlight = true
|
shouldHighlight = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,8 @@ extension ItemsViewController: UICollectionViewDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ItemsViewController: ItemCollectionViewCellDelegate {
|
extension ItemsViewController: ItemCollectionViewCellDelegate {
|
||||||
func itemCellSelected(item: Item) {
|
func itemCellSelected(cell: ItemCollectionViewCell, item: Item) {
|
||||||
|
cell.setRead(true, animated: true)
|
||||||
show(ReadViewController(item: item, fervorController: fervorController), sender: nil)
|
show(ReadViewController(item: item, fervorController: fervorController), sender: nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue