diff options
author | Shav Kinderlehrer <[email protected]> | 2023-12-23 00:53:44 -0500 |
---|---|---|
committer | Shav Kinderlehrer <[email protected]> | 2023-12-23 00:53:44 -0500 |
commit | 885615d1dd029138700c36bb8b23d211cf713811 (patch) | |
tree | d358d87926a8b5b73db87e9b87f3c46dfb35a435 /Jel/Views/Library | |
parent | 73c40b5aa0142ed89082214f790df539174e4dac (diff) | |
download | jel-885615d1dd029138700c36bb8b23d211cf713811.tar.gz jel-885615d1dd029138700c36bb8b23d211cf713811.zip |
Refactor LibraryIconView
Diffstat (limited to 'Jel/Views/Library')
-rw-r--r-- | Jel/Views/Library/LibraryDetailView.swift | 43 | ||||
-rw-r--r-- | Jel/Views/Library/LibraryIconView.swift | 41 |
2 files changed, 84 insertions, 0 deletions
diff --git a/Jel/Views/Library/LibraryDetailView.swift b/Jel/Views/Library/LibraryDetailView.swift new file mode 100644 index 0000000..3d5a04b --- /dev/null +++ b/Jel/Views/Library/LibraryDetailView.swift @@ -0,0 +1,43 @@ +// +// LibraryDetailView.swift +// Jel +// +// Created by zerocool on 12/22/23. +// + +import SwiftUI +import JellyfinKit + +struct LibraryDetailView: View { + @EnvironmentObject var jellyfinClient: JellyfinClientController + @StateObject var authState: AuthStateController = AuthStateController.shared + + @State var library: BaseItemDto + @State var items: [BaseItemDto]? = [] + + var body: some View { + ScrollView { + ForEach(items ?? []) {item in + LibraryIconView(library: item, imageType: "Primary", width: 120) + .padding() + } + } + .navigationTitle(library.name ?? "Unknown") + .onAppear { + Task { + let params = Paths.GetItemsParameters(userID: authState.userId, parentID: library.id) + let request = Paths.getItems(parameters: params) + + do { + let res = try await jellyfinClient.send(request) + items = res.value.items + } catch { + } + } + } + } +} + +#Preview { + LibraryDetailView(library: BaseItemDto()) +} diff --git a/Jel/Views/Library/LibraryIconView.swift b/Jel/Views/Library/LibraryIconView.swift new file mode 100644 index 0000000..e5f42b0 --- /dev/null +++ b/Jel/Views/Library/LibraryIconView.swift @@ -0,0 +1,41 @@ +// +// LibraryIconView.swift +// Jel +// +// Created by zerocool on 12/15/23. +// + +import SwiftUI +import JellyfinKit + +struct LibraryIconView: View { + @EnvironmentObject var jellyfinClient: JellyfinClientController + + @State var library: BaseItemDto + + @State var loadingImage: Bool = true + @State var imageType: String = "Primary" + var width: CGFloat? + var height: CGFloat? + + @State var loadedImageBinaryData: Data? + + var body: some View { + VStack { + AsyncImageView(imageId: library.id ?? "", + blurhash: library.imageBlurHashes?.primary?[library.imageTags?[imageType] ?? ""] ?? "", + imageType: imageType) + .aspectRatio(contentMode: .fill) + .frame(width: width, height: height) + .clipShape(RoundedRectangle(cornerRadius: 5)) + + + Text(library.name ?? "Unknown") + .font(.subheadline) + } + } +} + +//#Preview { +// LibraryIconView(library: BaseItemDto()) +//} |