diff --git a/Model/Applications/InvidiousAPI.swift b/Model/Applications/InvidiousAPI.swift index 91e30ab9..ed88d225 100644 --- a/Model/Applications/InvidiousAPI.swift +++ b/Model/Applications/InvidiousAPI.swift @@ -634,10 +634,12 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI { } private func extractPlaylist(from content: JSON) -> Playlist { - .init( - id: content["playlistId"].stringValue, + let id = content["playlistId"].stringValue + return Playlist( + id: id, title: content["title"].stringValue, visibility: content["isListed"].boolValue ? .public : .private, + editable: id.starts(with: "IV"), updated: content["updated"].doubleValue, videos: content["videos"].arrayValue.map { extractVideo(from: $0) } ) diff --git a/Model/Playlist.swift b/Model/Playlist.swift index 854efb71..959f508d 100644 --- a/Model/Playlist.swift +++ b/Model/Playlist.swift @@ -17,15 +17,17 @@ struct Playlist: Identifiable, Equatable, Hashable { let id: String var title: String var visibility: Visibility + var editable = true var updated: TimeInterval? var videos = [Video]() - init(id: String, title: String, visibility: Visibility, updated: TimeInterval? = nil, videos: [Video] = []) { + init(id: String, title: String, visibility: Visibility, editable: Bool = true, updated: TimeInterval? = nil, videos: [Video] = []) { self.id = id self.title = title self.visibility = visibility + self.editable = editable self.updated = updated self.videos = videos } diff --git a/Shared/Playlists/AddToPlaylistView.swift b/Shared/Playlists/AddToPlaylistView.swift index d07f477b..18243e89 100644 --- a/Shared/Playlists/AddToPlaylistView.swift +++ b/Shared/Playlists/AddToPlaylistView.swift @@ -94,7 +94,7 @@ struct AddToPlaylistView: View { selectPlaylistButton #else Picker("Playlist", selection: $selectedPlaylistID) { - ForEach(model.all) { playlist in + ForEach(model.all.filter(\.editable)) { playlist in Text(playlist.title).tag(playlist.id) } }