mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-08-31 23:20:35 +02:00
Fix:iOS sleep timer chapter end #291
This commit is contained in:
parent
77d0974782
commit
03a47b06ee
3 changed files with 30 additions and 17 deletions
|
@ -134,24 +134,26 @@ public class AbsAudioPlayer: CAPPlugin {
|
||||||
@objc func setSleepTimer(_ call: CAPPluginCall) {
|
@objc func setSleepTimer(_ call: CAPPluginCall) {
|
||||||
guard let timeString = call.getString("time") else { return call.resolve([ "success": false ]) }
|
guard let timeString = call.getString("time") else { return call.resolve([ "success": false ]) }
|
||||||
guard let time = Int(timeString) else { return call.resolve([ "success": false ]) }
|
guard let time = Int(timeString) else { return call.resolve([ "success": false ]) }
|
||||||
|
let timeSeconds = time / 1000
|
||||||
|
|
||||||
NSLog("chapter time: \(call.getBool("isChapterTime", false))")
|
NSLog("chapter time: \(call.getBool("isChapterTime", false))")
|
||||||
|
|
||||||
if call.getBool("isChapterTime", false) {
|
if call.getBool("isChapterTime", false) {
|
||||||
let timeToPause = time / 1000 - Int(PlayerHandler.getCurrentTime() ?? 0)
|
let timeToPause = timeSeconds - Int(PlayerHandler.getCurrentTime() ?? 0)
|
||||||
if timeToPause < 0 { return call.resolve([ "success": false ]) }
|
if timeToPause < 0 { return call.resolve([ "success": false ]) }
|
||||||
|
|
||||||
NSLog("oof \(timeToPause)")
|
PlayerHandler.sleepTimerChapterStopTime = timeSeconds
|
||||||
|
|
||||||
PlayerHandler.remainingSleepTime = timeToPause
|
PlayerHandler.remainingSleepTime = timeToPause
|
||||||
return call.resolve([ "success": true ])
|
return call.resolve([ "success": true ])
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerHandler.remainingSleepTime = time / 1000
|
PlayerHandler.sleepTimerChapterStopTime = nil
|
||||||
|
PlayerHandler.remainingSleepTime = timeSeconds
|
||||||
call.resolve([ "success": true ])
|
call.resolve([ "success": true ])
|
||||||
}
|
}
|
||||||
@objc func cancelSleepTimer(_ call: CAPPluginCall) {
|
@objc func cancelSleepTimer(_ call: CAPPluginCall) {
|
||||||
PlayerHandler.remainingSleepTime = nil
|
PlayerHandler.remainingSleepTime = nil
|
||||||
|
PlayerHandler.sleepTimerChapterStopTime = nil
|
||||||
call.resolve()
|
call.resolve()
|
||||||
}
|
}
|
||||||
@objc func getSleepTimerTime(_ call: CAPPluginCall) {
|
@objc func getSleepTimerTime(_ call: CAPPluginCall) {
|
||||||
|
|
|
@ -9,12 +9,12 @@ install! 'cocoapods', :disable_input_output_paths => true
|
||||||
def capacitor_pods
|
def capacitor_pods
|
||||||
pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
|
pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
|
||||||
pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
|
pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
|
||||||
pod 'CapacitorApp', :path => '..\..\node_modules\@capacitor\app'
|
pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app'
|
||||||
pod 'CapacitorDialog', :path => '..\..\node_modules\@capacitor\dialog'
|
pod 'CapacitorDialog', :path => '../../node_modules/@capacitor/dialog'
|
||||||
pod 'CapacitorHaptics', :path => '..\..\node_modules\@capacitor\haptics'
|
pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics'
|
||||||
pod 'CapacitorNetwork', :path => '..\..\node_modules\@capacitor\network'
|
pod 'CapacitorNetwork', :path => '../../node_modules/@capacitor/network'
|
||||||
pod 'CapacitorStatusBar', :path => '..\..\node_modules\@capacitor\status-bar'
|
pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar'
|
||||||
pod 'CapacitorStorage', :path => '..\..\node_modules\@capacitor\storage'
|
pod 'CapacitorStorage', :path => '../../node_modules/@capacitor/storage'
|
||||||
end
|
end
|
||||||
|
|
||||||
target 'App' do
|
target 'App' do
|
||||||
|
|
|
@ -13,6 +13,7 @@ class PlayerHandler {
|
||||||
private static var timer: Timer?
|
private static var timer: Timer?
|
||||||
private static var lastSyncTime:Double = 0.0
|
private static var lastSyncTime:Double = 0.0
|
||||||
|
|
||||||
|
public static var sleepTimerChapterStopTime: Int? = nil
|
||||||
private static var _remainingSleepTime: Int? = nil
|
private static var _remainingSleepTime: Int? = nil
|
||||||
public static var remainingSleepTime: Int? {
|
public static var remainingSleepTime: Int? {
|
||||||
get {
|
get {
|
||||||
|
@ -127,18 +128,28 @@ class PlayerHandler {
|
||||||
private static func tick() {
|
private static func tick() {
|
||||||
if !paused {
|
if !paused {
|
||||||
listeningTimePassedSinceLastSync += 1
|
listeningTimePassedSinceLastSync += 1
|
||||||
|
|
||||||
|
if remainingSleepTime != nil {
|
||||||
|
if sleepTimerChapterStopTime != nil {
|
||||||
|
let timeUntilChapterEnd = Double(sleepTimerChapterStopTime ?? 0) - (getCurrentTime() ?? 0)
|
||||||
|
if timeUntilChapterEnd <= 0 {
|
||||||
|
paused = true
|
||||||
|
remainingSleepTime = nil
|
||||||
|
} else {
|
||||||
|
remainingSleepTime = Int(timeUntilChapterEnd.rounded())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if remainingSleepTime! <= 0 {
|
||||||
|
paused = true
|
||||||
|
}
|
||||||
|
remainingSleepTime! -= 1
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if listeningTimePassedSinceLastSync >= 5 {
|
if listeningTimePassedSinceLastSync >= 5 {
|
||||||
syncProgress()
|
syncProgress()
|
||||||
}
|
}
|
||||||
|
|
||||||
if remainingSleepTime != nil {
|
|
||||||
if remainingSleepTime! == 0 {
|
|
||||||
paused = true
|
|
||||||
}
|
|
||||||
remainingSleepTime! -= 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public static func syncProgress() {
|
public static func syncProgress() {
|
||||||
if session == nil { return }
|
if session == nil { return }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue