mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 12:18:37 +00:00
fix(android): persist legacy location mode migration
This commit is contained in:
@@ -19,6 +19,7 @@ class SecurePrefs(context: Context) {
|
|||||||
companion object {
|
companion object {
|
||||||
val defaultWakeWords: List<String> = listOf("openclaw", "claude")
|
val defaultWakeWords: List<String> = listOf("openclaw", "claude")
|
||||||
private const val displayNameKey = "node.displayName"
|
private const val displayNameKey = "node.displayName"
|
||||||
|
private const val locationModeKey = "location.enabledMode"
|
||||||
private const val voiceWakeModeKey = "voiceWake.mode"
|
private const val voiceWakeModeKey = "voiceWake.mode"
|
||||||
private const val plainPrefsName = "openclaw.node"
|
private const val plainPrefsName = "openclaw.node"
|
||||||
private const val securePrefsName = "openclaw.node.secure"
|
private const val securePrefsName = "openclaw.node.secure"
|
||||||
@@ -46,8 +47,7 @@ class SecurePrefs(context: Context) {
|
|||||||
private val _cameraEnabled = MutableStateFlow(plainPrefs.getBoolean("camera.enabled", true))
|
private val _cameraEnabled = MutableStateFlow(plainPrefs.getBoolean("camera.enabled", true))
|
||||||
val cameraEnabled: StateFlow<Boolean> = _cameraEnabled
|
val cameraEnabled: StateFlow<Boolean> = _cameraEnabled
|
||||||
|
|
||||||
private val _locationMode =
|
private val _locationMode = MutableStateFlow(loadLocationMode())
|
||||||
MutableStateFlow(LocationMode.fromRawValue(plainPrefs.getString("location.enabledMode", "off")))
|
|
||||||
val locationMode: StateFlow<LocationMode> = _locationMode
|
val locationMode: StateFlow<LocationMode> = _locationMode
|
||||||
|
|
||||||
private val _locationPreciseEnabled =
|
private val _locationPreciseEnabled =
|
||||||
@@ -120,7 +120,7 @@ class SecurePrefs(context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setLocationMode(mode: LocationMode) {
|
fun setLocationMode(mode: LocationMode) {
|
||||||
plainPrefs.edit { putString("location.enabledMode", mode.rawValue) }
|
plainPrefs.edit { putString(locationModeKey, mode.rawValue) }
|
||||||
_locationMode.value = mode
|
_locationMode.value = mode
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,6 +290,15 @@ class SecurePrefs(context: Context) {
|
|||||||
return resolved
|
return resolved
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun loadLocationMode(): LocationMode {
|
||||||
|
val raw = plainPrefs.getString(locationModeKey, "off")
|
||||||
|
val resolved = LocationMode.fromRawValue(raw)
|
||||||
|
if (raw?.trim()?.lowercase() == "always") {
|
||||||
|
plainPrefs.edit { putString(locationModeKey, resolved.rawValue) }
|
||||||
|
}
|
||||||
|
return resolved
|
||||||
|
}
|
||||||
|
|
||||||
private fun loadWakeWords(): List<String> {
|
private fun loadWakeWords(): List<String> {
|
||||||
val raw = plainPrefs.getString("voiceWake.triggerWords", null)?.trim()
|
val raw = plainPrefs.getString("voiceWake.triggerWords", null)?.trim()
|
||||||
if (raw.isNullOrEmpty()) return defaultWakeWords
|
if (raw.isNullOrEmpty()) return defaultWakeWords
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package ai.openclaw.app
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.robolectric.RobolectricTestRunner
|
||||||
|
import org.robolectric.RuntimeEnvironment
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
class SecurePrefsTest {
|
||||||
|
@Test
|
||||||
|
fun loadLocationMode_migratesLegacyAlwaysValue() {
|
||||||
|
val context = RuntimeEnvironment.getApplication()
|
||||||
|
val plainPrefs = context.getSharedPreferences("openclaw.node", Context.MODE_PRIVATE)
|
||||||
|
plainPrefs.edit().clear().putString("location.enabledMode", "always").commit()
|
||||||
|
|
||||||
|
val prefs = SecurePrefs(context)
|
||||||
|
|
||||||
|
assertEquals(LocationMode.WhileUsing, prefs.locationMode.value)
|
||||||
|
assertEquals("whileUsing", plainPrefs.getString("location.enabledMode", null))
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user