diff options
author | Shav Kinderlehrer <[email protected]> | 2024-01-07 19:20:56 -0500 |
---|---|---|
committer | Shav Kinderlehrer <[email protected]> | 2024-01-07 19:20:56 -0500 |
commit | 3f74421e5b33e9e284197ef8d8f5e27fc1dc2a22 (patch) | |
tree | 1e90fea659c5fc4c9b20109a871cbbcbd03c1420 /Jel/Views/Library/Item | |
parent | b9b61fa7ebb2716a013aacc410abe64a08d6f471 (diff) | |
download | jel-3f74421e5b33e9e284197ef8d8f5e27fc1dc2a22.tar.gz jel-3f74421e5b33e9e284197ef8d8f5e27fc1dc2a22.zip |
Add GenreView
Diffstat (limited to 'Jel/Views/Library/Item')
-rw-r--r-- | Jel/Views/Library/Item/ItemGenresView.swift | 64 | ||||
-rw-r--r-- | Jel/Views/Library/Item/ItemHeaderView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Library/Item/ItemInfoView.swift | 2 |
3 files changed, 66 insertions, 2 deletions
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() +//} diff --git a/Jel/Views/Library/Item/ItemHeaderView.swift b/Jel/Views/Library/Item/ItemHeaderView.swift index b8a708a..3b5769a 100644 --- a/Jel/Views/Library/Item/ItemHeaderView.swift +++ b/Jel/Views/Library/Item/ItemHeaderView.swift @@ -9,7 +9,7 @@ import SwiftUI import JellyfinKit struct ItemHeaderView: View { - @State var item: BaseItemDto + var item: BaseItemDto let overlayGradient = LinearGradient(gradient: Gradient(stops: [ .init(color: .clear, location: 0), diff --git a/Jel/Views/Library/Item/ItemInfoView.swift b/Jel/Views/Library/Item/ItemInfoView.swift index 022fa71..0e1ce11 100644 --- a/Jel/Views/Library/Item/ItemInfoView.swift +++ b/Jel/Views/Library/Item/ItemInfoView.swift @@ -9,7 +9,7 @@ import SwiftUI import JellyfinKit struct ItemInfoView: View { - @State var item: BaseItemDto + var item: BaseItemDto var body: some View { VStack(alignment: .leading) { |