Implement WhatsApp share intake and person quick actions
This commit is contained in:
@@ -75,6 +75,32 @@ Behavior notes:
|
||||
permission prompts
|
||||
- tapping a reminder notification opens reminder management UI in-app
|
||||
|
||||
## WhatsApp Share Intake (MVP)
|
||||
|
||||
Inbound WhatsApp share-intake is now wired behind a listener in the authenticated
|
||||
app shell.
|
||||
|
||||
Control flag:
|
||||
|
||||
```bash
|
||||
flutter run --dart-define=ENABLE_WHATSAPP_SHARE_INTAKE=true
|
||||
```
|
||||
|
||||
Disable explicitly:
|
||||
|
||||
```bash
|
||||
flutter run --dart-define=ENABLE_WHATSAPP_SHARE_INTAKE=false
|
||||
```
|
||||
|
||||
Behavior notes:
|
||||
|
||||
- iOS/Android: integrates with share-intent plugin (`receive_sharing_intent`)
|
||||
- shared text is parsed and ingested into:
|
||||
- person profile (auto-create when unresolved)
|
||||
- source->profile link map for follow-up matching
|
||||
- moment history (`type=whatsapp`)
|
||||
- Settings includes `Simulate WhatsApp Share` action for local/dev testing.
|
||||
|
||||
## Local Persistence Backend
|
||||
|
||||
Default local store:
|
||||
|
||||
@@ -2,6 +2,55 @@
|
||||
|
||||
Updated: 2026-02-17
|
||||
|
||||
## Latest Milestone (2026-02-17): WhatsApp Share Intake + Profile Quick Actions
|
||||
|
||||
Implemented the next major usage-flow slice focused on capture-to-action speed:
|
||||
|
||||
- WhatsApp share intake pipeline (MVP):
|
||||
- `lib/features/share_intake/whatsapp_share_listener.dart`
|
||||
- `lib/features/share_intake/whatsapp_share_parser.dart`
|
||||
- listener now ingests shared WhatsApp text into local state while
|
||||
authenticated
|
||||
- parser resolves sender-prefixed message shapes (including timestamped
|
||||
export line format)
|
||||
- Source identity linking for repeat routing:
|
||||
- `lib/features/local/local_models.dart`
|
||||
- `lib/features/local/local_repository.dart`
|
||||
- added persisted source->profile link records and shared-message history
|
||||
- repeated shares with same source identity resolve to the same profile
|
||||
- Auto profile creation on first unresolved share:
|
||||
- `LocalRepository.ingestSharedMessage(...)`
|
||||
- creates profile (when needed), writes/updates source link, and appends
|
||||
WhatsApp moment capture to that profile history
|
||||
- Profile model enhancement:
|
||||
- added optional `location` field on `PersonProfile`
|
||||
- wired into serialization, repository payload mapping, and People editor UI
|
||||
- People context quick-add:
|
||||
- `lib/features/people/people_view.dart`
|
||||
- profile detail now includes `+` quick actions:
|
||||
- Add Capture
|
||||
- Add Note
|
||||
- Add Idea
|
||||
- Add Reminder
|
||||
- each action is person-scoped and writes directly to local state
|
||||
- Settings support for dev/testing:
|
||||
- `lib/features/settings/settings_view.dart`
|
||||
- added `Simulate WhatsApp Share` flow to test ingestion without OS share UI
|
||||
- App bootstrap wiring:
|
||||
- `lib/main.dart` wraps authenticated shell with `WhatsAppShareListener`
|
||||
- runtime flag in `lib/core/config/app_config.dart`:
|
||||
`ENABLE_WHATSAPP_SHARE_INTAKE`
|
||||
- Added tests:
|
||||
- `test/features/share_intake/whatsapp_share_parser_test.dart`
|
||||
- `test/features/local/local_repository_test.dart` share-ingest/link reuse case
|
||||
- updated migration expectation in
|
||||
`test/features/local/storage/local_repository_hive_migration_test.dart`
|
||||
|
||||
Validation for this milestone:
|
||||
|
||||
- `flutter analyze` -> pass
|
||||
- `flutter test` -> pass
|
||||
|
||||
## Latest Milestone (2026-02-17): Interactive Relationship Graph + Person Insights Drilldown
|
||||
|
||||
Upgraded the dashboard graph from static visualization to interactive
|
||||
|
||||
Reference in New Issue
Block a user