package com.peachpasswords.sync import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @Singleton class BackgroundSyncPreference @Inject constructor( @ApplicationContext context: Context, ) { private val prefs = context.getSharedPreferences(PREFS_FILE, Context.MODE_PRIVATE) private val _enabled = MutableStateFlow(readEnabled(prefs.contains(KEY_ENABLED)) { prefs.getBoolean(KEY_ENABLED, true) }) val enabled: StateFlow = _enabled.asStateFlow() fun setEnabled(enabled: Boolean) { prefs.edit().putBoolean(KEY_ENABLED, enabled).apply() _enabled.value = enabled } private companion object { const val PREFS_FILE = "peach_background_sync" const val KEY_ENABLED = "enabled" } } // Existing paired installs default on so upgrading fixes the unreachable-phone state. internal fun readEnabled(hasStoredChoice: Boolean, storedValue: () -> Boolean): Boolean = if (hasStoredChoice) storedValue() else true