summaryrefslogtreecommitdiff
path: root/Sora/Views/Generic/GenericListView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Views/Generic/GenericListView.swift')
-rw-r--r--Sora/Views/Generic/GenericListView.swift58
1 files changed, 14 insertions, 44 deletions
diff --git a/Sora/Views/Generic/GenericListView.swift b/Sora/Views/Generic/GenericListView.swift
index 3195624..a829856 100644
--- a/Sora/Views/Generic/GenericListView.swift
+++ b/Sora/Views/Generic/GenericListView.swift
@@ -477,51 +477,21 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View {
}
Menu {
- ForEach(folderHierarchy.rootFolders, id: \.id) { folder in
- Button(action: {
- settings.updateBookmarkFolder(withID: item.id, folder: folder.id)
- }) {
- Label(folder.name, systemImage: "folder")
- }
- .disabled(item.folder == folder.id)
- }
-
- ForEach(folderHierarchy.sortedTopLevelNames, id: \.self) { topLevelName in
- Menu {
- let topLevelFolder = folderHierarchy.rootFolders.first { $0.name == topLevelName }
-
- if let topLevelFolder {
- Button(action: {
- settings.updateBookmarkFolder(withID: item.id, folder: topLevelFolder.id)
- }) {
- Text("Uncategorized")
- }
- .disabled(item.folder == topLevelFolder.id)
- } else {
- Button(action: {
- let newFolder = SettingsFolder(name: topLevelName)
-
- settings.folders.append(newFolder)
- settings.updateBookmarkFolder(withID: item.id, folder: newFolder.id)
- }) {
- Text("Uncategorized")
- }
- }
-
- Divider()
-
- ForEach(folderHierarchy.folders(forTopLevelName: topLevelName), id: \.id) { folder in
- Button(action: {
- settings.updateBookmarkFolder(withID: item.id, folder: folder.id)
- }) {
- Text(folder.shortName)
- }
- .disabled(item.folder == folder.id)
- }
- } label: {
- Text(topLevelName)
+ FolderMenuView(
+ folderHierarchy: folderHierarchy,
+ onSelectFolder: { folderIdentifier in
+ settings.updateBookmarkFolder(withID: item.id, folder: folderIdentifier)
+ },
+ onCreateTopLevelUncategorized: { topLevelName in
+ let newFolder = SettingsFolder(name: topLevelName)
+
+ settings.folders.append(newFolder)
+ settings.updateBookmarkFolder(withID: item.id, folder: newFolder.id)
+ },
+ isFolderDisabled: { folderIdentifier in
+ item.folder == folderIdentifier
}
- }
+ )
Button(action: {
itemPendingCollectionAssignment = item.id