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
An operation repo refactor that will help with the implementation of identity verification
Details
Adds a delta queue to the operation repo to flush all executor deltas at the same time. Now the operation repo will be in charge of enqueuing deltas and passing the delta to its correct executor. Previously, each executor was in charge of enqueuing and flushing their own delta queue.
Makes it easier to implement pausing on the operation repo for Jwt when receiving an invalid token.
This change also aligns the Web SDK more with the iOS SDK's operation repo implementation.
Groups push, sms, and email subscriptions under 1 executor. Previously push, sms, and email each had their own subscription executor.
Omits creating multiple subscription executors. Unnecessary now that there is only 1 flush from the operation repo that flushes all executors
Deprecates the pushSubscription, smsSubscription, and emailSubscription model names for 1 new name: subscriptions. This change requires a database upgrade.
Adds external id property to operations
Will be used to retry operations for users with a valid Jwt token. Accessed through Operation.model.externalId
Added to following tests below:
Unit Tests:
v5 to v6 database migration for subscription records. If a user was already logged in v5, the external id is added to each subscription record in v6.
Login test, where the external id is updated correctly for each model which will be used in deltas/operations.
Future work: add logout tests
Systems Affected
[x] WebSDK
[ ] Backend
[ ] Dashboard
Validation
Tests
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
1 Line Summary
An operation repo refactor that will help with the implementation of identity verification
Details
pushSubscription
,smsSubscription
, andemailSubscription
model names for 1 new name:subscriptions
. This change requires a database upgrade.Operation.model.externalId
Unit Tests:
Systems Affected
Validation
Tests
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
This change is