Skip to content

Commit b524533

Browse files
committed
Add Freshly Pressed
1 parent 248cd1c commit b524533

File tree

5 files changed

+27
-2
lines changed

5 files changed

+27
-2
lines changed

Modules/Sources/WordPressKit/ReaderPostServiceRemote+Cards.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public enum ReaderSortingOption: String, CaseIterable {
1414

1515
public enum ReaderStream: String {
1616
case discover = "discover"
17+
case freshlyPressed = "freshly-pressed"
1718
case firstPosts = "first-posts"
1819
}
1920

Modules/Sources/WordPressKitObjC/ReaderPostServiceRemote.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ - (void)fetchPostsFromEndpoint:(NSURL *)endpoint
4040
if (algorithm) {
4141
params[ParamsKeyAlgorithm] = algorithm;
4242
}
43+
// TODO: refactor (add a new parameter
44+
if ([endpoint.path hasSuffix:@"/freshly-pressed"]) {
45+
[params removeAllObjects];
46+
}
4347

4448
[self fetchPostsFromEndpoint:endpoint withParameters:params success:success failure:failure];
4549
}

WordPress/Classes/ViewRelated/Reader/Controllers/ReaderDiscoverViewController.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import WordPressShared
77

88
class ReaderDiscoverViewController: UIViewController, ReaderDiscoverHeaderViewDelegate {
99
private let headerView = ReaderDiscoverHeaderView()
10-
private var selectedChannel: ReaderDiscoverChannel = .recommended
10+
private var selectedChannel: ReaderDiscoverChannel = .freshlyPresed
1111
private let topic: ReaderAbstractTopic
1212
private var streamVC: ReaderStreamViewController?
1313
private weak var selectInterestsVC: ReaderSelectInterestsViewController?
@@ -83,7 +83,7 @@ class ReaderDiscoverViewController: UIViewController, ReaderDiscoverHeaderViewDe
8383
.filter { $0.slug != ReaderTagTopic.dailyPromptTag }
8484
.map(ReaderDiscoverChannel.tag)
8585

86-
headerView.configure(channels: [.recommended, .firstPosts, .latest, .dailyPrompts] + channels)
86+
headerView.configure(channels: [.freshlyPresed, .recommended, .firstPosts, .latest, .dailyPrompts] + channels)
8787
headerView.setSelectedChannel(selectedChannel)
8888
}
8989

@@ -95,6 +95,8 @@ class ReaderDiscoverViewController: UIViewController, ReaderDiscoverHeaderViewDe
9595

9696
private func makeViewController(for channel: ReaderDiscoverChannel) -> ReaderStreamViewController {
9797
switch channel {
98+
case .freshlyPresed:
99+
ReaderStreamViewController.controllerWithTopic(ReaderHelpers.getFreshlyPressedTopic())
98100
case .recommended:
99101
ReaderDiscoverStreamViewController(topic: topic)
100102
case .firstPosts:

WordPress/Classes/ViewRelated/Reader/Controllers/ReaderHelpers.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,18 @@ struct ReaderNotificationKeys {
118118
return topic.path.hasSuffix("/freshly-pressed")
119119
}
120120

121+
public static func getFreshlyPressedTopic(in context: NSManagedObjectContext = ContextManager.shared.mainContext) -> ReaderSiteTopic {
122+
let path = "/rest/v1.2/freshly-pressed"
123+
if let topic = try? ReaderSiteTopic.lookup(withFeedURL: path, in: context) {
124+
return topic
125+
}
126+
let topic = context.insertNewObject(ofType: ReaderSiteTopic.self)
127+
topic.feedURL = path
128+
topic.path = path
129+
try? context.save()
130+
return topic
131+
}
132+
121133
/// Check if the specified topic is for Discover
122134
///
123135
/// - Parameters:

WordPress/Classes/ViewRelated/Reader/Headers/ReaderDiscoverHeaderView.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,9 @@ private final class ReaderDiscoverChannelView: UIView {
191191
}
192192

193193
enum ReaderDiscoverChannel: Hashable {
194+
/// Curated posts.
195+
case freshlyPresed
196+
194197
/// The default channel showing your selected tags.
195198
case recommended
196199

@@ -207,6 +210,8 @@ enum ReaderDiscoverChannel: Hashable {
207210

208211
var localizedTitle: String {
209212
switch self {
213+
case .freshlyPresed:
214+
NSLocalizedString("reader.discover.channel.freshlyPresed", value: "Freshly Pressed", comment: "Header view channel (filter)")
210215
case .recommended:
211216
NSLocalizedString("reader.discover.channel.recommended", value: "Recommended", comment: "Header view channel (filter)")
212217
case .firstPosts:
@@ -230,6 +235,7 @@ enum ReaderDiscoverChannel: Hashable {
230235

231236
private var analyticsID: String {
232237
switch self {
238+
case .freshlyPresed: "freshly_presed"
233239
case .recommended: "recommended"
234240
case .firstPosts: "first_posts"
235241
case .latest: "latest"

0 commit comments

Comments
 (0)