mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-08-30 06:39:35 +02:00
47 lines
1.4 KiB
Swift
47 lines
1.4 KiB
Swift
//
|
|
// PlayerTimeUtils.swift
|
|
// Audiobookshelf
|
|
//
|
|
// Created by Ron Heft on 9/20/22.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class PlayerTimeUtils {
|
|
|
|
private init() {}
|
|
|
|
static func calcSeekBackTime(currentTime: TimeInterval, lastPlayedMs: Double?) -> TimeInterval {
|
|
let sinceLastPlayed = timeSinceLastPlayed(lastPlayedMs)
|
|
let timeToSeekBack = timeToSeekBackForSinceLastPlayed(sinceLastPlayed)
|
|
let currentTimeAfterSeekBack = currentTime.advanced(by: -timeToSeekBack)
|
|
return max(currentTimeAfterSeekBack, 0)
|
|
}
|
|
|
|
static internal func timeSinceLastPlayed(_ lastPlayedMs: Double?) -> TimeInterval? {
|
|
guard let lastPlayedMs = lastPlayedMs else { return nil }
|
|
let lastPlayed = Date(timeIntervalSince1970: lastPlayedMs / 1000)
|
|
return lastPlayed.timeIntervalSinceNow
|
|
}
|
|
|
|
static internal func timeToSeekBackForSinceLastPlayed(_ sinceLastPlayed: TimeInterval?) -> TimeInterval {
|
|
if let sinceLastPlayed = sinceLastPlayed {
|
|
if sinceLastPlayed < 6 {
|
|
return 2
|
|
} else if sinceLastPlayed < 12 {
|
|
return 10
|
|
} else if sinceLastPlayed < 30 {
|
|
return 15
|
|
} else if sinceLastPlayed < 180 {
|
|
return 20
|
|
} else if sinceLastPlayed < 3600 {
|
|
return 25
|
|
} else {
|
|
return 29
|
|
}
|
|
} else {
|
|
return 5
|
|
}
|
|
}
|
|
|
|
}
|