package io.tryrook.rook.sdk import com.getcapacitor.JSObject import com.rookmotion.rook.sdk.domain.model.HCDiagnosticState import com.rookmotion.rook.sdk.domain.model.HCDiagnosticSyncState import java.time.Instant import java.time.ZoneId import java.time.format.DateTimeFormatter object HCDiagnosticMapper { fun map(state: HCDiagnosticState): JSObject { val js = JSObject() js.putOpt("isConfigured", state.isConfigured) js.putOpt("userIdentified", state.userIdentified) js.putOpt("permissions", state.permissions.toString()) js.putOpt("backgroundSync", getBackgroundSync(state.backgroundSync)) js.putOpt("manualSync", getManualSync(state.manualSync)) return js } private fun getBackgroundSync(backgroundSync: HCDiagnosticSyncState): JSObject { val js = JSObject() js.putOpt("enabled", backgroundSync.enabled) if (backgroundSync.lastSync != null) { js.putOpt("lastSync", backgroundSync.lastSync!!.toISODateString()) } return js } private fun getManualSync(manualSync: HCDiagnosticSyncState): JSObject { val js = JSObject() js.putOpt("enabled", manualSync.enabled) if (manualSync.lastSync != null) { js.putOpt("lastSync", manualSync.lastSync!!.toISODateString()) } return js } private fun Instant.toISODateString(): String { val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS") .withZone(ZoneId.systemDefault()) return formatter.format(this) } }