diff options
Diffstat (limited to 'Jel/Views/Library/Item/ItemMediaView.swift')
-rw-r--r-- | Jel/Views/Library/Item/ItemMediaView.swift | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/Jel/Views/Library/Item/ItemMediaView.swift b/Jel/Views/Library/Item/ItemMediaView.swift index dfb6c7a..4b8f863 100644 --- a/Jel/Views/Library/Item/ItemMediaView.swift +++ b/Jel/Views/Library/Item/ItemMediaView.swift @@ -7,6 +7,7 @@ import SwiftUI import JellyfinKit +import VisibilityTrackingScrollView struct ItemMediaView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController @@ -15,7 +16,7 @@ struct ItemMediaView: View { @State var item: BaseItemDto @State var loading: Bool = true - @State var navigationTitle: String = "" + @State var pageScrolled: Bool = false var body: some View { GeometryReader {geo in @@ -23,7 +24,7 @@ struct ItemMediaView: View { ProgressView() .progressViewStyle(.circular) } else { - ScrollView { + ScrollView() { ItemHeaderView(item: item) .padding(.bottom) .background { @@ -31,11 +32,8 @@ struct ItemMediaView: View { EmptyView() .onChange(of: geo.frame(in: .global).minY) { let minY = geo.frame(in: .global).minY - if minY < 0 { - navigationTitle = item.name ?? "" - } else { - navigationTitle = "" - } + + pageScrolled = minY < 0 } } } @@ -49,6 +47,8 @@ struct ItemMediaView: View { 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 @@ -62,9 +62,15 @@ struct ItemMediaView: View { .ignoresSafeArea() } } - .toolbarRole(.editor) .navigationBarTitleDisplayMode(.inline) - .navigationTitle(navigationTitle) + .navigationTitle(item.name ?? "Untitled") + .toolbarRole(.editor) + .toolbar { + ToolbarItem(placement: .principal) { + Text(pageScrolled ? item.name ?? "Untitled" : "") + .bold() + } + } .scrollIndicators(.hidden) .onAppear { Task { |