summaryrefslogtreecommitdiff
path: root/Sora
diff options
context:
space:
mode:
Diffstat (limited to 'Sora')
-rw-r--r--Sora/Views/Generic/GenericListView.swift28
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))
}
}
}