summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShav Kinderlehrer <[email protected]>2024-01-07 22:47:46 -0500
committerShav Kinderlehrer <[email protected]>2024-01-07 22:47:46 -0500
commit1f25fa576db43fa69298c74376188e1fe9af6e6b (patch)
treefe6dc376f312d337e6c8d04d16d04909428f3b3a
parente807d063195b1299dcaeb6e7213d7e3d300a3112 (diff)
downloadjel-1f25fa576db43fa69298c74376188e1fe9af6e6b.tar.gz
jel-1f25fa576db43fa69298c74376188e1fe9af6e6b.zip
Add playButton child view
-rw-r--r--Jel/Views/Library/Item/ItemMediaView.swift85
-rw-r--r--Jel/Views/Library/Item/ItemView.swift4
-rw-r--r--Jel/Views/Library/Item/Types/ItemMovieView.swift7
3 files changed, 45 insertions, 51 deletions
diff --git a/Jel/Views/Library/Item/ItemMediaView.swift b/Jel/Views/Library/Item/ItemMediaView.swift
index 4b8f863..c7fe0cb 100644
--- a/Jel/Views/Library/Item/ItemMediaView.swift
+++ b/Jel/Views/Library/Item/ItemMediaView.swift
@@ -9,58 +9,55 @@ import SwiftUI
import JellyfinKit
import VisibilityTrackingScrollView
-struct ItemMediaView: View {
+struct ItemMediaView<Content: View>: View {
@EnvironmentObject var jellyfinClient: JellyfinClientController
@StateObject var authState: AuthStateController = AuthStateController.shared
@State var item: BaseItemDto
- @State var loading: Bool = true
+ @ViewBuilder var playButton: () -> Content
@State var pageScrolled: Bool = false
var body: some View {
GeometryReader {geo in
- if loading {
- ProgressView()
- .progressViewStyle(.circular)
- } else {
- ScrollView() {
- ItemHeaderView(item: item)
- .padding(.bottom)
- .background {
- GeometryReader {geo in
- EmptyView()
- .onChange(of: geo.frame(in: .global).minY) {
- let minY = geo.frame(in: .global).minY
-
- pageScrolled = minY < 0
- }
- }
- }
-
- VStack(alignment: .leading) {
- Text(item.taglines?.count ?? 0 > 0 ? item.taglines?[0] ?? "" : "")
- .font(.headline)
- .frame(maxWidth: .infinity, alignment: .leading)
- .padding(.bottom)
-
- ForEach(item.overview?.components(separatedBy: "<br>") ?? [], id: \.self) {overview in
- Text(overview)
+ ScrollView() {
+ ItemHeaderView(item: item)
+ .padding(.bottom)
+ .background {
+ GeometryReader {geo in
+ EmptyView()
+ .onChange(of: geo.frame(in: .global).minY) {
+ let minY = geo.frame(in: .global).minY
+
+ pageScrolled = minY < 0
+ }
}
-
- ItemGenresView(item: item)
}
- .if(max(geo.safeAreaInsets.leading, geo.safeAreaInsets.trailing) > 0) {view in
- view
- .padding(max(geo.safeAreaInsets.leading, geo.safeAreaInsets.trailing))
- }
- .if(max(geo.safeAreaInsets.leading, geo.safeAreaInsets.trailing) <= 0) {view in
- view
- .padding()
+
+ playButton()
+
+ VStack(alignment: .leading) {
+ Text(item.taglines?.count ?? 0 > 0 ? item.taglines?[0] ?? "" : "")
+ .font(.headline)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .padding(.bottom)
+
+ ForEach(item.overview?.components(separatedBy: "<br>") ?? [], id: \.self) {overview in
+ Text(overview)
}
+
+ ItemGenresView(item: item)
+ }
+ .if(max(geo.safeAreaInsets.leading, geo.safeAreaInsets.trailing) > 0) {view in
+ view
+ .padding(max(geo.safeAreaInsets.leading, geo.safeAreaInsets.trailing))
+ }
+ .if(max(geo.safeAreaInsets.leading, geo.safeAreaInsets.trailing) <= 0) {view in
+ view
+ .padding()
}
- .ignoresSafeArea()
}
+ .ignoresSafeArea()
}
.navigationBarTitleDisplayMode(.inline)
.navigationTitle(item.name ?? "Untitled")
@@ -72,17 +69,7 @@ struct ItemMediaView: View {
}
}
.scrollIndicators(.hidden)
- .onAppear {
- Task {
- do {
- let request = Paths.getItem(userID: authState.userId ?? "", itemID: item.id ?? "")
- let response = try await jellyfinClient.send(request)
- item = response.value
- loading = false
- } catch {
- }
- }
- }
+
}
}
diff --git a/Jel/Views/Library/Item/ItemView.swift b/Jel/Views/Library/Item/ItemView.swift
index e3289ba..21d6c77 100644
--- a/Jel/Views/Library/Item/ItemView.swift
+++ b/Jel/Views/Library/Item/ItemView.swift
@@ -15,7 +15,9 @@ struct ItemView: View {
case .movie:
ItemMovieView(item: item)
default:
- ItemMediaView(item: item)
+ ItemMediaView(item: item) {
+ EmptyView()
+ }
}
}
}
diff --git a/Jel/Views/Library/Item/Types/ItemMovieView.swift b/Jel/Views/Library/Item/Types/ItemMovieView.swift
index 22de82d..5a9100b 100644
--- a/Jel/Views/Library/Item/Types/ItemMovieView.swift
+++ b/Jel/Views/Library/Item/Types/ItemMovieView.swift
@@ -12,7 +12,12 @@ struct ItemMovieView: View {
@State var item: BaseItemDto
var body: some View {
VStack {
- ItemMediaView(item: item)
+ ItemMediaView(item: item) {
+ Button("Play") {
+
+ }
+ .buttonStyle(.borderedProminent)
+ }
}
}
}