diff options
Diffstat (limited to 'Sora/Views/Generic')
| -rw-r--r-- | Sora/Views/Generic/GenericListView.swift | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/Sora/Views/Generic/GenericListView.swift b/Sora/Views/Generic/GenericListView.swift index 05f837d..5945a03 100644 --- a/Sora/Views/Generic/GenericListView.swift +++ b/Sora/Views/Generic/GenericListView.swift @@ -93,6 +93,14 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View { // swi } } + private func isProviderBookmarked(_ provider: BooruProvider) -> Bool { + settings.bookmarks.contains { $0.provider == provider } + } + + private func isCollectionPopulated(_ folder: UUID?) -> Bool { + settings.bookmarks.contains { $0.folder == folder } + } + var body: some View { NavigationStack { VStack(spacing: 0) { @@ -121,7 +129,9 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View { // swi } ForEach(settings.folders, id: \.id) { folder in - Text(folder.name).tag(folder.id) + if isCollectionPopulated(folder.id) { + Text(folder.name).tag(folder.id) + } } } .padding(.bottom) @@ -132,7 +142,9 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View { // swi Text("All").tag(nil as BooruProvider?) ForEach(BooruProvider.allCases, id: \.rawValue) { provider in - Text(provider.rawValue).tag(provider) + if isProviderBookmarked(provider) { + Text(provider.rawValue).tag(provider) + } } } .padding(.bottom) @@ -213,15 +225,11 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View { // swi } ForEach(settings.folders, id: \.id) { folder in - let isCollectionPopulated = settings.bookmarks.contains { bookmark in - bookmark.folder == folder.id - } - Button(folder.name) { selectedFolder = folder.id isCollectionPickerPresented = false } - .disabled(!isCollectionPopulated) + .disabled(!isCollectionPopulated(folder.id)) } } } @@ -239,15 +247,11 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View { // swi } ForEach(BooruProvider.allCases, id: \.rawValue) { provider in - let isProviderBookmarked = settings.bookmarks.contains { bookmark in - bookmark.provider.rawValue == provider.rawValue - } - Button(provider.rawValue) { selectedProvider = provider isProviderPickerPresented = false } - .disabled(!isProviderBookmarked) + .disabled(!isProviderBookmarked(provider)) } } } |