@onesignal/onesignal-vue3 1.0.2 → 2.0.0-beta.2

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