From 3f74421e5b33e9e284197ef8d8f5e27fc1dc2a22 Mon Sep 17 00:00:00 2001 From: Shav Kinderlehrer Date: Sun, 7 Jan 2024 19:20:56 -0500 Subject: Add GenreView --- Jel/Views/Library/Item/ItemGenresView.swift | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Jel/Views/Library/Item/ItemGenresView.swift (limited to 'Jel/Views/Library/Item/ItemGenresView.swift') diff --git a/Jel/Views/Library/Item/ItemGenresView.swift b/Jel/Views/Library/Item/ItemGenresView.swift new file mode 100644 index 0000000..25b86e4 --- /dev/null +++ b/Jel/Views/Library/Item/ItemGenresView.swift @@ -0,0 +1,64 @@ +// +// ItemGenresView.swift +// Jel +// +// Created by zerocool on 1/7/24. +// + +import SwiftUI +import JellyfinKit + +struct ItemGenresView: View { + @EnvironmentObject var jellyfinClient: JellyfinClientController + + @StateObject var authState: AuthStateController = AuthStateController.shared + + var item: BaseItemDto + @State var library: BaseItemDto = BaseItemDto() + + var body: some View { + VStack(alignment: .leading) { + Text("Genres") + .font(.title2) + + ScrollView(.horizontal) { + HStack { + ForEach(item.genres ?? [], id: \.self) {genre in + NavigationLink { + LibraryDetailView(library: library) {items in + var matchingItems: [BaseItemDto] = [] + + for item in items { + if (item.genres ?? []).contains(genre) { + matchingItems.append(item) + } + } + return matchingItems + } + .navigationTitle(genre) + } label: { + Text(genre) + } + .buttonStyle(.bordered) + .clipShape(.capsule) + } + } + } + } + .onAppear { + Task { + let request = Paths.getItem(userID: authState.userId ?? "", itemID: item.parentID ?? "") + do { + let res = try await jellyfinClient.send(request) + library = res.value + } catch { + } + } + + } + } +} + +//#Preview { +// ItemGenresView() +//} -- cgit v1.2.3