OneSignal is a push notification service for web and mobile apps. This SDK makes it easy to integrate your website with OneSignal Push Notifications. https://onesignal.com
Other
389
stars
115
forks
source link
[Fix] Remove soft-prompt in Notifications.requestPermission #1101
Developers who call OneSignal.Notifications.requestPermission() already take the browser's requirement for a user gesture into account want to directly show the native notification permission prompt so we are removing the conditional soft-prompt.
Details
Some developers want to directly display the native notification permission prompt. However we were trying to detect if a user interaction was required without considering if the developer already met it.
There isn't a browser API to detect if the user interaction was met at either the global level or stacktrace to detect this for them. There also isn't any errors thrown or returned to show one as a fallback either. We don't want to require a parameter so instead simply just always attempt to show the native prompt.
Validation
Tests
Tested on Windows 11 22H2 on Firefox 102.14.0esr.
Info
Checklist
[X] All the automated tests pass or I explained why that is not possible
[X] I have personally tested this on my machine or explained why that is not possible
[X] I have included test coverage for these changes or explained why they are not needed
Programming Checklist
Interfaces:
[X] Don't use default export
[X] New interfaces are in model files
Functions:
[X] Don't use default export
[X] All function signatures have return types
[X] Helpers should not access any data but rather be given the data to operate on.
Typescript:
[X] No Typescript warnings
[X] Avoid silencing null/undefined warnings with the exclamation point
Other:
[X] Iteration: refrain from using elem of array syntax. Prefer forEach or use map
[X] Avoid using global OneSignal accessor for context if possible. Instead, we can pass it to function/constructor so that we don't call OneSignal.context
Screenshots
Info
Checklist
[X] I have included screenshots/recordings of the intended results or explained why they are not needed
Description
One Line Summary
Developers who call
OneSignal.Notifications.requestPermission()
already take the browser's requirement for a user gesture into account want to directly show the native notification permission prompt so we are removing the conditional soft-prompt.Details
Some developers want to directly display the native notification permission prompt. However we were trying to detect if a user interaction was required without considering if the developer already met it.
There isn't a browser API to detect if the user interaction was met at either the global level or stacktrace to detect this for them. There also isn't any errors thrown or returned to show one as a fallback either. We don't want to require a parameter so instead simply just always attempt to show the native prompt.
Validation
Tests
Tested on Windows 11 22H2 on Firefox 102.14.0esr.
Info
Checklist
Programming Checklist Interfaces:
Functions:
Typescript:
Other:
elem of array
syntax. PreferforEach
or usemap
context
if possible. Instead, we can pass it to function/constructor so that we don't callOneSignal.context
Screenshots
Info
Checklist
Related Tickets
Fixes #1098
This change is