Skip to content

Commit

Permalink
fix() use completionhandler for seek, and remove redundant analytics
Browse files Browse the repository at this point in the history
  • Loading branch information
RomainPetit1 committed Nov 22, 2022
1 parent bcb41fd commit bada1ae
Showing 1 changed file with 30 additions and 28 deletions.
58 changes: 30 additions & 28 deletions Sources/ApiVideoPlayer/ApiVideoPlayerController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -192,23 +192,28 @@ public class ApiVideoPlayerController: NSObject {
self.avPlayer.play()
}

public func replay() {
self.analytics?
.seek(from: Float(CMTimeGetSeconds(self.currentTime)), to: Float(CMTimeGetSeconds(CMTime.zero))) { result in
switch result {
case .success: break
case let .failure(error): print("analytics error on seek event: \(error)")
private func seekImpl(to time: CMTime, completion: @escaping (Bool) -> Void) {
self.avPlayer.seek(to: time, toleranceBefore: .zero, toleranceAfter: .zero) { finished in
self.analytics?
.seek(
from: Float(CMTimeGetSeconds(self.currentTime)),
to: Float(CMTimeGetSeconds(time))
) { result in
switch result {
case .success: break
case let .failure(error): print("analytics error on seek event: \(error)")
}
}
}
self.avPlayer.seek(to: CMTime.zero)
self.play()
self.analytics?.resume { result in
switch result {
case .success: break
case let .failure(error): print("analytics error on resume event: \(error)")
}
completion(finished)
}
for events in self.events { events.didReplay?() }
}

public func replay() {
self.seekImpl(to: CMTime.zero, completion: { _ in
self.play()
for events in self.events { events.didReplay?() }
})

}

public func pause() {
Expand All @@ -226,21 +231,18 @@ public class ApiVideoPlayerController: NSObject {

public func seek(to: CMTime) {
let from = self.currentTime
self.avPlayer.seek(to: to, toleranceBefore: .zero, toleranceAfter: .zero)
let calculatedTo = CMTime(
seconds: min(max(0.0, CMTimeGetSeconds(to)), CMTimeGetSeconds(duration)),
preferredTimescale: 1_000
)
self.analytics?.seek(from: from, to: calculatedTo) { result in
switch result {
case .success: break
case let .failure(error): print("analytics error seek: \(error)")
self.seekImpl(to: to, completion: { _ in
self.analytics?.seek(from: from, to: self.currentTime) { result in
switch result {
case .success: break
case let .failure(error): print("analytics error seek: \(error)")
}
}
}

for events in self.events {
events.didSeek?(from, calculatedTo)
}
for events in self.events {
events.didSeek?(from, self.currentTime)
}
})
}

public var videoOptions: VideoOptions? {
Expand Down

0 comments on commit bada1ae

Please sign in to comment.