|
webclient: the push permission is asked once a session, after signing in
The permission was only ever asked from the switch in Settings, and a call without a user gesture is ignored by Firefox and Safari and answered with a quiet icon by Chrome — so the app now offers a bar whose button click is that gesture. It is asked once per browser session (there is no marker that tells a fresh sign-in from a reload, so the session is the honest bound), and a refusal ends it for good: only an explicit block counts, and after that the switch in Settings is the single way back to it. The policy lives in useNotificationPrompt.js as a layer over usePush, which is untouched: the granted-but-unsubscribed trap is what makes the eligibility gate "permission is still default", otherwise the bar would silently re-subscribe whoever turned notifications off by hand. The banner itself is presentation only, and is the component proposed to gnexus-ui-kit (docs/tasks/gn-permission-banner.md there) — the kit takes the gesture, the view and the contract, never the storage keys or the timing. |
|---|
|
|
| docs/i18n.md |
|---|
| webclient/dist/assets/index-6irUhvo6.css 100644 → 0 |
|---|
| webclient/dist/assets/index-CsHD0Wo4.css 0 → 100644 |
|---|
| webclient/dist/assets/index-Cv64uvH2.js 100644 → 0 |
|---|
|
Not supported
|
| webclient/dist/assets/index-sGLNrZjw.js 0 → 100644 |
|---|
|
Not supported
|
| webclient/dist/index.html |
|---|
| webclient/dist/sw.js |
|---|
| webclient/src/App.vue |
|---|
| webclient/src/components/ui/NotificationPromptBanner.vue 0 → 100644 |
|---|
| webclient/src/composables/useNotificationPrompt.js 0 → 100644 |
|---|
| webclient/src/i18n/messages/en.js |
|---|
| webclient/src/i18n/messages/ru.js |
|---|
| webclient/src/i18n/messages/uk.js |
|---|
| webclient/tests/unit/components/appRouting.test.js |
|---|
| webclient/tests/unit/components/ui/notificationPromptBanner.test.js 0 → 100644 |
|---|
| webclient/tests/unit/composables/useNotificationPrompt.test.js 0 → 100644 |
|---|
| webclient/tests/unit/i18n/index.test.js |
|---|