feat(app): смена сервера API и очистка данных устройства при выходе
Адрес бэкенда хранится в shared_preferences и читается до runApp; switchApiBaseUrl сбрасывает токены и кэш старого сервера. Выход стирает refresh-токен и sqlite-кэш ответов. Экран настроек переделан под разделы.
This commit is contained in:
@@ -70,6 +70,20 @@
|
||||
на паттерне `AsyncValueView`/`EmptyState` переводятся по этому же рецепту, независимо друг от
|
||||
друга (можно параллельно, в отдельных worktree).
|
||||
|
||||
## Жизненный цикл
|
||||
|
||||
Кэш — это вся финансовая картина в открытом sqlite/IndexedDB, поэтому он живёт не дольше сеанса:
|
||||
`AuthController` чистит его вместе с refresh-токеном при `logout()` и когда сервер ответил 401 на
|
||||
refresh. Смена адреса API (`switchApiBaseUrl`) идёт через `logout()`, так что данные старого
|
||||
сервера не показываются новому. Ошибка очистки не блокирует выход. TTL и лимита размера у кэша
|
||||
по-прежнему нет.
|
||||
|
||||
## Адрес API
|
||||
|
||||
`apiBaseUrlProvider`: сохранённый в `shared_preferences` адрес (читается в `main()` до `runApp`),
|
||||
иначе `--dart-define=API_BASE_URL`, иначе origin страницы (web) / `http://127.0.0.1:8000`.
|
||||
Меняется в Настройках и на экране входа.
|
||||
|
||||
## Веб: sqlite3.wasm + drift_worker.js
|
||||
|
||||
Собранные ассеты лежат в `app/web/sqlite3.wasm` и `app/web/drift_worker.js`, закоммичены (как
|
||||
|
||||
Reference in New Issue
Block a user