
Some checks failed
CI - 4NK_wallet / Code Quality (push) Failing after 33s
CI - 4NK_wallet / Unit Tests (push) Failing after 32s
CI - 4NK_wallet / Integration Tests (push) Failing after 9s
CI - 4NK_wallet / Security Tests (push) Failing after 27s
CI - 4NK_wallet / Docker Build & Test (push) Failing after 8s
CI - 4NK_wallet / Documentation Tests (push) Failing after 3s
CI - 4NK_wallet / Release Guard (push) Has been skipped
CI - 4NK_wallet / Performance Tests (push) Failing after 27s
CI - 4NK_wallet / Notify (push) Failing after 1s
30 lines
1.1 KiB
Markdown
30 lines
1.1 KiB
Markdown
# Architecture - sdk_wallet
|
||
|
||
## Vue d’ensemble
|
||
- Application mobile React Native
|
||
- État centralisé avec Redux Toolkit
|
||
- UI Web intégrée via `react-native-webview` qui charge `ihm_client` (build Vite)
|
||
- Pont de messages `window.postMessage` redirigé vers `ReactNativeWebView.postMessage`
|
||
|
||
## Flux
|
||
1. L’app charge `assets/ihm/index.html` (build de `ihm_client`)
|
||
2. Le script injecté remappe `window.postMessage` et expose `window.__RN_RECEIVE__`
|
||
3. `ihm_client` émet `LISTENING`, `LINK_ACCEPTED`, etc. → captés côté RN
|
||
4. RN met à jour Redux (tokens, état), puis peut envoyer des messages: `REQUEST_LINK`, `VALIDATE_TOKEN`, etc.
|
||
|
||
## Découpage
|
||
- `src/bridge/` : sérialisation et gestion des messages
|
||
- `src/components/` : `WebWallet` (WebView)
|
||
- `src/screens/` : `WalletScreen`
|
||
- `src/store/` : état (tokens, dernier message)
|
||
|
||
## Sécurité
|
||
- Respect de l’origine dans `ihm_client` (réponses vers `event.origin`)
|
||
- Les tokens ne sortent pas du store sans action explicite
|
||
|
||
## Performances
|
||
- Code splitting avec `React.lazy`/`Suspense`
|
||
- Build `ihm_client` optimisé via Vite
|
||
|
||
|