// // ItemMovieView.swift // Jel // // Created by zerocool on 12/23/23. // import SwiftUI import JellyfinKit struct ItemMovieView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController @StateObject var authState: AuthStateController = AuthStateController.shared @State var item: BaseItemDto @State var loading: Bool = true @State var navigationTitle: String = "" var body: some View { ScrollView { // ItemHeaderView(item: item) // .scrollTransition {content, phase in // content // .scaleEffect(phase.isIdentity ? 1 : 2) // .opacity(phase.isIdentity ? 1 : 0.1) // .blur(radius: phase.isIdentity ? 0 : 50) // } ItemHeaderView(item: item) .opacity(0) // this is the jankiest thing in existence .background { GeometryReader {geo in ItemHeaderView(item: item) .onChange(of: geo.frame(in: .global).minY) { navigationTitle = geo.frame(in: .global).minY < 0 ? item.name ?? "Unknown" : "" } .scaleEffect(1 + (geo.frame(in: .global).minY > 0 ? geo.frame(in: .global).minY * 0.001 : 0)) .offset(y: 1 + (geo.frame(in: .global).minY > 0 ? geo.frame(in: .global).minY * 0.001 : 0)) .scrollTransition {content, phase in content .scaleEffect(phase.isIdentity ? 1 : 2) .opacity(phase.isIdentity ? 1 : 0.1) .blur(radius: phase.isIdentity ? 0 : 50) } } } VStack { Text(item.taglines?[0] ?? "Unknown") .font(.headline) .padding(.top, 20) Text(item.overview ?? "Unknown") .padding() Text(item.overview ?? "Unknown") .padding() Text(item.overview ?? "Unknown") .padding() Text(item.overview ?? "Unknown") .padding() } } .redacted(reason: loading ? .placeholder : []) .ignoresSafeArea(edges: .top) .scrollIndicators(.hidden) .toolbarRole(.editor) .navigationTitle(navigationTitle) .navigationBarTitleDisplayMode(.inline) .onAppear { Task { do { let request = Paths.getItem(userID: authState.userId ?? "", itemID: item.id ?? "") item = try await jellyfinClient.send(request).value loading = false } catch { } } } } } #Preview { ItemMovieView(item: BaseItemDto()) }