diff options
Diffstat (limited to 'Sora/Views/Generic/GenericListView.swift')
| -rw-r--r-- | Sora/Views/Generic/GenericListView.swift | 58 |
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 |