1package com.peachpasswords.sync23import android.content.Context4import dagger.hilt.android.qualifiers.ApplicationContext5import javax.inject.Inject6import javax.inject.Singleton789101112@Singleton13class SyncFreshStartResetter @Inject constructor(14 @ApplicationContext private val context: Context,15 private val devices: PairedDeviceStore,16 private val pendingDevices: PendingVouchedDeviceStore,17 private val alerts: SyncAlertStore,18 private val outcomes: SyncOutcomeStore,19 private val relaySettings: RelaySettingsStore,20 private val backgroundSync: BackgroundSyncPreference,21 private val lockedSyncSpool: LockedSyncSpoolStore,22 private val generation: SyncGenerationStore,23) {24 fun reset() {25 resetSyncStateForFreshStart(26 stopService = { PeachSyncService.stop(context) },27 clearDevices = devices::clear,28 clearPendingDevices = pendingDevices::clear,29 clearAlerts = alerts::clear,30 clearOutcomes = outcomes::reset,31 clearRelaySettings = relaySettings::reset,32 clearBackgroundPreference = backgroundSync::reset,33 clearLocalIdentity = {34 clearDeviceIdentity(context)35 clearLocalIdentityRecord(context)36 },37 clearLockedSyncSpool = lockedSyncSpool::clear,38 clearGeneration = generation::clear,39 )40 }41}4243internal fun resetSyncStateForFreshStart(44 stopService: () -> Unit,45 clearDevices: () -> Unit,46 clearPendingDevices: () -> Unit,47 clearAlerts: () -> Unit,48 clearOutcomes: () -> Unit,49 clearRelaySettings: () -> Unit,50 clearBackgroundPreference: () -> Unit,51 clearLocalIdentity: () -> Unit,52 clearLockedSyncSpool: () -> Unit = {},53 clearGeneration: () -> Unit = {},54) {55 stopService()56 clearDevices()57 clearPendingDevices()58 clearAlerts()59 clearOutcomes()60 clearRelaySettings()61 clearBackgroundPreference()62 clearLocalIdentity()63 clearLockedSyncSpool()64 clearGeneration()65}