mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Add missing Health Connect permissions and WORKOUTS data type
- Add PERMISSION_WRITE_EXERCISE_ROUTE import to HealthConnectPermissionManager - Include ElevationGainedRecord, PowerRecord, SpeedRecord, and ExerciseRoute permissions in requiredHealthConnectPermissions - Add WORKOUTS enum to HealthConnectDataType with comprehensive permission mapping - Handle WORKOUTS branches in HealthConnectUtils when expressions for exhaustiveness
This commit is contained in:
+18
-2
@@ -21,6 +21,7 @@ import androidx.core.content.edit
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.health.connect.client.HealthConnectClient
|
||||
import androidx.health.connect.client.permission.HealthPermission
|
||||
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_WRITE_EXERCISE_ROUTE
|
||||
import androidx.health.connect.client.records.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
@@ -61,7 +62,11 @@ object HealthConnectPermissionManager {
|
||||
HealthPermission.getWritePermission(WeightRecord::class),
|
||||
HealthPermission.getWritePermission(OxygenSaturationRecord::class),
|
||||
HealthPermission.getWritePermission(BodyTemperatureRecord::class),
|
||||
HealthPermission.getWritePermission(SkinTemperatureRecord::class)
|
||||
HealthPermission.getWritePermission(SkinTemperatureRecord::class),
|
||||
HealthPermission.getWritePermission(ElevationGainedRecord::class),
|
||||
HealthPermission.getWritePermission(PowerRecord::class),
|
||||
HealthPermission.getWritePermission(SpeedRecord::class),
|
||||
PERMISSION_WRITE_EXERCISE_ROUTE
|
||||
)
|
||||
|
||||
enum class HealthConnectDataType {
|
||||
@@ -71,7 +76,8 @@ object HealthConnectPermissionManager {
|
||||
HRV,
|
||||
WEIGHT,
|
||||
SPO2,
|
||||
TEMPERATURE
|
||||
TEMPERATURE,
|
||||
WORKOUTS
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -93,6 +99,16 @@ object HealthConnectPermissionManager {
|
||||
HealthPermission.getWritePermission(BodyTemperatureRecord::class),
|
||||
HealthPermission.getWritePermission(SkinTemperatureRecord::class)
|
||||
)
|
||||
HealthConnectDataType.WORKOUTS -> setOf(
|
||||
HealthPermission.getWritePermission(ExerciseSessionRecord::class),
|
||||
HealthPermission.getWritePermission(DistanceRecord::class),
|
||||
HealthPermission.getWritePermission(HeartRateRecord::class),
|
||||
HealthPermission.getWritePermission(TotalCaloriesBurnedRecord::class),
|
||||
HealthPermission.getWritePermission(ElevationGainedRecord::class),
|
||||
HealthPermission.getWritePermission(SpeedRecord::class),
|
||||
HealthPermission.getWritePermission(PowerRecord::class),
|
||||
PERMISSION_WRITE_EXERCISE_ROUTE
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
@@ -602,6 +602,11 @@ class HealthConnectUtils {
|
||||
healthConnectClient, gbDevice, metadata, offset,
|
||||
currentSliceStartTs, currentSliceEndTs, grantedPermissions
|
||||
))
|
||||
HealthConnectPermissionManager.HealthConnectDataType.WORKOUTS -> {
|
||||
// WORKOUTS are synced as part of ACTIVITY data type via RecordedWorkoutSyncer
|
||||
// This branch exists for exhaustiveness but is not expected to be called directly
|
||||
CompanionLogger.debug("$HC_SYNC_TAG WORKOUTS data type encountered in syncDataTypeSlice - workouts are synced via ACTIVITY data type")
|
||||
}
|
||||
}
|
||||
|
||||
return sliceStats
|
||||
@@ -704,6 +709,11 @@ class HealthConnectUtils {
|
||||
// For SpO2 and Temperature, there might be a specific provider or fallback to general sample provider
|
||||
HealthConnectPermissionManager.HealthConnectDataType.SPO2 -> coordinator.getSpo2SampleProvider(device, db.daoSession) // Potentially add fallback if needed: ?: coordinator.getSampleProvider(device, db.daoSession)
|
||||
HealthConnectPermissionManager.HealthConnectDataType.TEMPERATURE -> coordinator.getTemperatureSampleProvider(device, db.daoSession) // Potentially add fallback: ?: coordinator.getSampleProvider(device, db.daoSession)
|
||||
HealthConnectPermissionManager.HealthConnectDataType.WORKOUTS -> {
|
||||
// WORKOUTS use BaseActivitySummary which is accessed via DBHandler, not a sample provider
|
||||
// This function is only called for timestamp retrieval, which isn't applicable to workouts
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user