diff --git a/Model/Player/Backends/MPVBackend.swift b/Model/Player/Backends/MPVBackend.swift index a79f95eb..991e01df 100644 --- a/Model/Player/Backends/MPVBackend.swift +++ b/Model/Player/Backends/MPVBackend.swift @@ -464,6 +464,8 @@ final class MPVBackend: PlayerBackend { timeObserverThrottle.execute { self.model.updateWatch(time: self.currentTime) } + + self.model.updateTime(self.currentTime!) } private func stopClientUpdates() { diff --git a/Shared/Player/Video Details/ChaptersView.swift b/Shared/Player/Video Details/ChaptersView.swift index 470eb902..7123dcbb 100644 --- a/Shared/Player/Video Details/ChaptersView.swift +++ b/Shared/Player/Video Details/ChaptersView.swift @@ -29,18 +29,14 @@ struct ChaptersView: View { ScrollView(.horizontal) { ScrollViewReader { scrollViewProxy in LazyHStack(spacing: 20) { - chapterViews(for: chapters[...], scrollViewProxy: scrollViewProxy) + chapterViews(for: chapters[...]) } .padding(.horizontal, 15) .onAppear { - if let currentChapterIndex = player.currentChapterIndex { - scrollViewProxy.scrollTo(currentChapterIndex, anchor: .center) - } + scrollToCurrentChapter(scrollViewProxy) } - .onChange(of: player.currentChapterIndex) { currentChapterIndex in - if let index = currentChapterIndex { - scrollViewProxy.scrollTo(index, anchor: .center) - } + .onChange(of: player.currentChapterIndex) { _ in + scrollToCurrentChapter(scrollViewProxy) } } } @@ -53,7 +49,8 @@ struct ChaptersView: View { } } #else - Section { chapterViews(for: chapters[...]) }.padding(.horizontal) + Section { chapterViews(for: chapters[...]) } + .padding(.horizontal) #endif } else { #if os(iOS) @@ -80,7 +77,7 @@ struct ChaptersView: View { } #if !os(tvOS) - private func chapterViews(for chaptersToShow: ArraySlice, opacity: Double = 1.0, clickable: Bool = true, scrollViewProxy _: ScrollViewProxy? = nil) -> some View { + private func chapterViews(for chaptersToShow: ArraySlice, opacity: Double = 1.0, clickable: Bool = true) -> some View { ForEach(Array(chaptersToShow.indices), id: \.self) { index in let chapter = chaptersToShow[index] ChapterView(chapter: chapter, chapterIndex: index, showThumbnail: showThumbnails) @@ -89,6 +86,14 @@ struct ChaptersView: View { .allowsHitTesting(clickable) } } + + private func scrollToCurrentChapter(_ scrollViewProxy: ScrollViewProxy) { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { // Slight delay to ensure the view is fully rendered + if let currentChapterIndex = player.currentChapterIndex { + scrollViewProxy.scrollTo(currentChapterIndex, anchor: .center) + } + } + } #endif }