Health Connect: Add manual sync debug trigger

This commit is contained in:
José Rebelo
2026-01-06 21:19:16 +00:00
parent 4ec30d1e52
commit 667d5fdfc4
4 changed files with 26 additions and 2 deletions
@@ -4,13 +4,18 @@ import android.app.DatePickerDialog
import android.os.Bundle
import android.widget.DatePicker
import android.widget.Toast
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import nodomain.freeyourgadget.gadgetbridge.GBApplication
import nodomain.freeyourgadget.gadgetbridge.R
import nodomain.freeyourgadget.gadgetbridge.activities.preferences.HealthConnectPreferencesActivity.HealthConnectPreferencesFragment
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper
import nodomain.freeyourgadget.gadgetbridge.entities.HealthConnectSyncStateDao
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils
import nodomain.freeyourgadget.gadgetbridge.util.GB
import nodomain.freeyourgadget.gadgetbridge.util.healthconnect.HealthConnectSyncWorker
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.time.Instant
@@ -25,6 +30,17 @@ class HealthConnectDebugFragment : AbstractDebugFragment() {
private fun setupPreferences() {
setPreferencesFromResource(R.xml.debug_preferences_health_connect, null)
onClick(PREF_DEBUG_MANUAL_SYNC_TRIGGER) {
val syncRequest = OneTimeWorkRequest.Builder(HealthConnectSyncWorker::class.java)
.addTag(HealthConnectPreferencesFragment.HEALTH_CONNECT_SYNC_WORKER_TAG)
.build()
WorkManager.getInstance(requireContext()).enqueueUniqueWork(
"HealthConnectSyncWorker_Debug",
ExistingWorkPolicy.KEEP,
syncRequest
)
}
onClick(PREF_DEBUG_RESET_HC_SYNC_STATE) {
MaterialAlertDialogBuilder(requireActivity())
.setCancelable(true)
@@ -108,6 +124,7 @@ class HealthConnectDebugFragment : AbstractDebugFragment() {
companion object {
private val LOG: Logger = LoggerFactory.getLogger(HealthConnectDebugFragment::class.java)
private const val PREF_DEBUG_MANUAL_SYNC_TRIGGER = "pref_debug_manual_sync_trigger"
private const val PREF_DEBUG_RESET_HC_SYNC_STATE = "pref_debug_reset_hc_sync_state"
}
}
@@ -78,7 +78,7 @@ public class HealthConnectPreferencesActivity extends AbstractSettingsActivityV2
public static class HealthConnectPreferencesFragment extends AbstractPreferenceFragment implements HealthConnectInitialSyncDialog.InitialSyncDialogListener {
protected static final Logger LOG = LoggerFactory.getLogger(HealthConnectPreferencesFragment.class);
private static final String HEALTH_CONNECT_SYNC_WORKER_TAG = "HealthConnectSyncWorker";
public static final String HEALTH_CONNECT_SYNC_WORKER_TAG = "HealthConnectSyncWorker";
private static final String HEALTH_CONNECT_ONETIME_WORK_NAME = "HealthConnectSyncWorker_OneTime";
private static final String HC_DEVICE_SELECT_DIALOG_TAG = "HC_DEVICE_SELECT_DIALOG";
private static final String HC_INITIAL_SYNC_DIALOG_TAG = "HC_INITIAL_SYNC_DIALOG_TAG";
@@ -4,6 +4,13 @@
<Preference
android:icon="@drawable/ic_refresh"
android:key="pref_debug_manual_sync_trigger"
android:persistent="false"
android:summary="Trigger a manual sync for all devices selected for HC"
android:title="Trigger manual sync" />
<Preference
android:icon="@drawable/ic_delete"
android:key="pref_debug_reset_hc_sync_state"
android:persistent="false"
android:summary="Reset Health Connect sync state and allow re-syncing all data"
@@ -14,7 +14,7 @@
app:iconSpaceReserved="true" />
<Preference
android:icon="@drawable/ic_settings"
android:icon="@drawable/ic_database"
android:key="health_connect_manual_settings"
android:title="@string/pref_health_connect_manual_settings"
app:iconSpaceReserved="true" />