From 7dc855bddca8919b16b902c989b38a4e1ec06920 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 9 Sep 2025 03:32:41 -0700 Subject: feat: Development commit --- Sora/Views/FavoriteMenuButtonView.swift | 84 +++++++++++++++------------------ 1 file changed, 39 insertions(+), 45 deletions(-) (limited to 'Sora/Views/FavoriteMenuButtonView.swift') 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, -- cgit v1.2.3