Skip to content

Latest commit

 

History

History
46 lines (34 loc) · 2.36 KB

README.md

File metadata and controls

46 lines (34 loc) · 2.36 KB

:core:datastore

Overview

Targets: Android · JVM (Desktop) · iOS

The :core:datastore module manages structured, asynchronous data storage using Jetpack DataStore. It is primarily used for storing complex configuration objects like the connected device's local and module configurations.

Key Components

1. Data Sources

  • LocalConfigDataSource / ModuleConfigDataSource: Store the connected device's LocalConfig and LocalModuleConfig protos.
  • LocalStatsDataSource: Stores the latest local device statistics telemetry.
  • RecentAddressesDataSource: Stores a list of recently connected node addresses (BLE/USB/TCP).
  • BootloaderWarningDataSource / FirmwareRecoveryDataSource: Persist firmware-update safety state (bootloader warnings, pending recovery).

UI preferences live in :core:prefs (UiPrefsImpl, implementing UiPrefs from :core:repository), not here.

2. Serializers

LocalConfigSerializer, ModuleConfigSerializer and LocalStatsSerializer are Okio OkioSerializers that encode the protos with their Wire ADAPTER. The preference-backed data sources store their lists as JSON strings through kotlinx.serialization (DatastoreJson).

Dependency Graph

graph TB
  :core:datastore[datastore]:::kmp-library
  :core:datastore -.-> :core:common
  :core:datastore -.-> :core:model

classDef android-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-application-compose fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef compose-desktop-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef android-library fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-library-compose fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-test fill:#A0C4FF,stroke:#000,stroke-width:2px,color:#000;
classDef jvm-library fill:#BDB2FF,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library-compose fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef unknown fill:#FFADAD,stroke:#000,stroke-width:2px,color:#000;

Loading