diff --git a/Sora.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate b/Sora.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate index 86bf0f0..e2cb642 100644 Binary files a/Sora.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate and b/Sora.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Sora/Views/LibraryViews/LibraryManager.swift b/Sora/Views/LibraryViews/LibraryManager.swift index 37aa7ea..6952a00 100644 --- a/Sora/Views/LibraryViews/LibraryManager.swift +++ b/Sora/Views/LibraryViews/LibraryManager.swift @@ -32,7 +32,7 @@ class LibraryManager: ObservableObject { } func addToLibrary(_ item: LibraryItem) { - if !libraryItems.contains(where: { $0.anilistID == item.anilistID }) { + if !libraryItems.contains(where: { $0.id == item.id }) { libraryItems.append(item) saveLibrary() Logger.shared.log("Added to library: \(item.title)") diff --git a/Sora/Views/MediaViews/MediaView.swift b/Sora/Views/MediaViews/MediaView.swift index 79cb809..d0a8e69 100644 --- a/Sora/Views/MediaViews/MediaView.swift +++ b/Sora/Views/MediaViews/MediaView.swift @@ -26,6 +26,7 @@ struct MediaView: View { @State private var selectedEpisodeNumber: Int = 0 @AppStorage("externalPlayer") private var externalPlayer: String = "Default" + @StateObject private var libraryManager = LibraryManager.shared var body: some View { Group { @@ -119,8 +120,13 @@ struct MediaView: View { } Button(action: { + if isItemInLibrary() { + removeFromLibrary() + } else { + addToLibrary() + } }) { - Image(systemName: "bookmark") + Image(systemName: isItemInLibrary() ? "bookmark.fill" : "bookmark") .resizable() .frame(width: 20, height: 27) } @@ -170,6 +176,27 @@ struct MediaView: View { } } + func isItemInLibrary() -> Bool { + return libraryManager.libraryItems.contains(where: { $0.url == item.href }) + } + + func addToLibrary() { + let libraryItem = LibraryItem( + anilistID: itemID ?? 0, + title: item.name, + image: item.imageUrl, + url: item.href, + dateAdded: Date() + ) + libraryManager.addToLibrary(libraryItem) + } + + func removeFromLibrary() { + if let libraryItem = libraryManager.libraryItems.first(where: { $0.url == item.href }) { + libraryManager.removeFromLibrary(libraryItem) + } + } + func playStream(urlString: String?, fullURL: String) { guard let streamUrl = urlString else { return }