From 09ff16d464d01eae64e926122843cfe30bc11ca4 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Sun, 11 Dec 2022 23:30:28 +0100 Subject: [PATCH] Favorited playlists belong to account --- Model/FavoriteItem.swift | 2 +- Shared/Home/FavoriteItemView.swift | 15 +++++++++------ Shared/Playlists/PlaylistsView.swift | 6 ++++-- Shared/Settings/EditFavorites.swift | 7 ++++--- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Model/FavoriteItem.swift b/Model/FavoriteItem.swift index 9365ba05..40b97454 100644 --- a/Model/FavoriteItem.swift +++ b/Model/FavoriteItem.swift @@ -7,7 +7,7 @@ struct FavoriteItem: Codable, Equatable, Identifiable, Defaults.Serializable { case popular case trending(String, String?) case channel(String, String, String) - case playlist(String) + case playlist(String, String) case channelPlaylist(String, String, String) case searchQuery(String, String, String, String) diff --git a/Shared/Home/FavoriteItemView.swift b/Shared/Home/FavoriteItemView.swift index d3e3ca88..6649ca1b 100644 --- a/Shared/Home/FavoriteItemView.swift +++ b/Shared/Home/FavoriteItemView.swift @@ -124,7 +124,7 @@ struct FavoriteItemView: View { ChannelVideosView(channel: .init(id: id, name: name)) case let .channelPlaylist(_, id, title): ChannelPlaylistView(playlist: .init(id: id, title: title)) - case let .playlist(id): + case let .playlist(_, id): ChannelPlaylistView(playlist: .init(id: id, title: label)) case .subscriptions: SubscriptionsView() @@ -157,7 +157,7 @@ struct FavoriteItemView: View { case let .searchQuery(text, _, _, _): navigation.hideViewsAboveBrowser() navigation.openSearchQuery(text) - case let .playlist(id): + case let .playlist(_, id): navigation.tabSelection = .playlist(id) } } @@ -193,6 +193,8 @@ struct FavoriteItemView: View { case let .channelPlaylist(appType, _, _): guard let appType = VideosApp.AppType(rawValue: appType) else { return false } return accounts.app.appType == appType + case let .playlist(accountID, _): + return accounts.current?.id == accountID default: return true } @@ -222,7 +224,7 @@ struct FavoriteItemView: View { case let .channelPlaylist(_, id, _): return accounts.api.channelPlaylist(id) - case let .playlist(id): + case let .playlist(_, id): return accounts.api.playlist(id) case let .searchQuery(text, date, duration, order): @@ -241,11 +243,12 @@ struct FavoriteItemView: View { } private var label: String { - if case let .playlist(id) = item.section { + switch item.section { + case let .playlist(_, id): return playlists.find(id: id)?.title ?? "Playlist".localized() + default: + return item.section.label.localized() } - - return item.section.label.localized() } } diff --git a/Shared/Playlists/PlaylistsView.swift b/Shared/Playlists/PlaylistsView.swift index d8af6442..33183f55 100644 --- a/Shared/Playlists/PlaylistsView.swift +++ b/Shared/Playlists/PlaylistsView.swift @@ -197,8 +197,10 @@ struct PlaylistsView: View { editPlaylistButton - FavoriteButton(item: FavoriteItem(section: .playlist(currentPlaylist.id))) - .labelStyle(.iconOnly) + if let account = accounts.current { + FavoriteButton(item: FavoriteItem(section: .playlist(account.id, currentPlaylist.id))) + .labelStyle(.iconOnly) + } } } diff --git a/Shared/Settings/EditFavorites.swift b/Shared/Settings/EditFavorites.swift index c3b64f5a..05065467 100644 --- a/Shared/Settings/EditFavorites.swift +++ b/Shared/Settings/EditFavorites.swift @@ -102,11 +102,12 @@ struct EditFavorites: View { } func label(_ item: FavoriteItem) -> String { - if case let .playlist(id) = item.section { + switch item.section { + case let .playlist(_, id): return playlistsModel.find(id: id)?.title ?? "Playlist".localized() + default: + return item.section.label.localized() } - - return item.section.label.localized() } }