OneSignal / OneSignal-Website-SDK

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
383 stars 115 forks source link

[Feat] Add User change event listener and getters for OneSignal Id and external Id #1158

Closed shepherd-l closed 4 months ago

shepherd-l commented 4 months ago

Description

1 Line Summary

Adds change event listener, onesignalId and externalId properties to OneSignal.User.

Details

The User change event listener has the same name as the PushSubscription change event listener and should not be added to the same emitter because it will lead to both events being fired twice. Another emitter was added in the UserNamespace. All other namespaces still use the same static emitter from the OneSignal class.

The User emitter is static because there are two instances of UserNamespace where one is created on the property and again later when OneSignal initializes. When addEventListener is called by the dev, the event is being added before OneSignal initializes and to the property instance (new UserNamespace(false)). To keep the event on the new instance after initialization, the emitter is static.

OneSignal.ts
_initializeCoreModuleAndOSNamespace() {
  …
  OneSignal.User = new UserNamespace(true, subscription, permission); // initialize: boolean
}

static User = new UserNamespace(false); // initialize: boolean

Future considerations:

Systems Affected

Validation

Tests

Manually tested OneSignal.User.onesignalId, OneSignal.User.externalId, and User change event firing when calling login and logout on the OneSignal WebSDK Sandbox.

Info

Checklist

Programming Checklist Interfaces:

Functions:

Typescript:

Other:

Screenshots

Info

Checklist


Related Tickets



This change is Reviewable