ContactUpdateService
Component Detail
Service Layer
medium complexity
mobile
0
Dependencies
0
Dependents
1
Entities
0
Integrations
Description
Handles optimistic write logic for contact edits, writing changes to the local SQLite database immediately before attempting remote sync. Automatically rolls back local changes and emits a structured error on sync failure. Enforces role-based field permissions before accepting any update.
contact-update-service
Sources & reasoning
Architecture section (line 292) explicitly names contact detail and edit as MVP screens. The accessibility mandate (line 36) defines vertical scroll and back-button navigation as hard constraints for this screen. MVP scope narrative (line 320) confirms Phase 1 for contact management. All evidence places this feature at MVP; Phase 1 = MVP by ordinal mapping.
-
docs/source/likeperson.md · line 292Contact detail, edit, and peer mentor profile screens
-
docs/source/likeperson.md · line 36Tilbakeknapp fremfor sidelengs-sveip. Vertikal scroll er normen.
-
docs/source/likeperson.md · line 320Kontaktliste og likepersonsoversikt
Responsibilities
- Write contact field updates to the local database immediately (optimistic)
- Attempt background sync with the remote backend after local write
- Roll back local changes and return a structured error if remote sync fails
- Enforce role-scoped field access rules before processing any update request
- Emit sync status events consumed by UI components for error display
Interfaces
updateContact(contactId: string, fields: Partial<ContactProfile>, role: UserRole): Promise<UpdateResult>
rollback(contactId: string, snapshot: ContactProfile): Promise<void>
onSyncStatusChange(handler: (status: SyncStatus) => void): void