diff options
Diffstat (limited to 'Sora')
| -rw-r--r-- | Sora/Views/BookmarkMenuButtonView.swift | 9 | ||||
| -rw-r--r-- | Sora/Views/Generic/GenericListView.swift | 12 |
2 files changed, 15 insertions, 6 deletions
diff --git a/Sora/Views/BookmarkMenuButtonView.swift b/Sora/Views/BookmarkMenuButtonView.swift index c46894d..91009d0 100644 --- a/Sora/Views/BookmarkMenuButtonView.swift +++ b/Sora/Views/BookmarkMenuButtonView.swift @@ -39,6 +39,7 @@ struct BookmarkMenuButtonView: View { }) { Label(folder.name, systemImage: "folder") } + .disabled(isBookmarkedInFolder(folderId: folder.id)) } let topLevelFolders = settings.folders @@ -62,6 +63,7 @@ struct BookmarkMenuButtonView: View { }) { Text(folder.shortName) } + .disabled(isBookmarkedInFolder(folderId: folder.id)) } } label: { Text(topLevelName) @@ -98,4 +100,11 @@ struct BookmarkMenuButtonView: View { settings.bookmarks.append(newBookmark) } } + + private func isBookmarkedInFolder(folderId: UUID) -> Bool { + settings.bookmarks.contains { bookmark in + bookmark.folder == folderId && Set(bookmark.tags) == Set(tags) + && bookmark.provider == provider + } + } } diff --git a/Sora/Views/Generic/GenericListView.swift b/Sora/Views/Generic/GenericListView.swift index e9376fa..7c568d6 100644 --- a/Sora/Views/Generic/GenericListView.swift +++ b/Sora/Views/Generic/GenericListView.swift @@ -381,13 +381,12 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View { Menu { ForEach(settings.folders.filter { $0.topLevelName == nil }, id: \.id) { folder in - if item.folder != folder.id { - Button(action: { - settings.updateBookmarkFolder(withID: item.id, folder: folder.id) - }) { - Label(folder.name, systemImage: "folder") - } + Button(action: { + settings.updateBookmarkFolder(withID: item.id, folder: folder.id) + }) { + Label(folder.name, systemImage: "folder") } + .disabled(item.folder == folder.id) } let topLevelFolders = settings.folders @@ -405,6 +404,7 @@ struct GenericListView<T: Identifiable & Hashable & GenericItem>: View { }) { Text(folder.shortName) } + .disabled(item.folder == folder.id) } } label: { Text(topLevelName) |