From 5e949296bf350af65e52374a305dd3b5eaba6979 Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Thu, 9 May 2024 19:44:56 -0400
Subject: [PATCH 01/13] Update `ReaderTagCell` to new UI
---
.../Reader/ReaderPost+Display.swift | 4 +-
.../Reader/ReaderTagCardCell.swift | 8 +-
.../ViewRelated/Reader/ReaderTagCell.swift | 3 +
.../ViewRelated/Reader/ReaderTagCell.xib | 93 ++++++++++++-------
4 files changed, 69 insertions(+), 39 deletions(-)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift b/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
index fc4a935209f8..7945bb1b50c2 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
@@ -24,7 +24,7 @@ extension ReaderPost {
}
func summaryForDisplay(isPad: Bool = false) -> String? {
- if featuredImageURLForDisplay() == nil || isPad {
+ if isPad {
let content = contentForDisplay()?
.stringByDecodingXMLCharacters()
.replacingOccurrences(of: "
", with: "\n")
@@ -33,7 +33,7 @@ extension ReaderPost {
.replacingOccurrences(of: "\n{2,}", with: "\n\n", options: .regularExpression)
.trim()
if let content {
- let maxContentLength = isPad ? 4000 : 500
+ let maxContentLength = 3000
return String(content.prefix(maxContentLength))
}
}
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.swift b/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.swift
index d84b1d2b3c2c..a248b759a6d3 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.swift
@@ -84,10 +84,10 @@ class ReaderTagCardCell: UITableViewCell {
}
struct Constants {
- static let phoneDefaultCellSize = CGSize(width: 240, height: 297)
- static let phoneLargeCellSize = CGSize(width: 240, height: 500)
- static let padDefaultCellSize = CGSize(width: 480, height: 600)
- static let padLargeCellSize = CGSize(width: 480, height: 900)
+ static let phoneDefaultCellSize = CGSize(width: 300, height: 150)
+ static let phoneLargeCellSize = CGSize(width: 300, height: 300)
+ static let padDefaultCellSize = CGSize(width: 600, height: 300)
+ static let padLargeCellSize = CGSize(width: 600, height: 600)
}
}
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
index 59e55baf4d97..25532ad3294c 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
@@ -10,6 +10,7 @@ class ReaderTagCell: UICollectionViewCell {
@IBOutlet private weak var postDateLabel: UILabel!
@IBOutlet private weak var titleLabel: UILabel!
@IBOutlet private weak var summaryLabel: UILabel!
+ @IBOutlet private weak var featuredImageViewContainer: UIView!
@IBOutlet private weak var featuredImageView: CachedAnimatedImageView!
@IBOutlet private weak var countsLabel: UILabel!
@IBOutlet private weak var likeButton: UIButton!
@@ -90,6 +91,7 @@ private extension ReaderTagCell {
func loadFeaturedImage(with post: ReaderPost) {
guard let url = post.featuredImageURLForDisplay() else {
+ featuredImageViewContainer.isHidden = true
featuredImageView.isHidden = true
return
}
@@ -105,6 +107,7 @@ private extension ReaderTagCell {
siteLabel.isHidden = false
titleLabel.isHidden = false
summaryLabel.isHidden = false
+ featuredImageViewContainer.isHidden = false
featuredImageView.isHidden = false
countsLabel.isHidden = false
likeButton.isHidden = false
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
index fe227266f4a1..14e8aa7832d6 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
@@ -1,6 +1,6 @@
-
+
@@ -12,23 +12,23 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -88,7 +88,7 @@
-
+
@@ -112,10 +112,10 @@
-
+
-
+
From a838267f8f6fbad495c86f78970e983928467329 Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Tue, 14 May 2024 14:57:51 -0400
Subject: [PATCH 06/13] Center the title and summary for the `ReaderTagCell`
---
.../Classes/ViewRelated/Reader/ReaderTagCell.xib | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
index 3ffc6047ed1a..faeab7b74792 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
@@ -44,22 +44,28 @@
+
+
+
-
+
+
+
+
From ed9455538daa9437e5e5cdd82c90998967a4a5ef Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Wed, 15 May 2024 20:09:47 -0400
Subject: [PATCH 07/13] Limit number of lines displayed for summary
---
WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift | 1 +
1 file changed, 1 insertion(+)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
index 25532ad3294c..d8d7fef1b72c 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
@@ -81,6 +81,7 @@ private extension ReaderTagCell {
postDateLabel.textColor = .secondaryLabel
titleLabel.font = WPStyleGuide.fontForTextStyle(.headline, fontWeight: .semibold)
summaryLabel.font = WPStyleGuide.fontForTextStyle(.footnote)
+ summaryLabel.numberOfLines = UIDevice.isPad() ? 5 : 3
countsLabel.font = WPStyleGuide.fontForTextStyle(.footnote)
countsLabel.textColor = .secondaryLabel
likeButton.tintColor = .secondaryLabel
From 05e8552c75020880661a65dddaf88ea3254ca571 Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Wed, 15 May 2024 20:19:05 -0400
Subject: [PATCH 08/13] Remove counts label from `ReaderTagCell`
---
.../Reader/ReaderPost+Display.swift | 22 -----------------
.../ViewRelated/Reader/ReaderTagCell.swift | 10 ++------
.../ViewRelated/Reader/ReaderTagCell.xib | 24 +++++++------------
3 files changed, 11 insertions(+), 45 deletions(-)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift b/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
index 7945bb1b50c2..b3d327a425df 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
@@ -40,26 +40,4 @@ extension ReaderPost {
return contentPreviewForDisplay()
}
- func countsForDisplay(isLoggedIn: Bool) -> String? {
- let likes: String? = {
- guard isLikesEnabled(isLoggedIn: isLoggedIn),
- let count = likeCount()?.intValue,
- count > 0 else {
- return nil
- }
- return WPStyleGuide.likeCountForDisplay(count)
- }()
- let comments: String? = {
- guard isCommentsEnabled,
- let count = commentCount()?.intValue,
- count > 0 else {
- return nil
- }
- return WPStyleGuide.commentCountForDisplay(count)
- }()
-
- let countStrings = [likes, comments].compactMap { $0 }
- return countStrings.count > 0 ? countStrings.joined(separator: " • ") : nil
- }
-
}
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
index d8d7fef1b72c..2b8b492f432d 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
@@ -12,10 +12,10 @@ class ReaderTagCell: UICollectionViewCell {
@IBOutlet private weak var summaryLabel: UILabel!
@IBOutlet private weak var featuredImageViewContainer: UIView!
@IBOutlet private weak var featuredImageView: CachedAnimatedImageView!
- @IBOutlet private weak var countsLabel: UILabel!
@IBOutlet private weak var likeButton: UIButton!
@IBOutlet private weak var menuButton: UIButton!
@IBOutlet weak var spacerView: UIView!
+ @IBOutlet weak var titleSpacerView: UIView!
@IBOutlet weak var countsLabelSpacerView: UIView!
private lazy var imageLoader = ImageLoader(imageView: featuredImageView)
@@ -29,6 +29,7 @@ class ReaderTagCell: UICollectionViewCell {
headerStackView.addGestureRecognizer(tapGesture)
spacerView.isGhostableDisabled = true
+ titleSpacerView.isGhostableDisabled = true
countsLabelSpacerView.isGhostableDisabled = true
}
@@ -82,8 +83,6 @@ private extension ReaderTagCell {
titleLabel.font = WPStyleGuide.fontForTextStyle(.headline, fontWeight: .semibold)
summaryLabel.font = WPStyleGuide.fontForTextStyle(.footnote)
summaryLabel.numberOfLines = UIDevice.isPad() ? 5 : 3
- countsLabel.font = WPStyleGuide.fontForTextStyle(.footnote)
- countsLabel.textColor = .secondaryLabel
likeButton.tintColor = .secondaryLabel
likeButton.titleLabel?.font = WPStyleGuide.fontForTextStyle(.footnote)
menuButton.tintColor = .secondaryLabel
@@ -110,7 +109,6 @@ private extension ReaderTagCell {
summaryLabel.isHidden = false
featuredImageViewContainer.isHidden = false
featuredImageView.isHidden = false
- countsLabel.isHidden = false
likeButton.isHidden = false
}
@@ -128,25 +126,21 @@ private extension ReaderTagCell {
let postDate = post.shortDateForDisplay()
let postTitle = post.titleForDisplay()
let postSummary = post.summaryForDisplay(isPad: traitCollection.userInterfaceIdiom == .pad)
- let postCounts = post.countsForDisplay(isLoggedIn: isLoggedIn)
siteLabel.text = blogName
postDateLabel.text = postDate
titleLabel.text = postTitle
summaryLabel.text = postSummary
- countsLabel.text = postCounts
siteLabel.isHidden = blogName == nil
postDateLabel.isHidden = postDate == nil
titleLabel.isHidden = postTitle == nil
summaryLabel.isHidden = postSummary == nil
- countsLabel.isHidden = postCounts == nil
headerStackView.isAccessibilityElement = true
headerStackView.accessibilityLabel = [blogName, postDate].compactMap { $0 }.joined(separator: ", ")
headerStackView.accessibilityHint = AccessibilityConstants.siteStackViewHint
headerStackView.accessibilityTraits = .button
- countsLabel.accessibilityLabel = postCounts?.replacingOccurrences(of: " • ", with: ", ")
menuButton.accessibilityLabel = AccessibilityConstants.menuButtonLabel
menuButton.accessibilityHint = AccessibilityConstants.menuButtonHint
}
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
index faeab7b74792..8dd05bc7a102 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
@@ -39,28 +39,28 @@
-
+
-
+
-
+
-
+
@@ -68,10 +68,10 @@
-
+
-
+
@@ -93,12 +93,6 @@
-
@@ -149,7 +143,6 @@
-
@@ -161,6 +154,7 @@
+
From ad5b2b34b2ded42627964d673e0a5e735bf3f65a Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Wed, 15 May 2024 20:30:45 -0400
Subject: [PATCH 09/13] Remove extended summary
---
.../ViewRelated/Reader/ReaderPost+Display.swift | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift b/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
index b3d327a425df..5dc74feb13eb 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderPost+Display.swift
@@ -24,20 +24,8 @@ extension ReaderPost {
}
func summaryForDisplay(isPad: Bool = false) -> String? {
- if isPad {
- let content = contentForDisplay()?
- .stringByDecodingXMLCharacters()
- .replacingOccurrences(of: "
", with: "\n")
- .strippingHTML()
- .replacingOccurrences(of: "^\n+", with: "", options: .regularExpression)
- .replacingOccurrences(of: "\n{2,}", with: "\n\n", options: .regularExpression)
- .trim()
- if let content {
- let maxContentLength = 3000
- return String(content.prefix(maxContentLength))
- }
- }
- return contentPreviewForDisplay()
+ return contentPreviewForDisplay()?
+ .replacingOccurrences(of: "\n{2,}", with: "\n\n", options: .regularExpression)
}
}
From 9c7ed4135ea4e3180569f78d5eaad279998a5bee Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Thu, 16 May 2024 11:26:48 -0400
Subject: [PATCH 10/13] Increase content stack view spacing to `8`
---
.../ViewRelated/Reader/ReaderTagCell.xib | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
index 8dd05bc7a102..f1c7a3fdbff7 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
@@ -15,7 +15,7 @@
-
+
@@ -39,28 +39,28 @@
-
+
-
+
-
+
-
+
@@ -68,10 +68,10 @@
-
+
-
+
From 85de4f2c7913b87ec36035117889372c63fe297f Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Thu, 16 May 2024 11:43:20 -0400
Subject: [PATCH 11/13] Prevent post title/summary going beyond the featured
image
---
WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift | 1 -
WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib | 6 ++++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
index 2b8b492f432d..d19ea5753cf5 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
@@ -82,7 +82,6 @@ private extension ReaderTagCell {
postDateLabel.textColor = .secondaryLabel
titleLabel.font = WPStyleGuide.fontForTextStyle(.headline, fontWeight: .semibold)
summaryLabel.font = WPStyleGuide.fontForTextStyle(.footnote)
- summaryLabel.numberOfLines = UIDevice.isPad() ? 5 : 3
likeButton.tintColor = .secondaryLabel
likeButton.titleLabel?.font = WPStyleGuide.fontForTextStyle(.footnote)
menuButton.tintColor = .secondaryLabel
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
index f1c7a3fdbff7..ff5249ab19d8 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
@@ -92,6 +92,12 @@
+
+
+
+
+
+
From 88e8127edde66b9786058e6643928ebac0beb997 Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Thu, 16 May 2024 11:56:33 -0400
Subject: [PATCH 12/13] Fix breaking constraints for iPad
---
.../Classes/ViewRelated/Reader/ReaderTagCardCell.xib | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.xib b/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.xib
index a7fc3b6ca5a3..6c00eeb63be1 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.xib
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCardCell.xib
@@ -1,6 +1,6 @@
-
+
@@ -12,11 +12,11 @@
-
+
-
+
@@ -25,10 +25,12 @@
-
+
-
+
+
+
From 4e99197261cb71a8d79f03390401fd05cecbadc2 Mon Sep 17 00:00:00 2001
From: Chris McGraw <2454408+wargcm@users.noreply.github.com>
Date: Thu, 16 May 2024 14:11:11 -0400
Subject: [PATCH 13/13] Disable content constraints above large text
---
WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift | 9 +++++++++
WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib | 4 ++++
2 files changed, 13 insertions(+)
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
index d19ea5753cf5..1465d134b7a2 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.swift
@@ -17,6 +17,7 @@ class ReaderTagCell: UICollectionViewCell {
@IBOutlet weak var spacerView: UIView!
@IBOutlet weak var titleSpacerView: UIView!
@IBOutlet weak var countsLabelSpacerView: UIView!
+ @IBOutlet private var contentBoundsConstraints: [NSLayoutConstraint]!
private lazy var imageLoader = ImageLoader(imageView: featuredImageView)
private var viewModel: ReaderTagCellViewModel?
@@ -31,12 +32,15 @@ class ReaderTagCell: UICollectionViewCell {
spacerView.isGhostableDisabled = true
titleSpacerView.isGhostableDisabled = true
countsLabelSpacerView.isGhostableDisabled = true
+
+ updateContentConstraints()
}
override func prepareForReuse() {
super.prepareForReuse()
imageLoader.prepareForReuse()
resetHiddenViews()
+ updateContentConstraints()
}
func configure(parent: UIViewController?, post: ReaderPost, isLoggedIn: Bool) {
@@ -144,6 +148,11 @@ private extension ReaderTagCell {
menuButton.accessibilityHint = AccessibilityConstants.menuButtonHint
}
+ func updateContentConstraints() {
+ let isExtraLargeCategory = traitCollection.preferredContentSizeCategory >= .extraLarge
+ contentBoundsConstraints.forEach { $0.isActive = !isExtraLargeCategory }
+ }
+
}
extension ReaderTagCell: GhostableView {
diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
index ff5249ab19d8..66227cbdbca8 100644
--- a/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
+++ b/WordPress/Classes/ViewRelated/Reader/ReaderTagCell.xib
@@ -161,6 +161,10 @@
+
+
+
+