From b840974f08132918f5996d1ccb4c31189e566e4c Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Mon, 28 Jun 2021 12:43:07 +0200 Subject: [PATCH] Use Siesta framework --- Apple TV/ChannelView.swift | 34 ++--- Apple TV/PlayerView.swift | 18 +-- Apple TV/PlaylistsView.swift | 58 +++----- Apple TV/PopularVideosView.swift | 22 +-- Apple TV/SearchView.swift | 27 ++-- Apple TV/SubscriptionsView.swift | 21 +-- Apple TV/TrendingCountrySelectionView.swift | 20 ++- Apple TV/TrendingView.swift | 50 ++++--- Apple TV/VideoCellView.swift | 1 + Extensions/Array+Next.swift | 13 ++ Model/ChannelVideosProvider.swift | 26 ---- Model/DataProvider.swift | 25 ---- Model/InvidiousAPI.swift | 132 ++++++++++++++++++ Model/PlayerState.swift | 4 +- Model/PopularVideosProvider.swift | 18 --- Model/SearchedVideosProvider.swift | 35 ----- ...tsProvider.swift => SponsorBlockAPI.swift} | 4 +- Model/Store.swift | 19 +++ Model/SubscriptionVideosProvider.swift | 23 --- Model/TrendingCountriesProvider.swift | 18 --- Model/TrendingVideosProvider.swift | 31 ---- Model/Video.swift | 6 +- Model/VideoDetailsProvider.swift | 25 ---- Pearvidious.xcodeproj/project.pbxproj | 129 +++++++---------- .../xcshareddata/swiftpm/Package.resolved | 9 ++ Shared/ContentView.swift | 8 +- 26 files changed, 365 insertions(+), 411 deletions(-) create mode 100644 Extensions/Array+Next.swift delete mode 100644 Model/ChannelVideosProvider.swift delete mode 100644 Model/DataProvider.swift create mode 100644 Model/InvidiousAPI.swift delete mode 100644 Model/PopularVideosProvider.swift delete mode 100644 Model/SearchedVideosProvider.swift rename Model/{SponsorBlockSegmentsProvider.swift => SponsorBlockAPI.swift} (82%) create mode 100644 Model/Store.swift delete mode 100644 Model/SubscriptionVideosProvider.swift delete mode 100644 Model/TrendingCountriesProvider.swift delete mode 100644 Model/TrendingVideosProvider.swift delete mode 100644 Model/VideoDetailsProvider.swift diff --git a/Apple TV/ChannelView.swift b/Apple TV/ChannelView.swift index 74bd3a30..eff625be 100644 --- a/Apple TV/ChannelView.swift +++ b/Apple TV/ChannelView.swift @@ -1,24 +1,24 @@ +import Siesta import SwiftUI struct ChannelView: View { - @ObservedObject private var provider = ChannelVideosProvider() - @EnvironmentObject private var state: AppState + @ObservedObject private var store = Store<[Video]>() + + var id: String + + var resource: Resource { + InvidiousAPI.shared.channelVideos(id) + } + + init(id: String) { + self.id = id + resource.addObserver(store) + } var body: some View { - VideosListView(videos: videos) - } - - var listRowInsets: EdgeInsets { - EdgeInsets(top: .zero, leading: .zero, bottom: .zero, trailing: 30) - } - - var videos: [Video] { - if state.channelID != provider.channelID { - provider.videos = [] - provider.channelID = state.channelID - provider.load() - } - - return provider.videos + VideosListView(videos: store.collection) + .onAppear { + resource.loadIfNeeded() + } } } diff --git a/Apple TV/PlayerView.swift b/Apple TV/PlayerView.swift index 07e9c9a7..27a1fe2b 100644 --- a/Apple TV/PlayerView.swift +++ b/Apple TV/PlayerView.swift @@ -1,12 +1,16 @@ import AVKit import Foundation +import Siesta import SwiftUI struct PlayerView: View { - @ObservedObject private var provider: VideoDetailsProvider + @ObservedObject private var store = Store