diff options
Diffstat (limited to 'Sora/Views/BookmarkMenuButtonView.swift')
| -rw-r--r-- | Sora/Views/BookmarkMenuButtonView.swift | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/Sora/Views/BookmarkMenuButtonView.swift b/Sora/Views/BookmarkMenuButtonView.swift index 91009d0..9af2cf6 100644 --- a/Sora/Views/BookmarkMenuButtonView.swift +++ b/Sora/Views/BookmarkMenuButtonView.swift @@ -33,9 +33,14 @@ struct BookmarkMenuButtonView: View { Menu { ForEach(settings.folders.filter { $0.topLevelName == nil }, id: \.id) { folder in Button(action: { - let newBookmark = SettingsBookmark(provider: provider, tags: tags, folder: folder.id) + settings.addBookmark(provider: provider, tags: tags) - settings.bookmarks.append(newBookmark) + if let bookmarkId = settings.bookmarks.first(where: { bookmark in + bookmark.provider == provider + && Set(bookmark.tags) == Set(tags.map { $0.lowercased() }) + })?.id { + settings.updateBookmarkFolder(withID: bookmarkId, folder: folder.id) + } }) { Label(folder.name, systemImage: "folder") } @@ -53,13 +58,14 @@ struct BookmarkMenuButtonView: View { Menu { ForEach(topLevelFolders[topLevelName] ?? [], id: \.id) { folder in Button(action: { - let newBookmark = SettingsBookmark( - provider: provider, - tags: tags, - folder: folder.id - ) + settings.addBookmark(provider: provider, tags: tags) - settings.bookmarks.append(newBookmark) + if let bookmarkId = settings.bookmarks.first(where: { bookmark in + bookmark.provider == provider + && Set(bookmark.tags) == Set(tags.map { $0.lowercased() }) + })?.id { + settings.updateBookmarkFolder(withID: bookmarkId, folder: folder.id) + } }) { Text(folder.shortName) } @@ -94,10 +100,13 @@ struct BookmarkMenuButtonView: View { let newFolder = SettingsFolder(name: newCollectionName) settings.folders.append(newFolder) + settings.addBookmark(provider: provider, tags: tags) - let newBookmark = SettingsBookmark(provider: provider, tags: tags, folder: newFolder.id) - - settings.bookmarks.append(newBookmark) + if let bookmarkId = settings.bookmarks.first(where: { bookmark in + bookmark.provider == provider && Set(bookmark.tags) == Set(tags.map { $0.lowercased() }) + })?.id { + settings.updateBookmarkFolder(withID: bookmarkId, folder: newFolder.id) + } } } |