diff options
| author | Fuwn <[email protected]> | 2025-02-26 21:12:05 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-26 21:12:05 -0800 |
| commit | 0bfca77163ee472883c848292ce0b0afed26043a (patch) | |
| tree | 0d8c1167231d84e5fdf1798ca9f7b8461469a9fc | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-0bfca77163ee472883c848292ce0b0afed26043a.tar.xz sora-testing-0bfca77163ee472883c848292ce0b0afed26043a.zip | |
feat: Development commit
| -rw-r--r-- | Sora/Data/Booru/BooruManager.swift | 7 | ||||
| -rw-r--r-- | Sora/SoraApp.swift | 8 | ||||
| -rw-r--r-- | Sora/Views/MainView.swift | 8 | ||||
| -rw-r--r-- | Sora/Views/Post/Grid/PostGridView.swift | 29 |
4 files changed, 30 insertions, 22 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift index b3cd6c7..a72df6c 100644 --- a/Sora/Data/Booru/BooruManager.swift +++ b/Sora/Data/Booru/BooruManager.swift @@ -12,6 +12,7 @@ class BooruManager: ObservableObject { @Published var selectedPost: BooruPost? @Published var flavor: BooruProviderFlavor @Published var domain: String + @Published var postIndexMap: [String: Int] = [:] private var currentTask: Task<Void, Never>? let provider: BooruProvider var tags: [String] { @@ -103,6 +104,12 @@ class BooruManager: ObservableObject { self.endOfData = true } else { self.posts += Array(Set(newPosts)) + + self.postIndexMap.merge( + zip(newPosts.indices, newPosts.map(\.id)).reduce(into: [:]) { result, element in + result[element.1] = element.0 + } + ) { _, new in new } } } } catch { diff --git a/Sora/SoraApp.swift b/Sora/SoraApp.swift index 12c8a24..12f614c 100644 --- a/Sora/SoraApp.swift +++ b/Sora/SoraApp.swift @@ -19,11 +19,3 @@ struct SoraApp: App { #endif } } - -#Preview { - MainView() - .environmentObject(Settings()) - #if os(macOS) - .frame(width: 736, height: 736) - #endif -} diff --git a/Sora/Views/MainView.swift b/Sora/Views/MainView.swift index 3397f15..2e1ab2e 100644 --- a/Sora/Views/MainView.swift +++ b/Sora/Views/MainView.swift @@ -83,3 +83,11 @@ struct MainView: View { } } } + +#Preview { + MainView() + .environmentObject(Settings()) + #if os(macOS) + .frame(width: 736, height: 736) + #endif +} diff --git a/Sora/Views/Post/Grid/PostGridView.swift b/Sora/Views/Post/Grid/PostGridView.swift index eb71ee6..58895c2 100644 --- a/Sora/Views/Post/Grid/PostGridView.swift +++ b/Sora/Views/Post/Grid/PostGridView.swift @@ -22,20 +22,7 @@ struct PostGridView: View { } WaterfallGrid(filteredPosts, id: \.id) { post in - Button { - manager.selectedPost = post - } label: { - PostGridThumbnailView( - post: post, - posts: filteredPosts - ) - } - .buttonStyle(PlainButtonStyle()) - .contextMenu { - Button(action: { manager.selectedPost = post }) { - Label("Select Post", systemImage: "arrow.right.circle") - } - } + waterfallGridContent(post: post) } .gridStyle(columns: settings.columns) .padding(8) @@ -102,4 +89,18 @@ struct PostGridView: View { } } } + + private func waterfallGridContent(post: BooruPost) -> some View { + Button { + manager.selectedPost = post + } label: { + PostGridThumbnailView(post: post, posts: filteredPosts) + } + .buttonStyle(PlainButtonStyle()) + .contextMenu { + Button(action: { manager.selectedPost = post }) { + Label("Select Post", systemImage: "arrow.right.circle") + } + } + } } |