onesignal-vue 1.0.1 → 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
-
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
36
 
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();
106
+ }
107
+
108
+ // Does the browser support the standard Push API
109
+ function supportsVapidPush(): boolean {
110
+ return typeof PushSubscriptionOptions !== "undefined" &&
111
+ PushSubscriptionOptions.prototype.hasOwnProperty("applicationServerKey");
61
112
  }
113
+ /* E N D */
62
114
 
63
- interface IOneSignalFunctionCall {
64
- name: string;
65
- args: IArguments;
66
- promiseResolver?: Function;
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,789 +153,536 @@ 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?: Function): 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
 
218
+ function oneSignalLogin(externalId: string, jwtToken?: string): Promise<void> {
219
+ return new Promise(function (resolve, reject) {
220
+ if (isOneSignalScriptFailed) {
221
+ reject();
222
+ }
141
223
 
142
- /* O N E S I G N A L A P I */
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
+ }
233
+ });
234
+ }
143
235
 
144
- function init(options: IInitObject) {
145
- return new Promise<void>(resolve => {
146
- if (isOneSignalInitialized) {
147
- return;
236
+ function oneSignalLogout(): Promise<void> {
237
+ return new Promise(function (resolve, reject) {
238
+ if (isOneSignalScriptFailed) {
239
+ reject();
148
240
  }
149
241
 
150
- injectScript();
151
- setupOneSignalIfMissing();
152
- window.OneSignal.push(() => {
153
- window.OneSignal.init(options);
154
- })
242
+ try {
243
+ window.OneSignalDeferred?.push((OneSignal) => {
244
+ OneSignal.logout()
245
+ .then(value => resolve(value))
246
+ .catch(error => reject(error));
247
+ });
248
+ } catch (error) {
249
+ reject(error);
250
+ }
251
+ });
252
+ }
155
253
 
156
- const timeout = setTimeout(() => {
157
- console.error(ONESIGNAL_NOT_SETUP_ERROR);
158
- }, MAX_TIMEOUT * 1_000);
254
+ function oneSignalSetConsentGiven(consent: boolean): Promise<void> {
255
+ return new Promise(function (resolve, reject) {
256
+ if (isOneSignalScriptFailed) {
257
+ reject();
258
+ }
159
259
 
160
- window.OneSignal.push(() => {
161
- clearTimeout(timeout);
162
- isOneSignalInitialized = true;
163
- processQueuedOneSignalFunctions();
164
- resolve();
165
- });
260
+ try {
261
+ window.OneSignalDeferred?.push((OneSignal) => {
262
+ OneSignal.setConsentGiven(consent)
263
+ .then(value => resolve(value))
264
+ .catch(error => reject(error));
265
+ });
266
+ } catch (error) {
267
+ reject(error);
268
+ }
166
269
  });
167
270
  }
168
271
 
169
- function on(event, listener): void {
170
- if (!doesOneSignalExist()) {
171
- vueOneSignalFunctionQueue.push({
172
- name: 'on',
173
- args: arguments,
272
+ function oneSignalSetConsentRequired(requiresConsent: boolean): Promise<void> {
273
+ return new Promise(function (resolve, reject) {
274
+ if (isOneSignalScriptFailed) {
275
+ reject();
276
+ }
277
+
278
+ try {
279
+ window.OneSignalDeferred?.push((OneSignal) => {
280
+ OneSignal.setConsentRequired(requiresConsent)
281
+ .then(value => resolve(value))
282
+ .catch(error => reject(error));
174
283
  });
175
- return;
284
+ } catch (error) {
285
+ reject(error);
176
286
  }
287
+ });
288
+ }
177
289
 
178
- window.OneSignal.push(() => {
179
- window.OneSignal.on(event, listener)
180
- });
181
- }
290
+ function slidedownPromptPush(options?: AutoPromptOptions): Promise<void> {
291
+ return new Promise(function (resolve, reject) {
292
+ if (isOneSignalScriptFailed) {
293
+ reject();
294
+ }
182
295
 
183
- function off(event, listener): void {
184
- if (!doesOneSignalExist()) {
185
- vueOneSignalFunctionQueue.push({
186
- name: 'off',
187
- args: arguments,
296
+ try {
297
+ window.OneSignalDeferred?.push((OneSignal) => {
298
+ OneSignal.Slidedown.promptPush(options)
299
+ .then(value => resolve(value))
300
+ .catch(error => reject(error));
188
301
  });
189
- return;
302
+ } catch (error) {
303
+ reject(error);
190
304
  }
305
+ });
306
+ }
191
307
 
192
- window.OneSignal.push(() => {
193
- window.OneSignal.off(event, listener)
194
- });
195
- }
308
+ function slidedownPromptPushCategories(options?: AutoPromptOptions): Promise<void> {
309
+ return new Promise(function (resolve, reject) {
310
+ if (isOneSignalScriptFailed) {
311
+ reject();
312
+ }
196
313
 
197
- function once(event, listener): void {
198
- if (!doesOneSignalExist()) {
199
- vueOneSignalFunctionQueue.push({
200
- name: 'once',
201
- args: arguments,
314
+ try {
315
+ window.OneSignalDeferred?.push((OneSignal) => {
316
+ OneSignal.Slidedown.promptPushCategories(options)
317
+ .then(value => resolve(value))
318
+ .catch(error => reject(error));
202
319
  });
203
- return;
320
+ } catch (error) {
321
+ reject(error);
204
322
  }
323
+ });
324
+ }
205
325
 
206
- window.OneSignal.push(() => {
207
- window.OneSignal.once(event, listener)
208
- });
209
- }
326
+ function slidedownPromptSms(options?: AutoPromptOptions): Promise<void> {
327
+ return new Promise(function (resolve, reject) {
328
+ if (isOneSignalScriptFailed) {
329
+ reject();
330
+ }
210
331
 
211
- function isPushNotificationsEnabled(callback): 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)
224
- .then((value) => resolve(value))
225
- .catch((error) => reject(error));
332
+ try {
333
+ window.OneSignalDeferred?.push((OneSignal) => {
334
+ OneSignal.Slidedown.promptSms(options)
335
+ .then(value => resolve(value))
336
+ .catch(error => reject(error));
226
337
  });
227
- });
228
- }
338
+ } catch (error) {
339
+ reject(error);
340
+ }
341
+ });
342
+ }
229
343
 
230
- function showHttpPrompt(options): 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
- }
344
+ function slidedownPromptEmail(options?: AutoPromptOptions): Promise<void> {
345
+ return new Promise(function (resolve, reject) {
346
+ if (isOneSignalScriptFailed) {
347
+ reject();
348
+ }
248
349
 
249
- function registerForPushNotifications(options): 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)
262
- .then((value) => resolve(value))
263
- .catch((error) => reject(error));
350
+ try {
351
+ window.OneSignalDeferred?.push((OneSignal) => {
352
+ OneSignal.Slidedown.promptEmail(options)
353
+ .then(value => resolve(value))
354
+ .catch(error => reject(error));
264
355
  });
265
- });
266
- }
356
+ } catch (error) {
357
+ reject(error);
358
+ }
359
+ });
360
+ }
267
361
 
268
- function setDefaultNotificationUrl(url): 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
- }
362
+ function slidedownPromptSmsAndEmail(options?: AutoPromptOptions): Promise<void> {
363
+ return new Promise(function (resolve, reject) {
364
+ if (isOneSignalScriptFailed) {
365
+ reject();
366
+ }
286
367
 
287
- function setDefaultTitle(title): 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)
300
- .then((value) => resolve(value))
301
- .catch((error) => reject(error));
368
+ try {
369
+ window.OneSignalDeferred?.push((OneSignal) => {
370
+ OneSignal.Slidedown.promptSmsAndEmail(options)
371
+ .then(value => resolve(value))
372
+ .catch(error => reject(error));
302
373
  });
303
- });
304
- }
374
+ } catch (error) {
375
+ reject(error);
376
+ }
377
+ });
378
+ }
305
379
 
306
- function getTags(callback): 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
- }
380
+ function slidedownAddEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void {
381
+ window.OneSignalDeferred?.push((OneSignal) => {
382
+ OneSignal.Slidedown.addEventListener(event, listener)
383
+ });
384
+ }
324
385
 
325
- function sendTag(key, value, callback): 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)
338
- .then((value) => resolve(value))
339
- .catch((error) => reject(error));
340
- });
341
- });
342
- }
386
+ function slidedownRemoveEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void {
387
+ window.OneSignalDeferred?.push((OneSignal) => {
388
+ OneSignal.Slidedown.removeEventListener(event, listener)
389
+ });
390
+ }
343
391
 
344
- function sendTags(tags, callback): 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
- }
392
+ function notificationsSetDefaultUrl(url: string): Promise<void> {
393
+ return new Promise(function (resolve, reject) {
394
+ if (isOneSignalScriptFailed) {
395
+ reject();
396
+ }
362
397
 
363
- function deleteTag(tag): 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)
376
- .then((value) => resolve(value))
377
- .catch((error) => reject(error));
398
+ try {
399
+ window.OneSignalDeferred?.push((OneSignal) => {
400
+ OneSignal.Notifications.setDefaultUrl(url)
401
+ .then(value => resolve(value))
402
+ .catch(error => reject(error));
378
403
  });
379
- });
380
- }
404
+ } catch (error) {
405
+ reject(error);
406
+ }
407
+ });
408
+ }
381
409
 
382
- function deleteTags(tags, callback): 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
- }
410
+ function notificationsSetDefaultTitle(title: string): Promise<void> {
411
+ return new Promise(function (resolve, reject) {
412
+ if (isOneSignalScriptFailed) {
413
+ reject();
414
+ }
400
415
 
401
- function addListenerForNotificationOpened(callback): 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)
414
- .then((value) => resolve(value))
415
- .catch((error) => reject(error));
416
+ try {
417
+ window.OneSignalDeferred?.push((OneSignal) => {
418
+ OneSignal.Notifications.setDefaultTitle(title)
419
+ .then(value => resolve(value))
420
+ .catch(error => reject(error));
416
421
  });
417
- });
418
- }
422
+ } catch (error) {
423
+ reject(error);
424
+ }
425
+ });
426
+ }
419
427
 
420
- function setSubscription(newSubscription): 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
- }
428
+ function notificationsGetPermissionStatus(onComplete: Action<NotificationPermission>): Promise<NotificationPermission> {
429
+ return new Promise(function (resolve, reject) {
430
+ if (isOneSignalScriptFailed) {
431
+ reject();
432
+ }
438
433
 
439
- function showHttpPermissionRequest(options): 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)
452
- .then((value) => resolve(value))
453
- .catch((error) => reject(error));
434
+ try {
435
+ window.OneSignalDeferred?.push((OneSignal) => {
436
+ OneSignal.Notifications.getPermissionStatus(onComplete)
437
+ .then(value => resolve(value))
438
+ .catch(error => reject(error));
454
439
  });
455
- });
456
- }
440
+ } catch (error) {
441
+ reject(error);
442
+ }
443
+ });
444
+ }
457
445
 
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
- }
446
+ function notificationsRequestPermission(): Promise<void> {
447
+ return new Promise(function (resolve, reject) {
448
+ if (isOneSignalScriptFailed) {
449
+ reject();
450
+ }
476
451
 
477
- function showSlidedownPrompt(options): 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));
452
+ try {
453
+ window.OneSignalDeferred?.push((OneSignal) => {
454
+ OneSignal.Notifications.requestPermission()
455
+ .then(value => resolve(value))
456
+ .catch(error => reject(error));
492
457
  });
493
- });
494
- }
458
+ } catch (error) {
459
+ reject(error);
460
+ }
461
+ });
462
+ }
495
463
 
496
- function showCategorySlidedown(options): 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
- }
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;
514
467
 
515
- function showSmsSlidedown(options): 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)
528
- .then((value) => resolve(value))
529
- .catch((error) => reject(error));
530
- });
531
- });
532
- }
468
+ function notificationsAddEventListener(event: NotificationEventName, listener: (obj: any) => void): void {
469
+ window.OneSignalDeferred?.push((OneSignal) => {
470
+ OneSignal.Notifications.addEventListener(event, listener)
471
+ });
472
+ }
533
473
 
534
- function showEmailSlidedown(options): 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
- }
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;
552
477
 
553
- function showSmsAndEmailSlidedown(options): 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)
566
- .then((value) => resolve(value))
567
- .catch((error) => reject(error));
568
- });
569
- });
570
- }
478
+ function notificationsRemoveEventListener(event: NotificationEventName, listener: (obj: any) => void): void {
479
+ window.OneSignalDeferred?.push((OneSignal) => {
480
+ OneSignal.Notifications.removeEventListener(event, listener)
481
+ });
482
+ }
571
483
 
572
- function getNotificationPermission(onComplete): 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
- }
484
+ function sessionSendOutcome(outcomeName: string, outcomeWeight?: number): Promise<void> {
485
+ return new Promise(function (resolve, reject) {
486
+ if (isOneSignalScriptFailed) {
487
+ reject();
488
+ }
590
489
 
591
- function getUserId(callback): 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)
604
- .then((value) => resolve(value))
605
- .catch((error) => reject(error));
490
+ try {
491
+ window.OneSignalDeferred?.push((OneSignal) => {
492
+ OneSignal.Session.sendOutcome(outcomeName, outcomeWeight)
493
+ .then(value => resolve(value))
494
+ .catch(error => reject(error));
606
495
  });
607
- });
608
- }
496
+ } catch (error) {
497
+ reject(error);
498
+ }
499
+ });
500
+ }
609
501
 
610
- function getSubscription(callback): 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
- }
502
+ function sessionSendUniqueOutcome(outcomeName: string): Promise<void> {
503
+ return new Promise(function (resolve, reject) {
504
+ if (isOneSignalScriptFailed) {
505
+ reject();
506
+ }
628
507
 
629
- function setEmail(email, options): 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)
642
- .then((value) => resolve(value))
643
- .catch((error) => reject(error));
508
+ try {
509
+ window.OneSignalDeferred?.push((OneSignal) => {
510
+ OneSignal.Session.sendUniqueOutcome(outcomeName)
511
+ .then(value => resolve(value))
512
+ .catch(error => reject(error));
644
513
  });
645
- });
646
- }
514
+ } catch (error) {
515
+ reject(error);
516
+ }
517
+ });
518
+ }
647
519
 
648
- function setSMSNumber(smsNumber, options): 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
- }
520
+ function userAddAlias(label: string, id: string): void {
521
+ window.OneSignalDeferred?.push((OneSignal) => {
522
+ OneSignal.User.addAlias(label, id)
523
+ });
524
+ }
666
525
 
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
- }
526
+ function userAddAliases(aliases: { [key: string]: string }): void {
527
+ window.OneSignalDeferred?.push((OneSignal) => {
528
+ OneSignal.User.addAliases(aliases)
529
+ });
530
+ }
685
531
 
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
- }
532
+ function userRemoveAlias(label: string): void {
533
+ window.OneSignalDeferred?.push((OneSignal) => {
534
+ OneSignal.User.removeAlias(label)
535
+ });
536
+ }
704
537
 
705
- function setExternalUserId(externalUserId, authHash): 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
- }
538
+ function userRemoveAliases(labels: string[]): void {
539
+ window.OneSignalDeferred?.push((OneSignal) => {
540
+ OneSignal.User.removeAliases(labels)
541
+ });
542
+ }
723
543
 
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
- }
544
+ function userAddEmail(email: string): void {
545
+ window.OneSignalDeferred?.push((OneSignal) => {
546
+ OneSignal.User.addEmail(email)
547
+ });
548
+ }
742
549
 
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()
756
- .then((value) => resolve(value))
757
- .catch((error) => reject(error));
758
- });
759
- });
760
- }
550
+ function userRemoveEmail(email: string): void {
551
+ window.OneSignalDeferred?.push((OneSignal) => {
552
+ OneSignal.User.removeEmail(email)
553
+ });
554
+ }
761
555
 
762
- function provideUserConsent(consent): 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
- }
556
+ function userAddSms(smsNumber: string): void {
557
+ window.OneSignalDeferred?.push((OneSignal) => {
558
+ OneSignal.User.addSms(smsNumber)
559
+ });
560
+ }
780
561
 
781
- function getEmailId(callback): 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)
794
- .then((value) => resolve(value))
795
- .catch((error) => reject(error));
796
- });
797
- });
798
- }
562
+ function userRemoveSms(smsNumber: string): void {
563
+ window.OneSignalDeferred?.push((OneSignal) => {
564
+ OneSignal.User.removeSms(smsNumber)
565
+ });
566
+ }
799
567
 
800
- function getSMSId(callback): 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)
813
- .then((value) => resolve(value))
814
- .catch((error) => reject(error));
568
+ function pushSubscriptionOptIn(): Promise<void> {
569
+ return new Promise(function (resolve, reject) {
570
+ if (isOneSignalScriptFailed) {
571
+ reject();
572
+ }
573
+
574
+ try {
575
+ window.OneSignalDeferred?.push((OneSignal) => {
576
+ OneSignal.User.PushSubscription.optIn()
577
+ .then(value => resolve(value))
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, outcomeWeight): 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)
832
- .then((value) => resolve(value))
833
- .catch((error) => reject(error));
592
+ try {
593
+ window.OneSignalDeferred?.push((OneSignal) => {
594
+ OneSignal.User.PushSubscription.optOut()
595
+ .then(value => resolve(value))
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
+ }
837
615
 
838
- const OneSignalVue: IOneSignal = {
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
+ };
668
+
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
 
884
688
  export default OneSignalVuePlugin;
885
-