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