mirror of
https://github.com/yattee/yattee.git
synced 2025-08-05 02:04:07 +00:00
move updating the time to PlayerModel
this makes the chapter view much much smoother
This commit is contained in:
@@ -6,13 +6,12 @@ import SwiftUI
|
||||
#if !os(tvOS)
|
||||
struct ChapterView: View {
|
||||
var chapter: Chapter
|
||||
var nextChapterStart: Double?
|
||||
|
||||
var chapterIndex: Int
|
||||
@ObservedObject private var player = PlayerModel.shared
|
||||
|
||||
var isCurrentChapter: Bool {
|
||||
player.currentChapter == chapterIndex
|
||||
player.currentChapterIndex == chapterIndex
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
@@ -31,7 +30,7 @@ import SwiftUI
|
||||
.receive(on: DispatchQueue.main)
|
||||
) { notification in
|
||||
if let cmTime = notification.object as? CMTime {
|
||||
self.handleTimeUpdate(cmTime)
|
||||
player.updateTime(cmTime)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,13 +73,6 @@ import SwiftUI
|
||||
static var thumbnailHeight: Double {
|
||||
thumbnailWidth / 1.7777
|
||||
}
|
||||
|
||||
private func handleTimeUpdate(_ cmTime: CMTime) {
|
||||
let time = CMTimeGetSeconds(cmTime)
|
||||
if time >= chapter.start, nextChapterStart == nil || time < nextChapterStart! {
|
||||
player.currentChapter = chapterIndex
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -144,7 +136,7 @@ struct ChapterView_Preview: PreviewProvider {
|
||||
ChapterViewTVOS(chapter: .init(title: "Chapter", start: 30))
|
||||
.injectFixtureEnvironmentObjects()
|
||||
#else
|
||||
ChapterView(chapter: .init(title: "Chapter", start: 30), nextChapterStart: nil, chapterIndex: 0)
|
||||
ChapterView(chapter: .init(title: "Chapter", start: 30), chapterIndex: 0)
|
||||
.injectFixtureEnvironmentObjects()
|
||||
#endif
|
||||
}
|
||||
|
@@ -70,8 +70,7 @@ struct ChaptersView: 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]
|
||||
let nextChapterStart: Double? = index < chaptersToShow.count - 1 ? chaptersToShow[index + 1].start : nil
|
||||
ChapterView(chapter: chapter, nextChapterStart: nextChapterStart, chapterIndex: index)
|
||||
ChapterView(chapter: chapter, chapterIndex: index)
|
||||
.opacity(index == 0 ? 1.0 : opacity)
|
||||
.allowsHitTesting(clickable)
|
||||
}
|
||||
|
Reference in New Issue
Block a user