Skip to content

Commit 747b4ac

Browse files
committed
Fixes Health Connect data synchronization by using the measurement's timestamp for the clientRecordVersion and setting the correct zoneOffset, see #19.
1 parent a0e2067 commit 747b4ac

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/app/src/main/java/com/health/openscale/sync/core/sync/HealthConnectSync.kt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -193,32 +193,41 @@ class HealthConnectSync(private var healthConnectClient: HealthConnectClient) :
193193
private fun buildMetadata(measurement: OpenScaleMeasurement, type: String): Metadata {
194194
return Metadata.manualEntry(
195195
clientRecordId = measurement.id.toString() + "_" + type,
196-
clientRecordVersion = Instant.now().toEpochMilli()
196+
clientRecordVersion = measurement.date.time
197197
)
198198
}
199199

200200
private fun buildWeightRecord(measurement: OpenScaleMeasurement): WeightRecord {
201+
val measurementInstant = measurement.date.toInstant()
202+
val zoneOffset = ZoneId.systemDefault().rules.getOffset(measurementInstant)
203+
201204
return WeightRecord(
202-
time = measurement.date.toInstant(),
203-
zoneOffset = null,
205+
time = measurementInstant,
206+
zoneOffset = zoneOffset,
204207
weight = Mass.kilograms(measurement.weight.toDouble()),
205208
metadata = buildMetadata(measurement, "weight")
206209
)
207210
}
208211

209212
private fun buildWaterRecord(measurement: OpenScaleMeasurement): BodyWaterMassRecord {
213+
val measurementInstant = measurement.date.toInstant()
214+
val zoneOffset = ZoneId.systemDefault().rules.getOffset(measurementInstant)
215+
210216
return BodyWaterMassRecord(
211-
time = measurement.date.toInstant(),
212-
zoneOffset = null,
217+
time = measurementInstant,
218+
zoneOffset = zoneOffset,
213219
mass = Mass.kilograms(measurement.weight.toDouble() * measurement.water.toDouble() / 100),
214220
metadata = buildMetadata(measurement, "water")
215221
)
216222
}
217223

218224
private fun buildFatRecord(measurement: OpenScaleMeasurement): BodyFatRecord {
225+
val measurementInstant = measurement.date.toInstant()
226+
val zoneOffset = ZoneId.systemDefault().rules.getOffset(measurementInstant)
227+
219228
return BodyFatRecord(
220-
time = measurement.date.toInstant(),
221-
zoneOffset = null,
229+
time = measurementInstant,
230+
zoneOffset = zoneOffset,
222231
percentage = Percentage(measurement.fat.toDouble()),
223232
metadata = buildMetadata(measurement, "fat")
224233
)

0 commit comments

Comments
 (0)