SyncFreshStartResetter.kt

2.1 KB · raw

1package com.peachpasswords.sync23import android.content.Context4import dagger.hilt.android.qualifiers.ApplicationContext5import javax.inject.Inject6import javax.inject.Singleton78/**9 * Clears every piece of state that can make a destroyed vault still look10 * paired. The Pro license deliberately lives outside this boundary.11 */12@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}