package io.tryrook.rook.sdk import com.getcapacitor.JSArray import com.getcapacitor.JSObject import com.rookmotion.rook.sdk.domain.model.HCHeartRate import com.rookmotion.rook.sdk.domain.model.granular.HrGranularData import com.rookmotion.rook.sdk.domain.model.granular.HrvRmssdGranularData import com.rookmotion.rook.sdk.domain.model.granular.HrvSdnnGranularData object HCHeartRateMapper { fun map(event: HCHeartRate): JSObject { val js = JSObject() js.putOpt("hrMaximumBPM", event.hrMaximumBpm) js.putOpt("hrMinimumBPM", event.hrMinimumBpm) js.putOpt("hrAverageBPM", event.hrAvgBpm) js.putOpt("hrRestingBPM", event.hrRestingBpm) js.putOpt("hrvAverageRMSSD", event.hrvAvgRmssd) js.putOpt("hrvAverageSDNN", event.hrvAvgSdnn) js.putOpt("hrGranularData", getJSArrayHrGranular(event.hrGranularData)) js.putOpt("hrvSDNNGranularData", getJSArrayHRVSdnnGranular(event.hrvSdnnGranularData)) js.putOpt("hrvRMSSDGranularData", getJSArrayHRVRmssGranular(event.hrvRmssdGranularData)) return js } private fun getJSArrayHrGranular(list: List?): JSArray? { if (list != null) { val jsonArray: JSArray = JSArray() for (item in list) { val js: JSObject = JSObject() js.putOpt("dateTime", item.dateTime.toISODateString()) js.putOpt("hrBPM", item.hrBpm) jsonArray.put(js) } return jsonArray } else { return null } } private fun getJSArrayHRVSdnnGranular(list: List??): JSArray? { if (list != null) { val jsonArray: JSArray = JSArray() for (item in list) { val js: JSObject = JSObject() js.putOpt("dateTime", item.dateTime.toISODateString()) js.putOpt("hrvSDNN", item.hrvSdnn) jsonArray.put(js) } return jsonArray } else { return null } } private fun getJSArrayHRVRmssGranular(list: List?): JSArray? { if (list != null) { val jsonArray = JSArray() for (item in list) { val js = JSObject() js.putOpt("dateTime", item.dateTime.toISODateString()) js.putOpt("hrvRmssd", item.hrvRmssd) jsonArray.put(js) } return jsonArray } else { return null } } }