From 4c98eef1201c42100597d0093988db60b03b0e32 Mon Sep 17 00:00:00 2001 From: Shav Kinderlehrer Date: Sat, 13 Jan 2024 02:20:20 -0500 Subject: Start implementing ItemPersonView --- Jel/Views/Item/Types/ItemPersonView.swift | 81 +++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Jel/Views/Item/Types/ItemPersonView.swift (limited to 'Jel/Views/Item/Types') diff --git a/Jel/Views/Item/Types/ItemPersonView.swift b/Jel/Views/Item/Types/ItemPersonView.swift new file mode 100644 index 0000000..b827480 --- /dev/null +++ b/Jel/Views/Item/Types/ItemPersonView.swift @@ -0,0 +1,81 @@ +// +// ItemPersonView.swift +// Jel +// +// Created by zerocool on 1/13/24. +// + +import SwiftUI +import JellyfinKit + +struct ItemPersonView: View { + @EnvironmentObject var jellyfinClient: JellyfinClientController + + var item: BaseItemDto + + @State var items: [BaseItemDto]? + + var body: some View { + VStack(alignment: .leading) { + Text(item.name ?? "---") + .font(.title) + .padding() + + if let overview = item.overview { + Text(overview) + .padding([.horizontal, .bottom]) + } + + if let items = items { + // TODO: Extract to view to maintain DRY + let movies = items.filter({$0.type == .movie}) + if movies.count > 0 { + Text("Movies") + .font(.title2) + .padding(.horizontal) + ScrollView(.horizontal) { + LazyHStack { + ForEach(movies) {movie in + Text(movie.name ?? "") + } + } + .padding(.horizontal) + } + } + + let shows = items.filter({$0.type == .series}) + if shows.count > 0 { + Text("Shows") + .font(.title2) + .padding(.horizontal) + ScrollView(.horizontal) { + LazyHStack { + ForEach(shows) {show in + Text(show.name ?? "") + } + } + .padding(.horizontal) + } + } + } + } + .onAppear { + Task { + let parameters = Paths.GetItemsParameters( + isRecursive: true, + personIDs: [item.id ?? ""] + ) + let request = Paths.getItems(parameters: parameters) + + do { + let res = try await jellyfinClient.send(request) + items = res.value.items ?? [] + } catch {} + } + } + } +} + +//#Preview { +// ItemPersonView() +//} -- cgit v1.2.3