1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00
persephone/Persephone/Models/TrackTimer.swift
Daniel Barber 8bab7c2bf5
Refactor more of the things!
1. Move all the mpdClient actions into a reducer.
2. Move global stuff into their own global struct
2019-04-30 09:11:50 -04:00

53 lines
1.2 KiB
Swift

//
// TrackTimer.swift
// Persephone
//
// Created by Daniel Barber on 2019/4/19.
// Copyright © 2019 Dan Barber. All rights reserved.
//
import AppKit
class TrackTimer: NSObject {
var timer: Timer?
var startTime: CFTimeInterval = CACurrentMediaTime()
var startElapsed: Double = 0
func start(elapsedTimeMs: UInt?) {
guard let elapsedTimeMs = elapsedTimeMs else { return }
startTime = CACurrentMediaTime()
startElapsed = Double(elapsedTimeMs) / 1000
DispatchQueue.main.async {
self.timer?.invalidate()
self.timer = Timer.scheduledTimer(
withTimeInterval: 0.25,
repeats: true
) { _ in
let currentTime = CACurrentMediaTime()
let timeDiff = currentTime - self.startTime
let newElapsedTimeMs = UInt((self.startElapsed + timeDiff) * 1000)
App.store.dispatch(
UpdateElapsedTimeAction(elapsedTimeMs: newElapsedTimeMs)
)
}
}
}
func stop(elapsedTimeMs: UInt?) {
guard let elapsedTimeMs = elapsedTimeMs else { return }
DispatchQueue.main.async {
self.timer?.invalidate()
App.store.dispatch(
UpdateElapsedTimeAction(elapsedTimeMs: elapsedTimeMs)
)
}
}
}