Vitron-Front/app
fazli c4e0f2f89f fix(push): timeout every await + iOS-not-PWA early exit so subscribe never wedges
The subscribe/disable flow awaited several browser APIs that on certain
devices — most reliably iOS Safari in a non-installed PWA — return a
Promise that never resolves or rejects (requestPermission, serviceWorker
.ready, pushManager.subscribe). When any of them hung, the try/finally
never ran, so `busy` stayed true forever: the dashboard nudge button
stuck at "..." and the settings toggle refused to flip.

Every awaited step is now wrapped in withTimeout(15s). Failures surface
as toasts instead of silent hangs (subscribe success, permission denied,
generic error). iOS Safari without the site installed to home screen —
where Web Push physically cannot work — short-circuits with an
add-to-home-screen instruction before we ever try, so we don't burn a
timeout waiting for a doomed subscribe().

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-19 15:33:04 +00:00
..
assets first 2026-04-29 01:44:16 +03:30
components feat(chat+push): image attachments, day-labeled inbox with reply state, sub self-heal 2026-07-19 13:22:44 +00:00
data first 2026-04-29 01:44:16 +03:30
hooks fix(push): timeout every await + iOS-not-PWA early exit so subscribe never wedges 2026-07-19 15:33:04 +00:00
lib feat(seller): size chart editor + buyer size guide (راهنمای سایز) 2026-07-13 13:21:23 +03:30
requestHandler fix(store): don't bounce owners home, stop cross-user myStores cache 2026-07-18 13:18:23 +00:00
routes feat(seller-editor): 9x9 color grid, mandatory size, two-step category, robust image + discount save 2026-07-18 13:19:13 +00:00
styles first 2026-04-29 01:44:16 +03:30
types first 2026-04-29 01:44:16 +03:30
utils fix(notif+auth): camelCase badge fields, seller push prompt, only 401 signs out 2026-07-18 13:18:08 +00:00
auth.server.ts first 2026-04-29 01:44:16 +03:30
cookie.ts first 2026-04-29 01:44:16 +03:30
entry.client.tsx first 2026-04-29 01:44:16 +03:30
entry.server.tsx first 2026-04-29 01:44:16 +03:30
i18n.ts first 2026-04-29 01:44:16 +03:30
root.tsx fix(pwa): add apple-mobile-web-app-capable so iOS applies safe-area insets 2026-07-09 11:35:12 +03:30
sessions.server.ts Security fixes: session hardening, open redirect, SSR path injection 2026-06-14 19:02:11 +03:30
tailwind.css first 2026-04-29 01:44:16 +03:30