mirror of
https://github.com/yattee/yattee.git
synced 2024-12-22 05:23:41 +00:00
Merge pull request #749 from stonerl/fix-chapter-regression
fix regression and improve curentChapter handling
This commit is contained in:
commit
21f21cc944
@ -464,6 +464,8 @@ final class MPVBackend: PlayerBackend {
|
||||
timeObserverThrottle.execute {
|
||||
self.model.updateWatch(time: self.currentTime)
|
||||
}
|
||||
|
||||
self.model.updateTime(self.currentTime!)
|
||||
}
|
||||
|
||||
private func stopClientUpdates() {
|
||||
|
@ -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<Chapter>, opacity: Double = 1.0, clickable: Bool = true, scrollViewProxy _: ScrollViewProxy? = nil) -> some View {
|
||||
private func chapterViews(for chaptersToShow: ArraySlice<Chapter>, 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
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user