From 0917354dc0b79d1ac414392ae036f784eb397113 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 18 Feb 2026 12:29:25 -0800 Subject: refactor: share folder menu hierarchy across views --- Sora/Views/Generic/GenericListView.swift | 58 ++++++++------------------------ 1 file changed, 14 insertions(+), 44 deletions(-) (limited to 'Sora/Views/Generic') 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: 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 -- cgit v1.2.3