From 3113d7ddea3b25d0dc34d64fa5bc016d578aab3e Mon Sep 17 00:00:00 2001 From: Florent CHAMPIGNY Date: Fri, 26 Dec 2025 14:28:26 +0100 Subject: [PATCH] Refact doc dashboard (#469) Co-authored-by: Florent Champigny --- docs/sharedpref.md | 64 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 7 deletions(-) diff --git a/docs/sharedpref.md b/docs/sharedpref.md index e9557ad6..1b31879d 100644 --- a/docs/sharedpref.md +++ b/docs/sharedpref.md @@ -1,14 +1,64 @@ -### 🗝 SharedPreferences Explorer & Editor (android only) +### 🗝 Preferences Explorer & Editor Screenshot 2025-09-12 at 15 41 04 -Flocon provides complete access to your app’s **SharedPreferences**, which often store user tokens, feature flags, configuration options, and more. +Flocon provides complete access to your app’s 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. -- Browsing all preference files -- Viewing and filtering key-value pairs -- Inspecting primitive values and JSON structures -- **Editing values on the fly** from the desktop UI +#### SharedPreferences -This is an extremely powerful way to test different user scenarios or simulate app states, without needing to rebuild the app or manually trigger edge cases. \ No newline at end of file +Flocon automatically detects and displays all standard `SharedPreferences` files in your application. However, you can manually register them to provide custom names: + +```kotlin +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: + +```kotlin +// build.gradle.kts +implementation("io.github.openflocon:flocon-datastore:version") +``` + +Then register your DataStore: + +```kotlin +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. + +```kotlin +class MyCustomPreference : FloconPreference { + override val name: String = "Custom Store" + + override suspend fun columns(): List { + 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()) +``` \ No newline at end of file