Flocon/docs/sharedpref.md
Raphael TEYSSANDIER b28e0dc3fb
Some checks failed
docs / deploy (push) Has been cancelled
fix: Datastore doc
2026-02-25 10:25:33 +01:00

2.2 KiB
Raw Blame History

🗝 Preferences Explorer & Editor

Screenshot 2025-09-12 at 15 41 04

Flocon provides complete access to your apps preferences (SharedPreferences and DataStore), which often store user tokens, feature flags, configuration options, and more.

Key capabilities include:

  • Automatic detection of all application SharedPreferences.
  • Viewing and filtering key-value pairs.
  • Inspecting primitive values and JSON structures.
  • Editing values on the fly from the desktop UI.

SharedPreferences

Flocon automatically detects and displays all standard SharedPreferences files in your application. However, you can manually register them to provide custom names:

val referencedPref = context.getSharedPreferences("user_pref", Context.MODE_PRIVATE)
floconRegisterPreference(FloconSharedPreference(name = "User Settings", referencedPref))

Jetpack DataStore

To support Jetpack DataStore, ensure you have the flocon-datastore dependency:

// build.gradle.kts
debugImplementation("io.github.openflocon:flocon-datastores:version")
releaseImplementation("io.github.openflocon:flocon-datastores-no-op:version")

Then register your DataStore:

val Context.dataStore by preferencesDataStore(name = "settings")

// Registration
floconRegisterPreference(FloconDatastorePreference(name = "App Settings", context.dataStore))

Custom Implementations

You can expose any key-value store to Flocon by implementing the FloconPreference interface. This is useful for custom encrypted storage or non-standard persistence layers.

class MyCustomPreference : FloconPreference {
    override val name: String = "Custom Store"

    override suspend fun columns(): List<String> {
        return listOf("api_key", "debug_mode")
    }

    override suspend fun get(columnName: String): FloconPreferenceValue? {
        // Retrieve value from your store
        return FloconPreferenceValue(stringValue = "...")
    }

    override suspend fun set(columnName: String, value: FloconPreferenceValue) {
        // Save value to your store
    }
}

// Registration
floconRegisterPreference(MyCustomPreference())