diff options
| author | Fuwn <[email protected]> | 2025-09-09 03:32:41 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-09-09 03:32:41 -0700 |
| commit | 7dc855bddca8919b16b902c989b38a4e1ec06920 (patch) | |
| tree | 9d7bfae241ea2305be92d92ebba60b2c44ca0c9e /Sora | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-7dc855bddca8919b16b902c989b38a4e1ec06920.tar.xz sora-testing-7dc855bddca8919b16b902c989b38a4e1ec06920.zip | |
feat: Development commit
Diffstat (limited to 'Sora')
| -rw-r--r-- | Sora/Views/BookmarkMenuButtonView.swift | 104 | ||||
| -rw-r--r-- | Sora/Views/FavoriteMenuButtonView.swift | 84 |
2 files changed, 88 insertions, 100 deletions
diff --git a/Sora/Views/BookmarkMenuButtonView.swift b/Sora/Views/BookmarkMenuButtonView.swift index 9af2cf6..714448e 100644 --- a/Sora/Views/BookmarkMenuButtonView.swift +++ b/Sora/Views/BookmarkMenuButtonView.swift @@ -16,81 +16,75 @@ struct BookmarkMenuButtonView: View { } Menu { - Button(action: { - if isBookmarked { - settings.removeBookmark(withTags: tags) - } else { + ForEach(settings.folders.filter { $0.topLevelName == nil }, id: \.id) { folder in + Button(action: { settings.addBookmark(provider: provider, tags: tags) - } - }) { - if isBookmarked { - Label("Remove Bookmark", systemImage: "bookmark.fill") - } else { - Label("Bookmark Tag\(tags.count == 1 ? "" : "s")", systemImage: "bookmark") - } - } - Menu { - ForEach(settings.folders.filter { $0.topLevelName == nil }, id: \.id) { folder in - Button(action: { - settings.addBookmark(provider: provider, tags: tags) - - 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") + 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) } - .disabled(isBookmarkedInFolder(folderId: folder.id)) + }) { + Label(folder.name, systemImage: "folder") } + .disabled(isBookmarkedInFolder(folderId: folder.id)) + } - let topLevelFolders = settings.folders - .reduce(into: [String: [SettingsFolder]]()) { result, folder in - guard let topLevelName = folder.topLevelName else { return } + let topLevelFolders = settings.folders + .reduce(into: [String: [SettingsFolder]]()) { result, folder in + guard let topLevelName = folder.topLevelName else { return } - result[topLevelName, default: []].append(folder) - } + result[topLevelName, default: []].append(folder) + } - ForEach(topLevelFolders.keys.sorted(), id: \.self) { topLevelName in - Menu { - ForEach(topLevelFolders[topLevelName] ?? [], id: \.id) { folder in - Button(action: { - settings.addBookmark(provider: provider, tags: tags) + ForEach(topLevelFolders.keys.sorted(), id: \.self) { topLevelName in + Menu { + ForEach(topLevelFolders[topLevelName] ?? [], id: \.id) { folder in + Button(action: { + settings.addBookmark(provider: provider, tags: tags) - 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) + 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) } - .disabled(isBookmarkedInFolder(folderId: folder.id)) + }) { + Text(folder.shortName) } - } label: { - Text(topLevelName) + .disabled(isBookmarkedInFolder(folderId: folder.id)) } + } label: { + Text(topLevelName) } + } - Button(action: { - isNewCollectionAlertPresented = true - }) { - Label("New Collection", systemImage: "plus") - } - .disabled(disableNewCollection) - } label: { - Label("Bookmark to Collection", systemImage: "folder.badge.plus") + Button(action: { + isNewCollectionAlertPresented = true + }) { + Label("New Collection", systemImage: "plus") } + .disabled(disableNewCollection) } label: { if isBookmarked { Label("Bookmarked", systemImage: "bookmark.fill") } else { Label("Bookmark", systemImage: "bookmark") } + + // if isBookmarked { + // Label("Remove Bookmark", systemImage: "bookmark.fill") + // } else { + // Label("Bookmark Tag\(tags.count == 1 ? "" : "s")", systemImage: "bookmark") + // } + } primaryAction: { + if isBookmarked { + settings.removeBookmark(withTags: tags) + } else { + settings.addBookmark(provider: provider, tags: tags) + } } .collectionAlerts( isNewCollectionAlertPresented: $isNewCollectionAlertPresented, diff --git a/Sora/Views/FavoriteMenuButtonView.swift b/Sora/Views/FavoriteMenuButtonView.swift index b6b99a9..aeb360b 100644 --- a/Sora/Views/FavoriteMenuButtonView.swift +++ b/Sora/Views/FavoriteMenuButtonView.swift @@ -14,67 +14,61 @@ struct FavoriteMenuButtonView: View { let isFavorited = settings.isFavorite(postId: post.id, provider: manager.provider) Menu { - Button(action: { - if isFavorited { - settings.removeFavorite(withPostId: post.id, provider: manager.provider) - } else { - settings.addFavorite(post: post, provider: manager.provider) - } - }) { - if isFavorited { - Label("Remove from Favorites", systemImage: "heart.fill") - } else { - Label("Add to Favorites", systemImage: "heart") + ForEach(settings.folders.filter { $0.topLevelName == nil }, id: \.id) { folder in + Button(action: { + settings.addFavorite(post: post, provider: manager.provider, folder: folder.id) + }) { + Label(folder.name, systemImage: "folder") } + .disabled(isFavoritedInFolder(folderId: folder.id)) } - Menu { - ForEach(settings.folders.filter { $0.topLevelName == nil }, id: \.id) { folder in - Button(action: { - settings.addFavorite(post: post, provider: manager.provider, folder: folder.id) - }) { - Label(folder.name, systemImage: "folder") - } - .disabled(isFavoritedInFolder(folderId: folder.id)) - } - - let topLevelFolders = settings.folders - .reduce(into: [String: [SettingsFolder]]()) { result, folder in - guard let topLevelName = folder.topLevelName else { return } + let topLevelFolders = settings.folders + .reduce(into: [String: [SettingsFolder]]()) { result, folder in + guard let topLevelName = folder.topLevelName else { return } - result[topLevelName, default: []].append(folder) - } + result[topLevelName, default: []].append(folder) + } - ForEach(topLevelFolders.keys.sorted(), id: \.self) { topLevelName in - Menu { - ForEach(topLevelFolders[topLevelName] ?? [], id: \.id) { folder in - Button(action: { - settings.addFavorite(post: post, provider: manager.provider, folder: folder.id) - }) { - Text(folder.shortName) - } - .disabled(isFavoritedInFolder(folderId: folder.id)) + ForEach(topLevelFolders.keys.sorted(), id: \.self) { topLevelName in + Menu { + ForEach(topLevelFolders[topLevelName] ?? [], id: \.id) { folder in + Button(action: { + settings.addFavorite(post: post, provider: manager.provider, folder: folder.id) + }) { + Text(folder.shortName) } - } label: { - Text(topLevelName) + .disabled(isFavoritedInFolder(folderId: folder.id)) } + } label: { + Text(topLevelName) } + } - Button(action: { - isNewCollectionAlertPresented = true - }) { - Label("New Collection", systemImage: "plus") - } - .disabled(disableNewCollection) - } label: { - Label("Favorite to Collection", systemImage: "folder.badge.plus") + Button(action: { + isNewCollectionAlertPresented = true + }) { + Label("New Collection", systemImage: "plus") } + .disabled(disableNewCollection) } label: { if isFavorited { Label("Favorited", systemImage: "heart.fill") } else { Label("Favorite", systemImage: "heart") } + + // if isFavorited { + // Label("Remove from Favorites", systemImage: "heart.fill") + // } else { + // Label("Add to Favorites", systemImage: "heart") + // } + } primaryAction: { + if isFavorited { + settings.removeFavorite(withPostId: post.id, provider: manager.provider) + } else { + settings.addFavorite(post: post, provider: manager.provider) + } } .collectionAlerts( isNewCollectionAlertPresented: $isNewCollectionAlertPresented, |