fix: invoke heartbeat callback in HeartbeatWorker.doWork()

The onHeartbeat callback passed to scheduleHeartbeat() was never invoked because HeartbeatWorker.doWork() returned success without calling it.

Fix: Store callback in companion object and invoke it when worker runs.
This commit is contained in:
fiatcode 2026-04-30 11:08:21 +07:00
parent 5cdbb2be08
commit 8ba3a017cd
No known key found for this signature in database

View file

@ -15,6 +15,7 @@ class HeartbeatScheduler(private val context: Context) {
private val workManager = WorkManager.getInstance(context)
fun scheduleHeartbeat(intervalSeconds: Long, onHeartbeat: () -> Unit) {
onHeartbeatCallback = onHeartbeat
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.NOT_REQUIRED)
.build()
@ -42,11 +43,13 @@ class HeartbeatScheduler(private val context: Context) {
params: WorkerParameters
) : Worker(context, params) {
override fun doWork(): Result {
onHeartbeatCallback?.invoke()
return Result.success()
}
}
companion object {
var onHeartbeatCallback: (() -> Unit)? = null
const val HEARTBEAT_WORK_TAG = "traccar_heartbeat"
const val HEARTBEAT_WORK_NAME = "traccar_heartbeat_work"
}