feat(app): offline-кэш GET-запросов на дашборде — фаза 5
CacheInterceptor кэширует каждый успешный GET по путь+параметры в drift (sqlite нативно, wasm+OPFS в браузере) и подменяет им сетевую ошибку; провайдер отдаёт Cached<T>, экран показывает баннер «данные на …». Контракт для остальных экранов — docs/ai/offline-cache.md. flake.nix: libsecret/pkg-config для линуксовой сборки, jq/curl для just app-web-assets (сборка sqlite3.wasm + drift_worker.js).
This commit is contained in:
@@ -22,11 +22,22 @@ web:
|
||||
|
||||
# --- flutter ---
|
||||
|
||||
build-web:
|
||||
build-web: app-web-assets
|
||||
cd app && flutter pub get && flutter build web --release
|
||||
|
||||
# fetch sqlite3.wasm + compile drift_worker.js into app/web/ (offline cache, drift/wasm+OPFS —
|
||||
# see docs/ai/offline-cache.md). Re-run whenever the drift/sqlite3 package versions change;
|
||||
# both files are committed, so this is not needed on every build.
|
||||
app-web-assets:
|
||||
cd app && flutter pub get
|
||||
v=$(cd app && flutter pub deps --json | jq -r '.packages[] | select(.name=="sqlite3") | .version') && \
|
||||
curl -fL -o app/web/sqlite3.wasm "https://github.com/simolus3/sqlite3.dart/releases/download/sqlite3-$v/sqlite3.wasm"
|
||||
d=$(jq -r '.packages[] | select(.name=="drift") | .rootUri' app/.dart_tool/package_config.json | sed 's#^file://##') && \
|
||||
cd app && dart compile js -O2 --packages=.dart_tool/package_config.json -o web/drift_worker.js "$d/web/drift_worker.dart" && \
|
||||
rm -f web/drift_worker.js.deps web/drift_worker.js.map
|
||||
|
||||
app-check:
|
||||
cd app && flutter analyze && flutter test
|
||||
cd app && flutter pub get && flutter analyze && flutter test
|
||||
|
||||
# one-off source sync against the local dev DB (zenmoney | cbr)
|
||||
pull SOURCE:
|
||||
|
||||
Reference in New Issue
Block a user