summaryrefslogtreecommitdiff
path: root/Sora/Views/FavoriteMenuButtonView.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-09-09 03:32:41 -0700
committerFuwn <[email protected]>2025-09-09 03:32:41 -0700
commit7dc855bddca8919b16b902c989b38a4e1ec06920 (patch)
tree9d7bfae241ea2305be92d92ebba60b2c44ca0c9e /Sora/Views/FavoriteMenuButtonView.swift
parentfeat: Development commit (diff)
downloadsora-testing-7dc855bddca8919b16b902c989b38a4e1ec06920.tar.xz
sora-testing-7dc855bddca8919b16b902c989b38a4e1ec06920.zip
feat: Development commit
Diffstat (limited to 'Sora/Views/FavoriteMenuButtonView.swift')
-rw-r--r--Sora/Views/FavoriteMenuButtonView.swift84
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,