Meshtastic-Android/core/datastore
James Rich cffbd08806
refactor: migrate core modules to Kotlin Multiplatform and consolidat… (#4735)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-06 22:06:50 +00:00
..
src/commonMain/kotlin/org/meshtastic/core/datastore refactor: migrate preferences to DataStore and decouple core:domain for KMP (#4731) 2026-03-05 20:37:35 -06:00
build.gradle.kts refactor: migrate core modules to Kotlin Multiplatform and consolidat… (#4735) 2026-03-06 22:06:50 +00:00
detekt-baseline.xml feat(wire): migrate from protobuf -> wire (#4401) 2026-02-04 00:01:12 +00:00
README.md refactor(ble): Centralize BLE logic into a core module (#4550) 2026-02-20 12:41:52 +00:00

:core:datastore

Overview

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

Key Components

1. Data Sources

  • ChannelSetDataSource: Manages the storage of radio channel configurations.
  • RecentAddressesDataSource: Stores a list of recently connected radio addresses (BLE/USB/TCP).
  • UiPreferencesDataSource: Modern replacement for SharedPreferences for UI-related settings.

2. Serializers

Uses Kotlin Serialization to convert between Protobuf/JSON and the underlying DataStore storage.

Module dependency graph

graph TB
  :core:datastore[datastore]:::android-library
  :core:datastore -.-> :core:proto

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 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-library fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef unknown fill:#FFADAD,stroke:#000,stroke-width:2px,color:#000;