mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
feat: service extraction (#4828)
This commit is contained in:
parent
0d0bdf9172
commit
807db83f53
76 changed files with 309 additions and 257 deletions
|
|
@ -120,7 +120,7 @@ Based on the latest codebase investigation, the following steps are proposed to
|
|||
- Parity tests exist in `core:navigation/commonTest` (`NavigationParityTest`) and `desktop/test` (`DesktopTopLevelDestinationParityTest`).
|
||||
- Remaining parity work is documented in [`decisions/navigation3-parity-2026-03.md`](./decisions/navigation3-parity-2026-03.md): serializer registration validation and platform exception tracking.
|
||||
|
||||
## Remaining App-Only ViewModels
|
||||
## App Module Thinning Status
|
||||
|
||||
All major ViewModels have now been extracted to `commonMain` and no longer rely on Android-specific subclasses. Platform-specific dependencies (like `android.net.Uri` or Location permissions) have been successfully isolated behind injected `core:repository` interfaces (e.g., `FileService`, `LocationService`).
|
||||
|
||||
|
|
@ -133,6 +133,18 @@ Extracted to shared `commonMain` (no longer app-only):
|
|||
- `ChannelViewModel` → `feature:settings/commonMain`
|
||||
- `NodeMapViewModel` → `feature:map/commonMain`
|
||||
|
||||
Extracted to core KMP modules (Android-specific implementations):
|
||||
- Android Services, WorkManager Workers, and BroadcastReceivers → `core:service/androidMain`
|
||||
- BLE, USB/Serial, TCP radio connections, and NsdManager → `core:network/androidMain`
|
||||
|
||||
Remaining to be extracted from `:app` to achieve a true thin-shell module:
|
||||
- Navigation routes (`ChannelsNavigation.kt`, `SettingsNavigation.kt`, etc.)
|
||||
- Android App Widgets (`LocalStatsWidget.kt`, `AndroidAppWidgetUpdater.kt`)
|
||||
- Message Queue implementation (`WorkManagerMessageQueue.kt`)
|
||||
- Location provider bindings (`AndroidMeshLocationManager.kt`)
|
||||
- Top-level UI composition (`ui/Main.kt`, `ui/node/AdaptiveNodeListScreen.kt`)
|
||||
- Root Activity and Koin bootstrapping (`MainActivity.kt`, `MeshUtilApplication.kt`, `MeshServiceClient.kt`)
|
||||
|
||||
## Prerelease Dependencies
|
||||
|
||||
| Dependency | Version | Why |
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@ These items address structural gaps identified in the March 2026 architecture re
|
|||
|
||||
1. **App module thinning** — Extracted ChannelViewModel, NodeMapViewModel, NodeContextMenu, EmptyDetailPlaceholder to shared modules.
|
||||
- ✅ **Done:** Extracted remaining 5 ViewModels: `SettingsViewModel`, `RadioConfigViewModel`, `DebugViewModel`, `MetricsViewModel`, `UIViewModel` to shared KMP modules.
|
||||
- **Next:** Extract service/worker/radio files from `app` to `core:service/androidMain` and `core:network/androidMain`.
|
||||
- ✅ **Done:** Extracted service, worker, and radio files from `app` to `core:service/androidMain` and `core:network/androidMain`.
|
||||
- **Next:** Extract remaining Android-specific files (e.g., Navigation files, App Widgets, message queues, and root Activity logic) out of `:app` to establish a truly thin app module.
|
||||
2. **Serial/USB transport** — direct radio connection on Desktop via jSerialComm
|
||||
3. **MQTT transport** — cloud relay operation (KMP, benefits all targets)
|
||||
4. **Evaluate KMP-native mocking** — Evaluate `mockative` or similar to replace `mockk` in `commonMain` of `core:testing` for iOS readiness.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue