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/Views/FavoriteMenuButtonView.swift | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-7dc855bddca8919b16b902c989b38a4e1ec06920.tar.xz sora-testing-7dc855bddca8919b16b902c989b38a4e1ec06920.zip | |
feat: Development commit
Diffstat (limited to 'Sora/Views/FavoriteMenuButtonView.swift')
| -rw-r--r-- | Sora/Views/FavoriteMenuButtonView.swift | 84 |
1 files changed, 39 insertions, 45 deletions
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, |