Add expo-store-review (SDK 54-matched via `expo install`) and wire a one-time in-app rating prompt into the SSE busy->idle "session completed" transition in stores/events.ts — the same signal that already drives the "Task completed" notification, so it only fires on genuine success, never on session.error. State (success count, one-time "asked" flag) persists in expo-secure-store, mirroring the consent pattern in telemetry.ts. The threshold check is split into store-review-policy.ts, free of expo imports, so it's unit-testable with plain `node --test` (same split as buildAuth in auth.ts). F-Droid/Play-Services-absent safety comes from the library itself: StoreReview.isAvailableAsync() resolves false there, so requestReview() is never called and there's no store-URL fallback configured in app.json.
1.6 KiB
1.6 KiB