feat(android): resolve gateway origin on native, skip SW, hide MVP purchases
Make the web SPA behave correctly inside the Capacitor native shell, where the bundle loads from a local origin: - New lib/origin.ts gatewayOrigin(): absolute URLs resolve to VITE_GATEWAY_URL on native (the finished-game export/share URL in Game.svelte and the Wallet site-root link), falling back to the page origin on web. transport.ts already resolved via VITE_GATEWAY_URL and is left as-is. - Skip the PWA service worker on the native channel (the assets are already local; a worker would risk serving stale content across store updates). - Hide the money-purchase UI in the MVP: new distribution.purchasesHidden() folds VITE_PAYMENTS_DISABLED and the Google Play flag. The Wallet "buy" tab shows a neutral, pointer-free note (wallet.purchasesSoon) for the RuStore MVP and keeps the RuStore stub Google-Play-only. A ?nopay mock force mirrors ?gp for the e2e. - Native env types in vite-env.d.ts. Client-only, contour-safe: no wire/proto/schema change; web/VK/Telegram unchanged. Tests: origin + purchasesHidden unit tests, a ?nopay wallet e2e. svelte-check clean, vitest green, web + native vite build clean.
This commit is contained in:
@@ -105,6 +105,22 @@ test('wallet: the Google Play build hides the money purchases behind the RuStore
|
||||
await expect(page.locator('[data-kind="value"]').first().getByTestId('buy')).toBeVisible();
|
||||
});
|
||||
|
||||
test('wallet: the native MVP hides the money purchases behind a neutral note (no store pointer)', async ({ page }) => {
|
||||
await page.goto('/?nopay');
|
||||
await page.getByRole('button', { name: /guest/i }).click();
|
||||
await expect(page.getByText('Your turn')).toBeVisible();
|
||||
await openWallet(page);
|
||||
|
||||
// Buy chips: the chip pack is gone; a neutral note shows and — unlike the Google Play build — it
|
||||
// carries no RuStore (or any store) pointer.
|
||||
await expect(page.getByTestId('purchases-hidden')).toBeVisible();
|
||||
await expect(page.getByTestId('gp-stub')).toHaveCount(0);
|
||||
await expect(page.locator('[data-kind="pack"]')).toHaveCount(0);
|
||||
// Spending earned chips still works — the values live in the Spend tab.
|
||||
await page.getByTestId('tab-spend').click();
|
||||
await expect(page.locator('[data-kind="value"]').first().getByTestId('buy')).toBeVisible();
|
||||
});
|
||||
|
||||
test('wallet: a web spend that would draw store chips confirms with a warning, then completes', async ({ page }) => {
|
||||
await loginLobby(page);
|
||||
await openWallet(page);
|
||||
|
||||
Reference in New Issue
Block a user