onesignal-vue 1.0.2 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -1,80 +1,136 @@
1
1
  import Vue from 'vue';
2
2
 
3
3
  const ONESIGNAL_SDK_ID = 'onesignal-sdk';
4
- const ONE_SIGNAL_SCRIPT_SRC = 'https://cdn.onesignal.com/sdks/OneSignalSDK.js';
5
- const ONESIGNAL_NOT_SETUP_ERROR = 'OneSignal is not setup correctly.';
6
- const MAX_TIMEOUT = 30;
4
+ const ONE_SIGNAL_SCRIPT_SRC = "https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js";
7
5
 
8
- const VueApp: any = Vue;
6
+ // true if the script is successfully loaded from CDN.
9
7
  let isOneSignalInitialized = false;
10
- const vueOneSignalFunctionQueue: IOneSignalFunctionCall[] = [];
8
+ // true if the script fails to load from CDN. A separate flag is necessary
9
+ // to disambiguate between a CDN load failure and a delayed call to
10
+ // OneSignal#init.
11
+ let isOneSignalScriptFailed = false;
12
+
13
+ const VueApp: any = Vue;
14
+
15
+ window.OneSignalDeferred = window.OneSignalDeferred || [];
16
+
17
+ addSDKScript();
11
18
 
12
19
  /* H E L P E R S */
13
20
 
14
- const injectScript = () => {
21
+ function handleOnError() {
22
+ isOneSignalScriptFailed = true;
23
+ }
24
+
25
+ function addSDKScript() {
15
26
  const script = document.createElement('script');
16
27
  script.id = ONESIGNAL_SDK_ID;
28
+ script.defer = true;
17
29
  script.src = ONE_SIGNAL_SCRIPT_SRC;
18
- script.async = true;
19
- document.head.appendChild(script);
20
- }
21
30
 
22
- const doesOneSignalExist = () => {
23
- if (window.OneSignal) {
24
- return true;
31
+ // Always resolve whether or not the script is successfully initialized.
32
+ // This is important for users who may block cdn.onesignal.com w/ adblock.
33
+ script.onerror = () => {
34
+ handleOnError();
25
35
  }
26
- return false;
27
- }
28
36
 
29
- const processQueuedOneSignalFunctions = () => {
30
- vueOneSignalFunctionQueue.forEach(element => {
31
- const { name, args, promiseResolver } = element;
32
-
33
- if (!!promiseResolver) {
34
- OneSignalVue[name](...args).then((result: any) => {
35
- promiseResolver(result);
36
- });
37
- } else {
38
- window.OneSignal[name](...args);
39
- }
40
- });
41
- }
42
-
43
- const setupOneSignalIfMissing = () => {
44
- if (!doesOneSignalExist()) {
45
- window.OneSignal = window.OneSignal || [];
46
- }
37
+ document.head.appendChild(script);
47
38
  }
48
39
 
49
40
  /* T Y P E D E C L A R A T I O N S */
50
41
 
51
42
  declare module 'vue/types/vue' {
52
43
  interface Vue {
53
- $OneSignal: IOneSignal;
44
+ $OneSignal: IOneSignalOneSignal;
54
45
  }
55
46
  }
56
47
 
57
48
  declare global {
58
49
  interface Window {
59
- OneSignal: any;
50
+ OneSignalDeferred?: OneSignalDeferredLoadedCallback[];
51
+ safari?: {
52
+ pushNotification: any;
53
+ };
54
+ }
55
+ }
56
+
57
+ /* O N E S I G N A L A P I */
58
+
59
+ /**
60
+ * @PublicApi
61
+ */
62
+ const init = (options: IInitObject): Promise<void> => {
63
+ if (isOneSignalInitialized) {
64
+ return Promise.reject(`OneSignal is already initialized.`);
65
+ }
66
+
67
+ if (!options || !options.appId) {
68
+ throw new Error('You need to provide your OneSignal appId.');
69
+ }
70
+
71
+ if (!document) {
72
+ return Promise.reject(`Document is not defined.`);
60
73
  }
74
+
75
+ return new Promise<void>((resolve) => {
76
+ window.OneSignalDeferred?.push((OneSignal) => {
77
+ OneSignal.init(options).then(() => {
78
+ isOneSignalInitialized = true;
79
+ resolve();
80
+ });
81
+ });
82
+ });
83
+ };
84
+
85
+ /**
86
+ * The following code is copied directly from the native SDK source file BrowserSupportsPush.ts
87
+ * S T A R T
88
+ */
89
+
90
+ // Checks if the browser supports push notifications by checking if specific
91
+ // classes and properties on them exist
92
+ function isPushNotificationsSupported() {
93
+ return supportsVapidPush() || supportsSafariPush();
94
+ }
95
+
96
+ function isMacOSSafariInIframe(): boolean {
97
+ // Fallback detection for Safari on macOS in an iframe context
98
+ return window.top !== window && // isContextIframe
99
+ navigator.vendor === "Apple Computer, Inc." && // isSafari
100
+ navigator.platform === "MacIntel"; // isMacOS
101
+ }
102
+
103
+ function supportsSafariPush(): boolean {
104
+ return (window.safari && typeof window.safari.pushNotification !== "undefined") ||
105
+ isMacOSSafariInIframe();
61
106
  }
62
107
 
63
- interface IOneSignalFunctionCall {
64
- name: string;
65
- args: IArguments;
66
- promiseResolver?: Function;
108
+ // Does the browser support the standard Push API
109
+ function supportsVapidPush(): boolean {
110
+ return typeof PushSubscriptionOptions !== "undefined" &&
111
+ PushSubscriptionOptions.prototype.hasOwnProperty("applicationServerKey");
112
+ }
113
+ /* E N D */
114
+
115
+ /**
116
+ * @PublicApi
117
+ */
118
+ const isPushSupported = (): boolean => {
119
+ return isPushNotificationsSupported();
67
120
  }
68
121
 
69
122
  type Action<T> = (item: T) => void;
70
123
  interface AutoPromptOptions { force?: boolean; forceSlidedownOverNative?: boolean; slidedownPromptOptions?: IOneSignalAutoPromptOptions; }
71
- interface RegisterOptions { modalPrompt?: boolean; httpPermissionRequest?: boolean; slidedown?: boolean; autoAccept?: boolean }
72
- interface SetSMSOptions { identifierAuthHash?: string; }
73
- interface SetEmailOptions { identifierAuthHash?: string; emailAuthHash?: string; }
74
- interface TagsObject<T> { [key: string]: T; }
75
124
  interface IOneSignalAutoPromptOptions { force?: boolean; forceSlidedownOverNative?: boolean; isInUpdateMode?: boolean; categoryOptions?: IOneSignalCategories; }
76
125
  interface IOneSignalCategories { positiveUpdateButton: string; negativeUpdateButton: string; savingButtonText: string; errorButtonText: string; updateMessage: string; tags: IOneSignalTagCategory[]; }
77
126
  interface IOneSignalTagCategory { tag: string; label: string; checked?: boolean; }
127
+ type PushSubscriptionNamespaceProperties = { id: string | null | undefined; token: string | null | undefined; optedIn: boolean; };
128
+ type SubscriptionChangeEvent = { previous: PushSubscriptionNamespaceProperties; current: PushSubscriptionNamespaceProperties; };
129
+ type NotificationEventName = 'click' | 'willDisplay' | 'dismiss' | 'permissionChange' | 'permissionPromptDisplay';
130
+ interface NotificationButtonData { action?: string; title?: string; icon?: string; url?: string; }
131
+ interface StructuredNotification { id: string; content: string; heading?: string; url?: string; data?: object; rr?: string; icon?: string; image?: string; tag?: string; badge?: string; vibrate?: string; buttons?: NotificationButtonData[]; }
132
+ type SlidedownEventName = 'slidedownShown';
133
+ type OneSignalDeferredLoadedCallback = (onesignal: IOneSignalOneSignal) => void;
78
134
 
79
135
  interface IInitObject {
80
136
  appId: string;
@@ -97,787 +153,535 @@ interface IInitObject {
97
153
  [key: string]: any;
98
154
  }
99
155
 
100
- interface IOneSignal {
156
+ interface IOneSignalOneSignal {
157
+ login(externalId: string, jwtToken?: string): Promise<void>
158
+ logout(): Promise<void>
101
159
  init(options: IInitObject): Promise<void>
102
- on(event: string, listener: () => void): void
103
- off(event: string, listener: () => void): void
104
- once(event: string, listener: () => void): void
105
- isPushNotificationsEnabled(callback?: Action<boolean>): Promise<boolean>
106
- showHttpPrompt(options?: AutoPromptOptions): Promise<void>
107
- registerForPushNotifications(options?: RegisterOptions): Promise<void>
108
- setDefaultNotificationUrl(url: string): Promise<void>
160
+ setConsentGiven(consent: boolean): Promise<void>
161
+ setConsentRequired(requiresConsent: boolean): Promise<void>
162
+ Slidedown: IOneSignalSlidedown;
163
+ Notifications: IOneSignalNotifications;
164
+ Session: IOneSignalSession;
165
+ User: IOneSignalUser;
166
+ Debug: IOneSignalDebug;
167
+ [index: string]: any;
168
+ }
169
+ interface IOneSignalNotifications {
170
+ setDefaultUrl(url: string): Promise<void>
109
171
  setDefaultTitle(title: string): Promise<void>
110
- getTags(callback?: Action<any>): Promise<void>
111
- sendTag(key: string, value: any, callback?: Action<Object>): Promise<Object | null>
112
- sendTags(tags: TagsObject<any>, callback?: Action<Object>): Promise<Object | null>
113
- deleteTag(tag: string): Promise<Array<string>>
114
- deleteTags(tags: Array<string>, callback?: Action<Array<string>>): Promise<Array<string>>
115
- addListenerForNotificationOpened(callback?: Action<Notification>): Promise<void>
116
- setSubscription(newSubscription: boolean): Promise<void>
117
- showHttpPermissionRequest(options?: AutoPromptOptions): Promise<any>
118
- showNativePrompt(): Promise<void>
119
- showSlidedownPrompt(options?: AutoPromptOptions): Promise<void>
120
- showCategorySlidedown(options?: AutoPromptOptions): Promise<void>
121
- showSmsSlidedown(options?: AutoPromptOptions): Promise<void>
122
- showEmailSlidedown(options?: AutoPromptOptions): Promise<void>
123
- showSmsAndEmailSlidedown(options?: AutoPromptOptions): Promise<void>
124
- getNotificationPermission(onComplete?: Action<NotificationPermission>): Promise<NotificationPermission>
125
- getUserId(callback?: Action<string | undefined | null>): Promise<string | undefined | null>
126
- getSubscription(callback?: Action<boolean>): Promise<boolean>
127
- setEmail(email: string, options?: SetEmailOptions): Promise<string|null>
128
- setSMSNumber(smsNumber: string, options?: SetSMSOptions): Promise<string | null>
129
- logoutEmail(): Promise<void>
130
- logoutSMS(): Promise<void>
131
- setExternalUserId(externalUserId: string | undefined | null, authHash?: string): Promise<void>
132
- removeExternalUserId(): Promise<void>
133
- getExternalUserId(): Promise<string | undefined | null>
134
- provideUserConsent(consent: boolean): Promise<void>
135
- getEmailId(callback?: Action<string | undefined>): Promise<string | null | undefined>
136
- getSMSId(callback?: Action<string | undefined>): Promise<string | null | undefined>
137
- sendOutcome(outcomeName: string, outcomeWeight?: number | undefined): Promise<void>
138
- [index: string]: Function;
172
+ isPushSupported(): boolean
173
+ getPermissionStatus(onComplete: Action<NotificationPermission>): Promise<NotificationPermission>
174
+ requestPermission(): Promise<void>
175
+ addEventListener(event: NotificationEventName, listener: (obj: any) => void): void
176
+ removeEventListener(event: NotificationEventName, listener: (obj: any) => void): void
177
+ [index: string]: any;
178
+ }
179
+ interface IOneSignalSlidedown {
180
+ promptPush(options?: AutoPromptOptions): Promise<void>
181
+ promptPushCategories(options?: AutoPromptOptions): Promise<void>
182
+ promptSms(options?: AutoPromptOptions): Promise<void>
183
+ promptEmail(options?: AutoPromptOptions): Promise<void>
184
+ promptSmsAndEmail(options?: AutoPromptOptions): Promise<void>
185
+ addEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void
186
+ removeEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void
187
+ [index: string]: any;
188
+ }
189
+ interface IOneSignalDebug {
190
+ setLogLevel(logLevel: string): void
191
+ [index: string]: any;
192
+ }
193
+ interface IOneSignalSession {
194
+ sendOutcome(outcomeName: string, outcomeWeight?: number): Promise<void>
195
+ sendUniqueOutcome(outcomeName: string): Promise<void>
196
+ [index: string]: any;
197
+ }
198
+ interface IOneSignalUser {
199
+ addAlias(label: string, id: string): void
200
+ addAliases(aliases: { [key: string]: string }): void
201
+ removeAlias(label: string): void
202
+ removeAliases(labels: string[]): void
203
+ addEmail(email: string): void
204
+ removeEmail(email: string): void
205
+ addSms(smsNumber: string): void
206
+ removeSms(smsNumber: string): void
207
+ PushSubscription: IOneSignalPushSubscription;
208
+ [index: string]: any;
209
+ }
210
+ interface IOneSignalPushSubscription {
211
+ optIn(): Promise<void>
212
+ optOut(): Promise<void>
213
+ addEventListener(event: 'subscriptionChange', listener: (change: SubscriptionChangeEvent) => void): void
214
+ removeEventListener(event: 'subscriptionChange', listener: (change: SubscriptionChangeEvent) => void): void
215
+ [index: string]: any;
139
216
  }
140
217
 
141
-
142
- /* O N E S I G N A L A P I */
143
-
144
- function init(options: IInitObject) {
145
- return new Promise<void>(resolve => {
146
- if (isOneSignalInitialized) {
147
- return;
218
+ function oneSignalLogin(externalId: string, jwtToken?: string): Promise<void> {
219
+ return new Promise(function (resolve, reject) {
220
+ if (isOneSignalScriptFailed) {
221
+ reject();
148
222
  }
149
223
 
150
- injectScript();
151
- setupOneSignalIfMissing();
152
- window.OneSignal.push(() => {
153
- window.OneSignal.init(options);
154
- })
155
-
156
- const timeout = setTimeout(() => {
157
- console.error(ONESIGNAL_NOT_SETUP_ERROR);
158
- }, MAX_TIMEOUT * 1_000);
159
-
160
- window.OneSignal.push(() => {
161
- clearTimeout(timeout);
162
- isOneSignalInitialized = true;
163
- processQueuedOneSignalFunctions();
164
- resolve();
165
- });
224
+ try {
225
+ window.OneSignalDeferred?.push((OneSignal) => {
226
+ OneSignal.login(externalId, jwtToken)
227
+ .then(value => resolve(value))
228
+ .catch(error => reject(error));
229
+ });
230
+ } catch (error) {
231
+ reject(error);
232
+ }
166
233
  });
167
234
  }
168
235
 
169
- function on(event: string, listener: () => void): void {
170
- if (!doesOneSignalExist()) {
171
- vueOneSignalFunctionQueue.push({
172
- name: 'on',
173
- args: arguments,
174
- });
175
- return;
236
+ function oneSignalLogout(): Promise<void> {
237
+ return new Promise(function (resolve, reject) {
238
+ if (isOneSignalScriptFailed) {
239
+ reject();
176
240
  }
177
241
 
178
- window.OneSignal.push(() => {
179
- window.OneSignal.on(event, listener)
180
- });
181
- }
182
-
183
- function off(event: string, listener: () => void): void {
184
- if (!doesOneSignalExist()) {
185
- vueOneSignalFunctionQueue.push({
186
- name: 'off',
187
- args: arguments,
242
+ try {
243
+ window.OneSignalDeferred?.push((OneSignal) => {
244
+ OneSignal.logout()
245
+ .then(value => resolve(value))
246
+ .catch(error => reject(error));
188
247
  });
189
- return;
248
+ } catch (error) {
249
+ reject(error);
190
250
  }
251
+ });
252
+ }
191
253
 
192
- window.OneSignal.push(() => {
193
- window.OneSignal.off(event, listener)
194
- });
195
- }
196
-
197
- function once(event: string, listener: () => void): void {
198
- if (!doesOneSignalExist()) {
199
- vueOneSignalFunctionQueue.push({
200
- name: 'once',
201
- args: arguments,
202
- });
203
- return;
254
+ function oneSignalSetConsentGiven(consent: boolean): Promise<void> {
255
+ return new Promise(function (resolve, reject) {
256
+ if (isOneSignalScriptFailed) {
257
+ reject();
204
258
  }
205
259
 
206
- window.OneSignal.push(() => {
207
- window.OneSignal.once(event, listener)
208
- });
209
- }
210
-
211
- function isPushNotificationsEnabled(callback?: Action<boolean>): Promise<boolean> {
212
- return new Promise(function (resolve, reject) {
213
- if (!doesOneSignalExist()) {
214
- vueOneSignalFunctionQueue.push({
215
- name: 'isPushNotificationsEnabled',
216
- args: arguments,
217
- promiseResolver: resolve,
218
- });
219
- return;
220
- }
221
-
222
- window.OneSignal.push(() => {
223
- window.OneSignal.isPushNotificationsEnabled(callback)
260
+ try {
261
+ window.OneSignalDeferred?.push((OneSignal) => {
262
+ OneSignal.setConsentGiven(consent)
224
263
  .then(value => resolve(value))
225
264
  .catch(error => reject(error));
226
265
  });
227
- });
228
- }
266
+ } catch (error) {
267
+ reject(error);
268
+ }
269
+ });
270
+ }
229
271
 
230
- function showHttpPrompt(options?: AutoPromptOptions): Promise<void> {
231
- return new Promise(function (resolve, reject) {
232
- if (!doesOneSignalExist()) {
233
- vueOneSignalFunctionQueue.push({
234
- name: 'showHttpPrompt',
235
- args: arguments,
236
- promiseResolver: resolve,
237
- });
238
- return;
239
- }
240
-
241
- window.OneSignal.push(() => {
242
- window.OneSignal.showHttpPrompt(options)
243
- .then(value => resolve(value))
244
- .catch(error => reject(error));
245
- });
246
- });
247
- }
272
+ function oneSignalSetConsentRequired(requiresConsent: boolean): Promise<void> {
273
+ return new Promise(function (resolve, reject) {
274
+ if (isOneSignalScriptFailed) {
275
+ reject();
276
+ }
248
277
 
249
- function registerForPushNotifications(options?: RegisterOptions): Promise<void> {
250
- return new Promise(function (resolve, reject) {
251
- if (!doesOneSignalExist()) {
252
- vueOneSignalFunctionQueue.push({
253
- name: 'registerForPushNotifications',
254
- args: arguments,
255
- promiseResolver: resolve,
256
- });
257
- return;
258
- }
259
-
260
- window.OneSignal.push(() => {
261
- window.OneSignal.registerForPushNotifications(options)
278
+ try {
279
+ window.OneSignalDeferred?.push((OneSignal) => {
280
+ OneSignal.setConsentRequired(requiresConsent)
262
281
  .then(value => resolve(value))
263
282
  .catch(error => reject(error));
264
283
  });
265
- });
266
- }
284
+ } catch (error) {
285
+ reject(error);
286
+ }
287
+ });
288
+ }
267
289
 
268
- function setDefaultNotificationUrl(url: string): Promise<void> {
269
- return new Promise(function (resolve, reject) {
270
- if (!doesOneSignalExist()) {
271
- vueOneSignalFunctionQueue.push({
272
- name: 'setDefaultNotificationUrl',
273
- args: arguments,
274
- promiseResolver: resolve,
275
- });
276
- return;
277
- }
278
-
279
- window.OneSignal.push(() => {
280
- window.OneSignal.setDefaultNotificationUrl(url)
281
- .then(value => resolve(value))
282
- .catch(error => reject(error));
283
- });
284
- });
285
- }
290
+ function slidedownPromptPush(options?: AutoPromptOptions): Promise<void> {
291
+ return new Promise(function (resolve, reject) {
292
+ if (isOneSignalScriptFailed) {
293
+ reject();
294
+ }
286
295
 
287
- function setDefaultTitle(title: string): Promise<void> {
288
- return new Promise(function (resolve, reject) {
289
- if (!doesOneSignalExist()) {
290
- vueOneSignalFunctionQueue.push({
291
- name: 'setDefaultTitle',
292
- args: arguments,
293
- promiseResolver: resolve,
294
- });
295
- return;
296
- }
297
-
298
- window.OneSignal.push(() => {
299
- window.OneSignal.setDefaultTitle(title)
296
+ try {
297
+ window.OneSignalDeferred?.push((OneSignal) => {
298
+ OneSignal.Slidedown.promptPush(options)
300
299
  .then(value => resolve(value))
301
300
  .catch(error => reject(error));
302
301
  });
303
- });
304
- }
302
+ } catch (error) {
303
+ reject(error);
304
+ }
305
+ });
306
+ }
305
307
 
306
- function getTags(callback?: Action<any>): Promise<void> {
307
- return new Promise(function (resolve, reject) {
308
- if (!doesOneSignalExist()) {
309
- vueOneSignalFunctionQueue.push({
310
- name: 'getTags',
311
- args: arguments,
312
- promiseResolver: resolve,
313
- });
314
- return;
315
- }
316
-
317
- window.OneSignal.push(() => {
318
- window.OneSignal.getTags(callback)
319
- .then(value => resolve(value))
320
- .catch(error => reject(error));
321
- });
322
- });
323
- }
308
+ function slidedownPromptPushCategories(options?: AutoPromptOptions): Promise<void> {
309
+ return new Promise(function (resolve, reject) {
310
+ if (isOneSignalScriptFailed) {
311
+ reject();
312
+ }
324
313
 
325
- function sendTag(key: string, value: any, callback?: Action<Object>): Promise<Object | null> {
326
- return new Promise(function (resolve, reject) {
327
- if (!doesOneSignalExist()) {
328
- vueOneSignalFunctionQueue.push({
329
- name: 'sendTag',
330
- args: arguments,
331
- promiseResolver: resolve,
332
- });
333
- return;
334
- }
335
-
336
- window.OneSignal.push(() => {
337
- window.OneSignal.sendTag(key, value, callback)
314
+ try {
315
+ window.OneSignalDeferred?.push((OneSignal) => {
316
+ OneSignal.Slidedown.promptPushCategories(options)
338
317
  .then(value => resolve(value))
339
318
  .catch(error => reject(error));
340
319
  });
341
- });
342
- }
320
+ } catch (error) {
321
+ reject(error);
322
+ }
323
+ });
324
+ }
343
325
 
344
- function sendTags(tags: TagsObject<any>, callback?: Action<Object>): Promise<Object | null> {
345
- return new Promise(function (resolve, reject) {
346
- if (!doesOneSignalExist()) {
347
- vueOneSignalFunctionQueue.push({
348
- name: 'sendTags',
349
- args: arguments,
350
- promiseResolver: resolve,
351
- });
352
- return;
353
- }
354
-
355
- window.OneSignal.push(() => {
356
- window.OneSignal.sendTags(tags, callback)
357
- .then(value => resolve(value))
358
- .catch(error => reject(error));
359
- });
360
- });
361
- }
326
+ function slidedownPromptSms(options?: AutoPromptOptions): Promise<void> {
327
+ return new Promise(function (resolve, reject) {
328
+ if (isOneSignalScriptFailed) {
329
+ reject();
330
+ }
362
331
 
363
- function deleteTag(tag: string): Promise<Array<string>> {
364
- return new Promise(function (resolve, reject) {
365
- if (!doesOneSignalExist()) {
366
- vueOneSignalFunctionQueue.push({
367
- name: 'deleteTag',
368
- args: arguments,
369
- promiseResolver: resolve,
370
- });
371
- return;
372
- }
373
-
374
- window.OneSignal.push(() => {
375
- window.OneSignal.deleteTag(tag)
332
+ try {
333
+ window.OneSignalDeferred?.push((OneSignal) => {
334
+ OneSignal.Slidedown.promptSms(options)
376
335
  .then(value => resolve(value))
377
336
  .catch(error => reject(error));
378
337
  });
379
- });
380
- }
338
+ } catch (error) {
339
+ reject(error);
340
+ }
341
+ });
342
+ }
381
343
 
382
- function deleteTags(tags: Array<string>, callback?: Action<Array<string>>): Promise<Array<string>> {
383
- return new Promise(function (resolve, reject) {
384
- if (!doesOneSignalExist()) {
385
- vueOneSignalFunctionQueue.push({
386
- name: 'deleteTags',
387
- args: arguments,
388
- promiseResolver: resolve,
389
- });
390
- return;
391
- }
392
-
393
- window.OneSignal.push(() => {
394
- window.OneSignal.deleteTags(tags, callback)
395
- .then(value => resolve(value))
396
- .catch(error => reject(error));
397
- });
398
- });
399
- }
344
+ function slidedownPromptEmail(options?: AutoPromptOptions): Promise<void> {
345
+ return new Promise(function (resolve, reject) {
346
+ if (isOneSignalScriptFailed) {
347
+ reject();
348
+ }
400
349
 
401
- function addListenerForNotificationOpened(callback?: Action<Notification>): Promise<void> {
402
- return new Promise(function (resolve, reject) {
403
- if (!doesOneSignalExist()) {
404
- vueOneSignalFunctionQueue.push({
405
- name: 'addListenerForNotificationOpened',
406
- args: arguments,
407
- promiseResolver: resolve,
408
- });
409
- return;
410
- }
411
-
412
- window.OneSignal.push(() => {
413
- window.OneSignal.addListenerForNotificationOpened(callback)
350
+ try {
351
+ window.OneSignalDeferred?.push((OneSignal) => {
352
+ OneSignal.Slidedown.promptEmail(options)
414
353
  .then(value => resolve(value))
415
354
  .catch(error => reject(error));
416
355
  });
417
- });
418
- }
356
+ } catch (error) {
357
+ reject(error);
358
+ }
359
+ });
360
+ }
419
361
 
420
- function setSubscription(newSubscription: boolean): Promise<void> {
421
- return new Promise(function (resolve, reject) {
422
- if (!doesOneSignalExist()) {
423
- vueOneSignalFunctionQueue.push({
424
- name: 'setSubscription',
425
- args: arguments,
426
- promiseResolver: resolve,
427
- });
428
- return;
429
- }
430
-
431
- window.OneSignal.push(() => {
432
- window.OneSignal.setSubscription(newSubscription)
433
- .then(value => resolve(value))
434
- .catch(error => reject(error));
435
- });
436
- });
437
- }
362
+ function slidedownPromptSmsAndEmail(options?: AutoPromptOptions): Promise<void> {
363
+ return new Promise(function (resolve, reject) {
364
+ if (isOneSignalScriptFailed) {
365
+ reject();
366
+ }
438
367
 
439
- function showHttpPermissionRequest(options?: AutoPromptOptions): Promise<any> {
440
- return new Promise(function (resolve, reject) {
441
- if (!doesOneSignalExist()) {
442
- vueOneSignalFunctionQueue.push({
443
- name: 'showHttpPermissionRequest',
444
- args: arguments,
445
- promiseResolver: resolve,
446
- });
447
- return;
448
- }
449
-
450
- window.OneSignal.push(() => {
451
- window.OneSignal.showHttpPermissionRequest(options)
368
+ try {
369
+ window.OneSignalDeferred?.push((OneSignal) => {
370
+ OneSignal.Slidedown.promptSmsAndEmail(options)
452
371
  .then(value => resolve(value))
453
372
  .catch(error => reject(error));
454
373
  });
455
- });
456
- }
374
+ } catch (error) {
375
+ reject(error);
376
+ }
377
+ });
378
+ }
457
379
 
458
- function showNativePrompt(): Promise<void> {
459
- return new Promise(function (resolve, reject) {
460
- if (!doesOneSignalExist()) {
461
- vueOneSignalFunctionQueue.push({
462
- name: 'showNativePrompt',
463
- args: arguments,
464
- promiseResolver: resolve,
465
- });
466
- return;
467
- }
468
-
469
- window.OneSignal.push(() => {
470
- window.OneSignal.showNativePrompt()
471
- .then(value => resolve(value))
472
- .catch(error => reject(error));
473
- });
474
- });
475
- }
380
+ function slidedownAddEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void {
381
+ window.OneSignalDeferred?.push((OneSignal) => {
382
+ OneSignal.Slidedown.addEventListener(event, listener)
383
+ });
384
+ }
476
385
 
477
- function showSlidedownPrompt(options?: AutoPromptOptions): Promise<void> {
478
- return new Promise(function (resolve, reject) {
479
- if (!doesOneSignalExist()) {
480
- vueOneSignalFunctionQueue.push({
481
- name: 'showSlidedownPrompt',
482
- args: arguments,
483
- promiseResolver: resolve,
484
- });
485
- return;
486
- }
487
-
488
- window.OneSignal.push(() => {
489
- window.OneSignal.showSlidedownPrompt(options)
490
- .then(value => resolve(value))
491
- .catch(error => reject(error));
492
- });
493
- });
494
- }
386
+ function slidedownRemoveEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void {
387
+ window.OneSignalDeferred?.push((OneSignal) => {
388
+ OneSignal.Slidedown.removeEventListener(event, listener)
389
+ });
390
+ }
495
391
 
496
- function showCategorySlidedown(options?: AutoPromptOptions): Promise<void> {
497
- return new Promise(function (resolve, reject) {
498
- if (!doesOneSignalExist()) {
499
- vueOneSignalFunctionQueue.push({
500
- name: 'showCategorySlidedown',
501
- args: arguments,
502
- promiseResolver: resolve,
503
- });
504
- return;
505
- }
506
-
507
- window.OneSignal.push(() => {
508
- window.OneSignal.showCategorySlidedown(options)
509
- .then(value => resolve(value))
510
- .catch(error => reject(error));
511
- });
512
- });
513
- }
392
+ function notificationsSetDefaultUrl(url: string): Promise<void> {
393
+ return new Promise(function (resolve, reject) {
394
+ if (isOneSignalScriptFailed) {
395
+ reject();
396
+ }
514
397
 
515
- function showSmsSlidedown(options?: AutoPromptOptions): Promise<void> {
516
- return new Promise(function (resolve, reject) {
517
- if (!doesOneSignalExist()) {
518
- vueOneSignalFunctionQueue.push({
519
- name: 'showSmsSlidedown',
520
- args: arguments,
521
- promiseResolver: resolve,
522
- });
523
- return;
524
- }
525
-
526
- window.OneSignal.push(() => {
527
- window.OneSignal.showSmsSlidedown(options)
398
+ try {
399
+ window.OneSignalDeferred?.push((OneSignal) => {
400
+ OneSignal.Notifications.setDefaultUrl(url)
528
401
  .then(value => resolve(value))
529
402
  .catch(error => reject(error));
530
403
  });
531
- });
532
- }
404
+ } catch (error) {
405
+ reject(error);
406
+ }
407
+ });
408
+ }
533
409
 
534
- function showEmailSlidedown(options?: AutoPromptOptions): Promise<void> {
535
- return new Promise(function (resolve, reject) {
536
- if (!doesOneSignalExist()) {
537
- vueOneSignalFunctionQueue.push({
538
- name: 'showEmailSlidedown',
539
- args: arguments,
540
- promiseResolver: resolve,
541
- });
542
- return;
543
- }
544
-
545
- window.OneSignal.push(() => {
546
- window.OneSignal.showEmailSlidedown(options)
547
- .then(value => resolve(value))
548
- .catch(error => reject(error));
549
- });
550
- });
551
- }
410
+ function notificationsSetDefaultTitle(title: string): Promise<void> {
411
+ return new Promise(function (resolve, reject) {
412
+ if (isOneSignalScriptFailed) {
413
+ reject();
414
+ }
552
415
 
553
- function showSmsAndEmailSlidedown(options?: AutoPromptOptions): Promise<void> {
554
- return new Promise(function (resolve, reject) {
555
- if (!doesOneSignalExist()) {
556
- vueOneSignalFunctionQueue.push({
557
- name: 'showSmsAndEmailSlidedown',
558
- args: arguments,
559
- promiseResolver: resolve,
560
- });
561
- return;
562
- }
563
-
564
- window.OneSignal.push(() => {
565
- window.OneSignal.showSmsAndEmailSlidedown(options)
416
+ try {
417
+ window.OneSignalDeferred?.push((OneSignal) => {
418
+ OneSignal.Notifications.setDefaultTitle(title)
566
419
  .then(value => resolve(value))
567
420
  .catch(error => reject(error));
568
421
  });
569
- });
570
- }
422
+ } catch (error) {
423
+ reject(error);
424
+ }
425
+ });
426
+ }
571
427
 
572
- function getNotificationPermission(onComplete?: Action<NotificationPermission>): Promise<NotificationPermission> {
573
- return new Promise(function (resolve, reject) {
574
- if (!doesOneSignalExist()) {
575
- vueOneSignalFunctionQueue.push({
576
- name: 'getNotificationPermission',
577
- args: arguments,
578
- promiseResolver: resolve,
579
- });
580
- return;
581
- }
582
-
583
- window.OneSignal.push(() => {
584
- window.OneSignal.getNotificationPermission(onComplete)
585
- .then(value => resolve(value))
586
- .catch(error => reject(error));
587
- });
588
- });
589
- }
428
+ function notificationsGetPermissionStatus(onComplete: Action<NotificationPermission>): Promise<NotificationPermission> {
429
+ return new Promise(function (resolve, reject) {
430
+ if (isOneSignalScriptFailed) {
431
+ reject();
432
+ }
590
433
 
591
- function getUserId(callback?: Action<string | undefined | null>): Promise<string | undefined | null> {
592
- return new Promise(function (resolve, reject) {
593
- if (!doesOneSignalExist()) {
594
- vueOneSignalFunctionQueue.push({
595
- name: 'getUserId',
596
- args: arguments,
597
- promiseResolver: resolve,
598
- });
599
- return;
600
- }
601
-
602
- window.OneSignal.push(() => {
603
- window.OneSignal.getUserId(callback)
434
+ try {
435
+ window.OneSignalDeferred?.push((OneSignal) => {
436
+ OneSignal.Notifications.getPermissionStatus(onComplete)
604
437
  .then(value => resolve(value))
605
438
  .catch(error => reject(error));
606
439
  });
607
- });
608
- }
440
+ } catch (error) {
441
+ reject(error);
442
+ }
443
+ });
444
+ }
609
445
 
610
- function getSubscription(callback?: Action<boolean>): Promise<boolean> {
611
- return new Promise(function (resolve, reject) {
612
- if (!doesOneSignalExist()) {
613
- vueOneSignalFunctionQueue.push({
614
- name: 'getSubscription',
615
- args: arguments,
616
- promiseResolver: resolve,
617
- });
618
- return;
619
- }
620
-
621
- window.OneSignal.push(() => {
622
- window.OneSignal.getSubscription(callback)
623
- .then(value => resolve(value))
624
- .catch(error => reject(error));
625
- });
626
- });
627
- }
446
+ function notificationsRequestPermission(): Promise<void> {
447
+ return new Promise(function (resolve, reject) {
448
+ if (isOneSignalScriptFailed) {
449
+ reject();
450
+ }
628
451
 
629
- function setEmail(email: string, options?: SetEmailOptions): Promise<string|null> {
630
- return new Promise(function (resolve, reject) {
631
- if (!doesOneSignalExist()) {
632
- vueOneSignalFunctionQueue.push({
633
- name: 'setEmail',
634
- args: arguments,
635
- promiseResolver: resolve,
636
- });
637
- return;
638
- }
639
-
640
- window.OneSignal.push(() => {
641
- window.OneSignal.setEmail(email, options)
452
+ try {
453
+ window.OneSignalDeferred?.push((OneSignal) => {
454
+ OneSignal.Notifications.requestPermission()
642
455
  .then(value => resolve(value))
643
456
  .catch(error => reject(error));
644
457
  });
645
- });
646
- }
458
+ } catch (error) {
459
+ reject(error);
460
+ }
461
+ });
462
+ }
647
463
 
648
- function setSMSNumber(smsNumber: string, options?: SetSMSOptions): Promise<string | null> {
649
- return new Promise(function (resolve, reject) {
650
- if (!doesOneSignalExist()) {
651
- vueOneSignalFunctionQueue.push({
652
- name: 'setSMSNumber',
653
- args: arguments,
654
- promiseResolver: resolve,
655
- });
656
- return;
657
- }
658
-
659
- window.OneSignal.push(() => {
660
- window.OneSignal.setSMSNumber(smsNumber, options)
661
- .then(value => resolve(value))
662
- .catch(error => reject(error));
663
- });
664
- });
665
- }
464
+ function notificationsAddEventListener(event: 'click' | 'willDisplay' | 'dismiss', listener: (obj: StructuredNotification) => void): void;
465
+ function notificationsAddEventListener(event: 'permissionChange', listener: (obj: { to: NotificationPermission }) => void): void;
466
+ function notificationsAddEventListener(event: 'permissionPromptDisplay', listener: () => void): void;
666
467
 
667
- function logoutEmail(): Promise<void> {
668
- return new Promise(function (resolve, reject) {
669
- if (!doesOneSignalExist()) {
670
- vueOneSignalFunctionQueue.push({
671
- name: 'logoutEmail',
672
- args: arguments,
673
- promiseResolver: resolve,
674
- });
675
- return;
676
- }
677
-
678
- window.OneSignal.push(() => {
679
- window.OneSignal.logoutEmail()
680
- .then(value => resolve(value))
681
- .catch(error => reject(error));
682
- });
683
- });
684
- }
468
+ function notificationsAddEventListener(event: NotificationEventName, listener: (obj: any) => void): void {
469
+ window.OneSignalDeferred?.push((OneSignal) => {
470
+ OneSignal.Notifications.addEventListener(event, listener)
471
+ });
472
+ }
685
473
 
686
- function logoutSMS(): Promise<void> {
687
- return new Promise(function (resolve, reject) {
688
- if (!doesOneSignalExist()) {
689
- vueOneSignalFunctionQueue.push({
690
- name: 'logoutSMS',
691
- args: arguments,
692
- promiseResolver: resolve,
693
- });
694
- return;
695
- }
696
-
697
- window.OneSignal.push(() => {
698
- window.OneSignal.logoutSMS()
699
- .then(value => resolve(value))
700
- .catch(error => reject(error));
701
- });
702
- });
703
- }
474
+ function notificationsRemoveEventListener(event: 'click' | 'willDisplay' | 'dismiss', listener: (obj: StructuredNotification) => void): void;
475
+ function notificationsRemoveEventListener(event: 'permissionChange', listener: (obj: { to: NotificationPermission }) => void): void;
476
+ function notificationsRemoveEventListener(event: 'permissionPromptDisplay', listener: () => void): void;
704
477
 
705
- function setExternalUserId(externalUserId: string | undefined | null, authHash?: string): Promise<void> {
706
- return new Promise(function (resolve, reject) {
707
- if (!doesOneSignalExist()) {
708
- vueOneSignalFunctionQueue.push({
709
- name: 'setExternalUserId',
710
- args: arguments,
711
- promiseResolver: resolve,
712
- });
713
- return;
714
- }
715
-
716
- window.OneSignal.push(() => {
717
- window.OneSignal.setExternalUserId(externalUserId, authHash)
718
- .then(value => resolve(value))
719
- .catch(error => reject(error));
720
- });
721
- });
722
- }
478
+ function notificationsRemoveEventListener(event: NotificationEventName, listener: (obj: any) => void): void {
479
+ window.OneSignalDeferred?.push((OneSignal) => {
480
+ OneSignal.Notifications.removeEventListener(event, listener)
481
+ });
482
+ }
723
483
 
724
- function removeExternalUserId(): Promise<void> {
725
- return new Promise(function (resolve, reject) {
726
- if (!doesOneSignalExist()) {
727
- vueOneSignalFunctionQueue.push({
728
- name: 'removeExternalUserId',
729
- args: arguments,
730
- promiseResolver: resolve,
731
- });
732
- return;
733
- }
734
-
735
- window.OneSignal.push(() => {
736
- window.OneSignal.removeExternalUserId()
737
- .then(value => resolve(value))
738
- .catch(error => reject(error));
739
- });
740
- });
741
- }
484
+ function sessionSendOutcome(outcomeName: string, outcomeWeight?: number): Promise<void> {
485
+ return new Promise(function (resolve, reject) {
486
+ if (isOneSignalScriptFailed) {
487
+ reject();
488
+ }
742
489
 
743
- function getExternalUserId(): Promise<string | undefined | null> {
744
- return new Promise(function (resolve, reject) {
745
- if (!doesOneSignalExist()) {
746
- vueOneSignalFunctionQueue.push({
747
- name: 'getExternalUserId',
748
- args: arguments,
749
- promiseResolver: resolve,
750
- });
751
- return;
752
- }
753
-
754
- window.OneSignal.push(() => {
755
- window.OneSignal.getExternalUserId()
490
+ try {
491
+ window.OneSignalDeferred?.push((OneSignal) => {
492
+ OneSignal.Session.sendOutcome(outcomeName, outcomeWeight)
756
493
  .then(value => resolve(value))
757
494
  .catch(error => reject(error));
758
495
  });
759
- });
760
- }
496
+ } catch (error) {
497
+ reject(error);
498
+ }
499
+ });
500
+ }
761
501
 
762
- function provideUserConsent(consent: boolean): Promise<void> {
763
- return new Promise(function (resolve, reject) {
764
- if (!doesOneSignalExist()) {
765
- vueOneSignalFunctionQueue.push({
766
- name: 'provideUserConsent',
767
- args: arguments,
768
- promiseResolver: resolve,
769
- });
770
- return;
771
- }
772
-
773
- window.OneSignal.push(() => {
774
- window.OneSignal.provideUserConsent(consent)
775
- .then(value => resolve(value))
776
- .catch(error => reject(error));
777
- });
778
- });
779
- }
502
+ function sessionSendUniqueOutcome(outcomeName: string): Promise<void> {
503
+ return new Promise(function (resolve, reject) {
504
+ if (isOneSignalScriptFailed) {
505
+ reject();
506
+ }
780
507
 
781
- function getEmailId(callback?: Action<string | undefined>): Promise<string | null | undefined> {
782
- return new Promise(function (resolve, reject) {
783
- if (!doesOneSignalExist()) {
784
- vueOneSignalFunctionQueue.push({
785
- name: 'getEmailId',
786
- args: arguments,
787
- promiseResolver: resolve,
788
- });
789
- return;
790
- }
791
-
792
- window.OneSignal.push(() => {
793
- window.OneSignal.getEmailId(callback)
508
+ try {
509
+ window.OneSignalDeferred?.push((OneSignal) => {
510
+ OneSignal.Session.sendUniqueOutcome(outcomeName)
794
511
  .then(value => resolve(value))
795
512
  .catch(error => reject(error));
796
513
  });
797
- });
798
- }
514
+ } catch (error) {
515
+ reject(error);
516
+ }
517
+ });
518
+ }
519
+
520
+ function userAddAlias(label: string, id: string): void {
521
+ window.OneSignalDeferred?.push((OneSignal) => {
522
+ OneSignal.User.addAlias(label, id)
523
+ });
524
+ }
525
+
526
+ function userAddAliases(aliases: { [key: string]: string }): void {
527
+ window.OneSignalDeferred?.push((OneSignal) => {
528
+ OneSignal.User.addAliases(aliases)
529
+ });
530
+ }
531
+
532
+ function userRemoveAlias(label: string): void {
533
+ window.OneSignalDeferred?.push((OneSignal) => {
534
+ OneSignal.User.removeAlias(label)
535
+ });
536
+ }
537
+
538
+ function userRemoveAliases(labels: string[]): void {
539
+ window.OneSignalDeferred?.push((OneSignal) => {
540
+ OneSignal.User.removeAliases(labels)
541
+ });
542
+ }
543
+
544
+ function userAddEmail(email: string): void {
545
+ window.OneSignalDeferred?.push((OneSignal) => {
546
+ OneSignal.User.addEmail(email)
547
+ });
548
+ }
549
+
550
+ function userRemoveEmail(email: string): void {
551
+ window.OneSignalDeferred?.push((OneSignal) => {
552
+ OneSignal.User.removeEmail(email)
553
+ });
554
+ }
555
+
556
+ function userAddSms(smsNumber: string): void {
557
+ window.OneSignalDeferred?.push((OneSignal) => {
558
+ OneSignal.User.addSms(smsNumber)
559
+ });
560
+ }
561
+
562
+ function userRemoveSms(smsNumber: string): void {
563
+ window.OneSignalDeferred?.push((OneSignal) => {
564
+ OneSignal.User.removeSms(smsNumber)
565
+ });
566
+ }
567
+
568
+ function pushSubscriptionOptIn(): Promise<void> {
569
+ return new Promise(function (resolve, reject) {
570
+ if (isOneSignalScriptFailed) {
571
+ reject();
572
+ }
799
573
 
800
- function getSMSId(callback?: Action<string | undefined>): Promise<string | null | undefined> {
801
- return new Promise(function (resolve, reject) {
802
- if (!doesOneSignalExist()) {
803
- vueOneSignalFunctionQueue.push({
804
- name: 'getSMSId',
805
- args: arguments,
806
- promiseResolver: resolve,
807
- });
808
- return;
809
- }
810
-
811
- window.OneSignal.push(() => {
812
- window.OneSignal.getSMSId(callback)
574
+ try {
575
+ window.OneSignalDeferred?.push((OneSignal) => {
576
+ OneSignal.User.PushSubscription.optIn()
813
577
  .then(value => resolve(value))
814
578
  .catch(error => reject(error));
815
579
  });
816
- });
817
- }
580
+ } catch (error) {
581
+ reject(error);
582
+ }
583
+ });
584
+ }
585
+
586
+ function pushSubscriptionOptOut(): Promise<void> {
587
+ return new Promise(function (resolve, reject) {
588
+ if (isOneSignalScriptFailed) {
589
+ reject();
590
+ }
818
591
 
819
- function sendOutcome(outcomeName: string, outcomeWeight?: number | undefined): Promise<void> {
820
- return new Promise(function (resolve, reject) {
821
- if (!doesOneSignalExist()) {
822
- vueOneSignalFunctionQueue.push({
823
- name: 'sendOutcome',
824
- args: arguments,
825
- promiseResolver: resolve,
826
- });
827
- return;
828
- }
829
-
830
- window.OneSignal.push(() => {
831
- window.OneSignal.sendOutcome(outcomeName, outcomeWeight)
592
+ try {
593
+ window.OneSignalDeferred?.push((OneSignal) => {
594
+ OneSignal.User.PushSubscription.optOut()
832
595
  .then(value => resolve(value))
833
596
  .catch(error => reject(error));
834
597
  });
835
- });
836
- }
598
+ } catch (error) {
599
+ reject(error);
600
+ }
601
+ });
602
+ }
603
+
604
+ function pushSubscriptionAddEventListener(event: 'subscriptionChange', listener: (change: SubscriptionChangeEvent) => void): void {
605
+ window.OneSignalDeferred?.push((OneSignal) => {
606
+ OneSignal.User.PushSubscription.addEventListener(event, listener)
607
+ });
608
+ }
609
+
610
+ function pushSubscriptionRemoveEventListener(event: 'subscriptionChange', listener: (change: SubscriptionChangeEvent) => void): void {
611
+ window.OneSignalDeferred?.push((OneSignal) => {
612
+ OneSignal.User.PushSubscription.removeEventListener(event, listener)
613
+ });
614
+ }
615
+
616
+ function debugSetLogLevel(logLevel: string): void {
617
+ window.OneSignalDeferred?.push((OneSignal) => {
618
+ OneSignal.Debug.setLogLevel(logLevel)
619
+ });
620
+ }
621
+ const PushSubscriptionNamespace: IOneSignalPushSubscription = {
622
+ optIn: pushSubscriptionOptIn,
623
+ optOut: pushSubscriptionOptOut,
624
+ addEventListener: pushSubscriptionAddEventListener,
625
+ removeEventListener: pushSubscriptionRemoveEventListener,
626
+ };
627
+
628
+ const UserNamespace: IOneSignalUser = {
629
+ addAlias: userAddAlias,
630
+ addAliases: userAddAliases,
631
+ removeAlias: userRemoveAlias,
632
+ removeAliases: userRemoveAliases,
633
+ addEmail: userAddEmail,
634
+ removeEmail: userRemoveEmail,
635
+ addSms: userAddSms,
636
+ removeSms: userRemoveSms,
637
+ PushSubscription: PushSubscriptionNamespace,
638
+ };
639
+
640
+ const SessionNamespace: IOneSignalSession = {
641
+ sendOutcome: sessionSendOutcome,
642
+ sendUniqueOutcome: sessionSendUniqueOutcome,
643
+ };
644
+
645
+ const DebugNamespace: IOneSignalDebug = {
646
+ setLogLevel: debugSetLogLevel,
647
+ };
648
+
649
+ const SlidedownNamespace: IOneSignalSlidedown = {
650
+ promptPush: slidedownPromptPush,
651
+ promptPushCategories: slidedownPromptPushCategories,
652
+ promptSms: slidedownPromptSms,
653
+ promptEmail: slidedownPromptEmail,
654
+ promptSmsAndEmail: slidedownPromptSmsAndEmail,
655
+ addEventListener: slidedownAddEventListener,
656
+ removeEventListener: slidedownRemoveEventListener,
657
+ };
658
+
659
+ const NotificationsNamespace: IOneSignalNotifications = {
660
+ setDefaultUrl: notificationsSetDefaultUrl,
661
+ setDefaultTitle: notificationsSetDefaultTitle,
662
+ isPushSupported,
663
+ getPermissionStatus: notificationsGetPermissionStatus,
664
+ requestPermission: notificationsRequestPermission,
665
+ addEventListener: notificationsAddEventListener,
666
+ removeEventListener: notificationsRemoveEventListener,
667
+ };
837
668
 
838
- const OneSignalVue: IOneSignal = {
669
+ const OneSignalNamespace: IOneSignalOneSignal = {
670
+ login: oneSignalLogin,
671
+ logout: oneSignalLogout,
839
672
  init,
840
- on,
841
- off,
842
- once,
843
- isPushNotificationsEnabled,
844
- showHttpPrompt,
845
- registerForPushNotifications,
846
- setDefaultNotificationUrl,
847
- setDefaultTitle,
848
- getTags,
849
- sendTag,
850
- sendTags,
851
- deleteTag,
852
- deleteTags,
853
- addListenerForNotificationOpened,
854
- setSubscription,
855
- showHttpPermissionRequest,
856
- showNativePrompt,
857
- showSlidedownPrompt,
858
- showCategorySlidedown,
859
- showSmsSlidedown,
860
- showEmailSlidedown,
861
- showSmsAndEmailSlidedown,
862
- getNotificationPermission,
863
- getUserId,
864
- getSubscription,
865
- setEmail,
866
- setSMSNumber,
867
- logoutEmail,
868
- logoutSMS,
869
- setExternalUserId,
870
- removeExternalUserId,
871
- getExternalUserId,
872
- provideUserConsent,
873
- getEmailId,
874
- getSMSId,
875
- sendOutcome,
673
+ setConsentGiven: oneSignalSetConsentGiven,
674
+ setConsentRequired: oneSignalSetConsentRequired,
675
+ Slidedown: SlidedownNamespace,
676
+ Notifications: NotificationsNamespace,
677
+ Session: SessionNamespace,
678
+ User: UserNamespace,
679
+ Debug: DebugNamespace,
876
680
  };
877
681
 
878
682
  const OneSignalVuePlugin = {
879
683
  install(app: typeof VueApp) {
880
- app.prototype.$OneSignal = OneSignalVue as IOneSignal;
684
+ app.prototype.$OneSignal = OneSignalNamespace as IOneSignalOneSignal;
881
685
  }
882
686
  }
883
687