From 53bdc33ac7e97e1c51dd27c8cb1943c7608b49d6 Mon Sep 17 00:00:00 2001 From: Shav Kinderlehrer Date: Sat, 23 Dec 2023 14:15:01 -0500 Subject: Use Nuke to load images + start movieView --- Jel/Views/Library/Item/ItemMovieView.swift | 44 ++++++++++++++++++++++++++++++ Jel/Views/Library/Item/ItemView.swift | 25 +++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 Jel/Views/Library/Item/ItemMovieView.swift create mode 100644 Jel/Views/Library/Item/ItemView.swift (limited to 'Jel/Views/Library/Item') diff --git a/Jel/Views/Library/Item/ItemMovieView.swift b/Jel/Views/Library/Item/ItemMovieView.swift new file mode 100644 index 0000000..6a29654 --- /dev/null +++ b/Jel/Views/Library/Item/ItemMovieView.swift @@ -0,0 +1,44 @@ +// +// ItemMovieView.swift +// Jel +// +// Created by zerocool on 12/23/23. +// + +import SwiftUI +import JellyfinKit + +struct ItemMovieView: View { + @EnvironmentObject var jellyfinClient: JellyfinClientController + @StateObject var authState: AuthStateController = AuthStateController.shared + + @State var item: BaseItemDto + @State var loading: Bool = true + var body: some View { + VStack { + Text(item.name ?? "Unknown") + .font(.title) + + Text(item.taglines?[0] ?? "Unknown") + .font(.headline) + Text(item.overview ?? "Unknown") + } + .navigationTitle(item.name ?? "Unknown") + .navigationBarTitleDisplayMode(.inline) + .redacted(reason: loading ? .placeholder : []) + .onAppear { + Task { + do { + let request = Paths.getItem(userID: authState.userId ?? "", itemID: item.id ?? "") + item = try await jellyfinClient.send(request).value + loading = false + } catch { + } + } + } + } +} + +#Preview { + ItemMovieView(item: BaseItemDto()) +} diff --git a/Jel/Views/Library/Item/ItemView.swift b/Jel/Views/Library/Item/ItemView.swift new file mode 100644 index 0000000..d3446af --- /dev/null +++ b/Jel/Views/Library/Item/ItemView.swift @@ -0,0 +1,25 @@ +// +// ItemView.swift +// Jel +// +// Created by zerocool on 12/23/23. +// + +import SwiftUI +import JellyfinKit + +struct ItemView: View { + @State var item: BaseItemDto + var body: some View { + switch item.type { + case .movie: + ItemMovieView(item: item) + default: + Text("Unkown media") + } + } +} + +#Preview { + ItemView(item: BaseItemDto()) +} -- cgit v1.2.3