Skip to content

Commit 992673c

Browse files
committedNov 25, 2024
My Feeds
1 parent ef062a8 commit 992673c

File tree

7 files changed

+42
-40
lines changed

7 files changed

+42
-40
lines changed
 

‎App/IcySkyApp.swift

-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ struct IcySkyApp: App {
1717
@State var router: Router = .init()
1818

1919
var body: some Scene {
20-
@Bindable var router = router
21-
2220
WindowGroup {
2321
TabView(selection: $router.selectedTab) {
2422
if client != nil && currentUser != nil {

‎IcySky.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
2-
"originHash" : "3bc05e95b69742072e775dc6308bc6c4782949bf33e94229acf20f9c710c7286",
2+
"originHash" : "9ac06be7ae7f8f8aef52ec90b389ab7cb9d8262eafdb10a92352b2b2be3ddb66",
33
"pins" : [
44
{
55
"identity" : "atprotokit",
66
"kind" : "remoteSourceControl",
77
"location" : "https://github.com/MasterJ93/ATProtoKit",
88
"state" : {
99
"branch" : "develop",
10-
"revision" : "b2027acf40b1947affb4c52db768dd1163c574ac"
10+
"revision" : "d82a9b89584c129cc5afb2bb08b6913b4a1536a7"
1111
}
1212
},
1313
{

‎Packages/Features/Sources/FeedUI/List/FeedsListFilter.swift

+2-4
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@ import Foundation
22

33
public enum FeedsListFilter: String, CaseIterable, Identifiable {
44
case suggested = "Suggested"
5-
case savedFeeds = "Saved"
6-
case pinned = "Pinned"
5+
case myFeeds = "My Feeds"
76

87
public var id: Self { self }
98

109
var icon: String {
1110
switch self {
1211
case .suggested: return "sparkles.rectangle.stack"
13-
case .savedFeeds: return "person.crop.rectangle.stack"
14-
case .pinned: return "pin"
12+
case .myFeeds: return "person.crop.rectangle.stack"
1513
}
1614
}
1715
}

‎Packages/Features/Sources/FeedUI/List/FeedsListView.swift

+29-28
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public struct FeedsListView: View {
4242
switch filter {
4343
case .suggested:
4444
await fetchSuggestedFeed()
45-
case .savedFeeds, .pinned:
45+
case .myFeeds:
4646
await fetchMyFeeds()
4747
}
4848
}
@@ -71,33 +71,34 @@ public struct FeedsListView: View {
7171
@ViewBuilder
7272
private var recentViewedSection: some View {
7373
if !isInSearch {
74-
Section(
75-
content: {
76-
if isRecentFeedExpanded {
77-
TimelineFeedRowView()
78-
ForEach(recentFeedItems) { item in
79-
RecentlyViewedFeedRowView(item: item)
80-
}
81-
.onDelete { indexSet in
82-
for index in indexSet {
83-
modelContext.delete(recentFeedItems[index])
84-
}
85-
}
86-
dividerView
74+
HStack {
75+
Image(systemName: "chevron.right")
76+
.rotationEffect(.degrees(isRecentFeedExpanded ? 90 : 0))
77+
Text("Recently Viewed")
78+
}
79+
.font(.subheadline)
80+
.fontWeight(.semibold)
81+
.foregroundStyle(.secondary)
82+
.listRowSeparator(.hidden)
83+
.onTapGesture {
84+
withAnimation {
85+
isRecentFeedExpanded.toggle()
86+
}
87+
}
88+
Section {
89+
if isRecentFeedExpanded {
90+
TimelineFeedRowView()
91+
ForEach(recentFeedItems) { item in
92+
RecentlyViewedFeedRowView(item: item)
8793
}
88-
},
89-
header: {
90-
Label(
91-
"Recently Viewed",
92-
systemImage: isRecentFeedExpanded ? "chevron.down" : "chevron.right"
93-
)
94-
.onTapGesture {
95-
withAnimation {
96-
isRecentFeedExpanded.toggle()
94+
.onDelete { indexSet in
95+
for index in indexSet {
96+
modelContext.delete(recentFeedItems[index])
9797
}
9898
}
99+
dividerView
99100
}
100-
)
101+
}
101102
}
102103
}
103104

@@ -173,14 +174,14 @@ extension FeedsListView {
173174
}
174175

175176
private func fetchMyFeeds() async {
176-
guard let savedFeeds = currentUser.savedFeeds else { return }
177177
do {
178-
let feeds = try await client.protoClient.getFeedGenerators(
179-
filter == .savedFeeds ? savedFeeds.saved : savedFeeds.pinned)
178+
let feeds = try await client.protoClient.getFeedGenerators(currentUser.savedFeeds.map{ $0.value })
180179
withAnimation {
181180
self.feeds = feeds.feeds.map { $0.feedItem }
182181
}
183-
} catch {}
182+
} catch {
183+
print(error)
184+
}
184185
}
185186

186187
private func searchFeed(query: String) async {

‎Packages/Features/Sources/PostUI/Detail/PostDetailView.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ public struct PostDetailView: View {
4343
.screenContainer()
4444
.task {
4545
await fetchThread()
46-
scrollToId = "focusedPost"
46+
if !parents.isEmpty {
47+
scrollToId = "focusedPost"
48+
}
4749
}
4850
.onChange(of: scrollToId) {
4951
if let scrollToId {

‎Packages/Model/Package.resolved

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"location" : "https://github.com/MasterJ93/ATProtoKit",
88
"state" : {
99
"branch" : "develop",
10-
"revision" : "b2027acf40b1947affb4c52db768dd1163c574ac"
10+
"revision" : "d82a9b89584c129cc5afb2bb08b6913b4a1536a7"
1111
}
1212
},
1313
{

‎Packages/Model/Sources/User/CurrentUser.swift

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class CurrentUser {
88
public let client: BSkyClient
99

1010
public private(set) var profile: AppBskyLexicon.Actor.ProfileViewDetailedDefinition?
11-
public private(set) var savedFeeds: AppBskyLexicon.Actor.SavedFeedsPreferencesDefinition?
11+
public private(set) var savedFeeds: [AppBskyLexicon.Actor.SavedFeed] = []
1212

1313
public init(client: BSkyClient) {
1414
self.client = client
@@ -20,6 +20,7 @@ public class CurrentUser {
2020
}
2121

2222
public func refreshCurrentUser() async {
23+
await fetchProfile()
2324
await fetchPreferences()
2425
}
2526

@@ -36,7 +37,9 @@ public class CurrentUser {
3637
let preferences = try await client.protoClient.getPreferences().preferences
3738
for preference in preferences {
3839
switch preference {
39-
case .savedFeeds(let feeds):
40+
case .savedFeedsVersion2(let feeds):
41+
var feeds = feeds.items
42+
feeds.removeAll(where: { $0.value == "following"})
4043
self.savedFeeds = feeds
4144
default:
4245
break

0 commit comments

Comments
 (0)
Failed to load comments.