State Management
Manajemen state aplikasi melalui React Context, AuthContext, dan kebijakan penyimpanan client-side.
Status: Stablev1.0.0Source Verified: Yes
Source:
src/context/AuthContext.tsx, src/hooks/useAsyncResource.tsTests: tests/unit/authPolicy.test.ts, tests/unit/useAsyncResource.test.tsState Management & Context Architecture#
Arsitektur pengelolaan status (state management) pada OrthoBreath mengutamakan kesederhanaan, prediktabilitas, dan keamanan data medis tanpa boilerplate berlebih.
1. AuthContext & Rekonsiliasi Sesi#
AuthContext (src/context/AuthContext.tsx) bertindak sebagai sumber kebenaran tunggal (Single Source of Truth) untuk status autentikasi pengguna:
- State Exposed:
user(Firebase User),profile(Role, ClinicId, Nama),loading, danerror. - Session Sync: Saat pengguna login,
AuthContextsecara otomatis memanggil/api/auth/sessionuntuk memperbarui cookie sesi server. - Auto-Refresh: Melakukan rekonsiliasi berkala terhadap klaim peran pengguna untuk mendeteksi pencabutan akses secara real-time.
2. Custom React Hooks#
useAuth: Mengakses data sesi dan profil staf aktif dari komponen mana pun.useAsyncResource(src/hooks/useAsyncResource.ts): Hook generik untuk penanganan pemanggilan API asinkron dengan statusdata,loading,error, dan fungsireload.useMqttTelemetry: Menangani koneksi EventSource (SSE) ke broker sensor tanpa membebani browser.
3. Kebijakan Penyimpanan Sisi Client (LocalStorage)#
PENTING
Data Privacy Rule: Data rekam medis sensitif pasien (NIK, nama lengkap anak, diagnosa) dilarang disimpan di LocalStorage. LocalStorage hanya diizinkan untuk preferensi UI non-kritis (tema, status collapse sidebar, dan draft form pemeriksaan sementara).