diff options
author | Shav Kinderlehrer <[email protected]> | 2024-02-27 14:22:42 -0500 |
---|---|---|
committer | Shav Kinderlehrer <[email protected]> | 2024-02-27 14:22:42 -0500 |
commit | aaf02071642a59ae375906bd9b9bcff1e8c33e92 (patch) | |
tree | 9084cdf9cab4054a6e3108b2f3db50a9343bd874 /Jel/Views/Item/Series/ItemSeriesEpisodesView.swift | |
parent | be11eed89ded59949a790aa09f20908779155443 (diff) | |
download | jel-main.tar.gz jel-main.zip |
Diffstat (limited to 'Jel/Views/Item/Series/ItemSeriesEpisodesView.swift')
-rw-r--r-- | Jel/Views/Item/Series/ItemSeriesEpisodesView.swift | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift b/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift index 338f8a7..f0d95cf 100644 --- a/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift +++ b/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift @@ -10,36 +10,46 @@ import JellyfinKit struct ItemSeriesEpisodesView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController - @EnvironmentObject var size: ScreenSize - @ObservedObject var authState: AuthStateController = AuthStateController.shared var item: BaseItemDto @State var episodeItems: [BaseItemDto] = [] + @State var loading: Bool = true var body: some View { - VStack(alignment: .leading) { + LazyVStack(alignment: .leading) { ForEach(episodeItems) {episode in ItemSeriesEpisodeIconView(item: episode) } } + .if(loading) {view in + view + .redacted(reason: .placeholder) + } + .onChange(of: item) { + self.loadEpisodes() + } .onAppear { - Task { - let parameters = Paths.GetItemsParameters( - userID: authState.userId, - parentID: item.id ?? "" - ) - let req = Paths.getItems(parameters: parameters) - - do { - let res = try await jellyfinClient.send(req) - episodeItems = res.value.items ?? [] - } catch {} - } + self.loadEpisodes() } } -} + + func loadEpisodes() { + Task { + let parameters = Paths.GetItemsParameters( + userID: authState.userId, + parentID: item.id ?? "" + ) + let req = Paths.getItems(parameters: parameters) + + do { + let res = try await jellyfinClient.send(req) + episodeItems = res.value.items ?? [] + loading = false + } catch {} + } + }} //#Preview { // ItemSeriesEpisodesView() |