@onesignal/onesignal-vue3 1.0.0

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/dist/index.js ADDED
@@ -0,0 +1,710 @@
1
+ import { inject } from 'vue';
2
+ const ONESIGNAL_SDK_ID = 'onesignal-sdk';
3
+ const ONE_SIGNAL_SCRIPT_SRC = 'https://cdn.onesignal.com/sdks/OneSignalSDK.js';
4
+ const ONESIGNAL_NOT_SETUP_ERROR = 'OneSignal is not setup correctly.';
5
+ const MAX_TIMEOUT = 30;
6
+ let isOneSignalInitialized = false;
7
+ const vueOneSignalFunctionQueue = [];
8
+ /* H E L P E R S */
9
+ const injectScript = () => {
10
+ const script = document.createElement('script');
11
+ script.id = ONESIGNAL_SDK_ID;
12
+ script.src = ONE_SIGNAL_SCRIPT_SRC;
13
+ script.async = true;
14
+ document.head.appendChild(script);
15
+ };
16
+ const doesOneSignalExist = () => {
17
+ if (window.OneSignal) {
18
+ return true;
19
+ }
20
+ return false;
21
+ };
22
+ const processQueuedOneSignalFunctions = () => {
23
+ vueOneSignalFunctionQueue.forEach(element => {
24
+ const { name, args, promiseResolver } = element;
25
+ if (!!promiseResolver) {
26
+ OneSignalVue[name](...args).then((result) => {
27
+ promiseResolver(result);
28
+ });
29
+ }
30
+ else {
31
+ window.OneSignal[name](...args);
32
+ }
33
+ });
34
+ };
35
+ const setupOneSignalIfMissing = () => {
36
+ if (!doesOneSignalExist()) {
37
+ window.OneSignal = window.OneSignal || [];
38
+ }
39
+ };
40
+ /* O N E S I G N A L A P I */
41
+ function init(options) {
42
+ return new Promise(resolve => {
43
+ if (isOneSignalInitialized) {
44
+ return;
45
+ }
46
+ injectScript();
47
+ setupOneSignalIfMissing();
48
+ window.OneSignal.push(() => {
49
+ window.OneSignal.init(options);
50
+ });
51
+ const timeout = setTimeout(() => {
52
+ console.error(ONESIGNAL_NOT_SETUP_ERROR);
53
+ }, MAX_TIMEOUT * 1000);
54
+ window.OneSignal.push(() => {
55
+ clearTimeout(timeout);
56
+ isOneSignalInitialized = true;
57
+ processQueuedOneSignalFunctions();
58
+ resolve();
59
+ });
60
+ });
61
+ }
62
+ function on(event, listener) {
63
+ if (!doesOneSignalExist()) {
64
+ vueOneSignalFunctionQueue.push({
65
+ name: 'on',
66
+ args: arguments,
67
+ });
68
+ return;
69
+ }
70
+ window.OneSignal.push(() => {
71
+ window.OneSignal.on(event, listener);
72
+ });
73
+ }
74
+ function off(event, listener) {
75
+ if (!doesOneSignalExist()) {
76
+ vueOneSignalFunctionQueue.push({
77
+ name: 'off',
78
+ args: arguments,
79
+ });
80
+ return;
81
+ }
82
+ window.OneSignal.push(() => {
83
+ window.OneSignal.off(event, listener);
84
+ });
85
+ }
86
+ function once(event, listener) {
87
+ if (!doesOneSignalExist()) {
88
+ vueOneSignalFunctionQueue.push({
89
+ name: 'once',
90
+ args: arguments,
91
+ });
92
+ return;
93
+ }
94
+ window.OneSignal.push(() => {
95
+ window.OneSignal.once(event, listener);
96
+ });
97
+ }
98
+ function isPushNotificationsEnabled(callback) {
99
+ return new Promise(function (resolve, reject) {
100
+ if (!doesOneSignalExist()) {
101
+ vueOneSignalFunctionQueue.push({
102
+ name: 'isPushNotificationsEnabled',
103
+ args: arguments,
104
+ promiseResolver: resolve,
105
+ });
106
+ return;
107
+ }
108
+ window.OneSignal.push(() => {
109
+ window.OneSignal.isPushNotificationsEnabled(callback)
110
+ .then(value => resolve(value))
111
+ .catch(error => reject(error));
112
+ });
113
+ });
114
+ }
115
+ function showHttpPrompt(options) {
116
+ return new Promise(function (resolve, reject) {
117
+ if (!doesOneSignalExist()) {
118
+ vueOneSignalFunctionQueue.push({
119
+ name: 'showHttpPrompt',
120
+ args: arguments,
121
+ promiseResolver: resolve,
122
+ });
123
+ return;
124
+ }
125
+ window.OneSignal.push(() => {
126
+ window.OneSignal.showHttpPrompt(options)
127
+ .then(value => resolve(value))
128
+ .catch(error => reject(error));
129
+ });
130
+ });
131
+ }
132
+ function registerForPushNotifications(options) {
133
+ return new Promise(function (resolve, reject) {
134
+ if (!doesOneSignalExist()) {
135
+ vueOneSignalFunctionQueue.push({
136
+ name: 'registerForPushNotifications',
137
+ args: arguments,
138
+ promiseResolver: resolve,
139
+ });
140
+ return;
141
+ }
142
+ window.OneSignal.push(() => {
143
+ window.OneSignal.registerForPushNotifications(options)
144
+ .then(value => resolve(value))
145
+ .catch(error => reject(error));
146
+ });
147
+ });
148
+ }
149
+ function setDefaultNotificationUrl(url) {
150
+ return new Promise(function (resolve, reject) {
151
+ if (!doesOneSignalExist()) {
152
+ vueOneSignalFunctionQueue.push({
153
+ name: 'setDefaultNotificationUrl',
154
+ args: arguments,
155
+ promiseResolver: resolve,
156
+ });
157
+ return;
158
+ }
159
+ window.OneSignal.push(() => {
160
+ window.OneSignal.setDefaultNotificationUrl(url)
161
+ .then(value => resolve(value))
162
+ .catch(error => reject(error));
163
+ });
164
+ });
165
+ }
166
+ function setDefaultTitle(title) {
167
+ return new Promise(function (resolve, reject) {
168
+ if (!doesOneSignalExist()) {
169
+ vueOneSignalFunctionQueue.push({
170
+ name: 'setDefaultTitle',
171
+ args: arguments,
172
+ promiseResolver: resolve,
173
+ });
174
+ return;
175
+ }
176
+ window.OneSignal.push(() => {
177
+ window.OneSignal.setDefaultTitle(title)
178
+ .then(value => resolve(value))
179
+ .catch(error => reject(error));
180
+ });
181
+ });
182
+ }
183
+ function getTags(callback) {
184
+ return new Promise(function (resolve, reject) {
185
+ if (!doesOneSignalExist()) {
186
+ vueOneSignalFunctionQueue.push({
187
+ name: 'getTags',
188
+ args: arguments,
189
+ promiseResolver: resolve,
190
+ });
191
+ return;
192
+ }
193
+ window.OneSignal.push(() => {
194
+ window.OneSignal.getTags(callback)
195
+ .then(value => resolve(value))
196
+ .catch(error => reject(error));
197
+ });
198
+ });
199
+ }
200
+ function sendTag(key, value, callback) {
201
+ return new Promise(function (resolve, reject) {
202
+ if (!doesOneSignalExist()) {
203
+ vueOneSignalFunctionQueue.push({
204
+ name: 'sendTag',
205
+ args: arguments,
206
+ promiseResolver: resolve,
207
+ });
208
+ return;
209
+ }
210
+ window.OneSignal.push(() => {
211
+ window.OneSignal.sendTag(key, value, callback)
212
+ .then(value => resolve(value))
213
+ .catch(error => reject(error));
214
+ });
215
+ });
216
+ }
217
+ function sendTags(tags, callback) {
218
+ return new Promise(function (resolve, reject) {
219
+ if (!doesOneSignalExist()) {
220
+ vueOneSignalFunctionQueue.push({
221
+ name: 'sendTags',
222
+ args: arguments,
223
+ promiseResolver: resolve,
224
+ });
225
+ return;
226
+ }
227
+ window.OneSignal.push(() => {
228
+ window.OneSignal.sendTags(tags, callback)
229
+ .then(value => resolve(value))
230
+ .catch(error => reject(error));
231
+ });
232
+ });
233
+ }
234
+ function deleteTag(tag) {
235
+ return new Promise(function (resolve, reject) {
236
+ if (!doesOneSignalExist()) {
237
+ vueOneSignalFunctionQueue.push({
238
+ name: 'deleteTag',
239
+ args: arguments,
240
+ promiseResolver: resolve,
241
+ });
242
+ return;
243
+ }
244
+ window.OneSignal.push(() => {
245
+ window.OneSignal.deleteTag(tag)
246
+ .then(value => resolve(value))
247
+ .catch(error => reject(error));
248
+ });
249
+ });
250
+ }
251
+ function deleteTags(tags, callback) {
252
+ return new Promise(function (resolve, reject) {
253
+ if (!doesOneSignalExist()) {
254
+ vueOneSignalFunctionQueue.push({
255
+ name: 'deleteTags',
256
+ args: arguments,
257
+ promiseResolver: resolve,
258
+ });
259
+ return;
260
+ }
261
+ window.OneSignal.push(() => {
262
+ window.OneSignal.deleteTags(tags, callback)
263
+ .then(value => resolve(value))
264
+ .catch(error => reject(error));
265
+ });
266
+ });
267
+ }
268
+ function addListenerForNotificationOpened(callback) {
269
+ return new Promise(function (resolve, reject) {
270
+ if (!doesOneSignalExist()) {
271
+ vueOneSignalFunctionQueue.push({
272
+ name: 'addListenerForNotificationOpened',
273
+ args: arguments,
274
+ promiseResolver: resolve,
275
+ });
276
+ return;
277
+ }
278
+ window.OneSignal.push(() => {
279
+ window.OneSignal.addListenerForNotificationOpened(callback)
280
+ .then(value => resolve(value))
281
+ .catch(error => reject(error));
282
+ });
283
+ });
284
+ }
285
+ function setSubscription(newSubscription) {
286
+ return new Promise(function (resolve, reject) {
287
+ if (!doesOneSignalExist()) {
288
+ vueOneSignalFunctionQueue.push({
289
+ name: 'setSubscription',
290
+ args: arguments,
291
+ promiseResolver: resolve,
292
+ });
293
+ return;
294
+ }
295
+ window.OneSignal.push(() => {
296
+ window.OneSignal.setSubscription(newSubscription)
297
+ .then(value => resolve(value))
298
+ .catch(error => reject(error));
299
+ });
300
+ });
301
+ }
302
+ function showHttpPermissionRequest(options) {
303
+ return new Promise(function (resolve, reject) {
304
+ if (!doesOneSignalExist()) {
305
+ vueOneSignalFunctionQueue.push({
306
+ name: 'showHttpPermissionRequest',
307
+ args: arguments,
308
+ promiseResolver: resolve,
309
+ });
310
+ return;
311
+ }
312
+ window.OneSignal.push(() => {
313
+ window.OneSignal.showHttpPermissionRequest(options)
314
+ .then(value => resolve(value))
315
+ .catch(error => reject(error));
316
+ });
317
+ });
318
+ }
319
+ function showNativePrompt() {
320
+ return new Promise(function (resolve, reject) {
321
+ if (!doesOneSignalExist()) {
322
+ vueOneSignalFunctionQueue.push({
323
+ name: 'showNativePrompt',
324
+ args: arguments,
325
+ promiseResolver: resolve,
326
+ });
327
+ return;
328
+ }
329
+ window.OneSignal.push(() => {
330
+ window.OneSignal.showNativePrompt()
331
+ .then(value => resolve(value))
332
+ .catch(error => reject(error));
333
+ });
334
+ });
335
+ }
336
+ function showSlidedownPrompt(options) {
337
+ return new Promise(function (resolve, reject) {
338
+ if (!doesOneSignalExist()) {
339
+ vueOneSignalFunctionQueue.push({
340
+ name: 'showSlidedownPrompt',
341
+ args: arguments,
342
+ promiseResolver: resolve,
343
+ });
344
+ return;
345
+ }
346
+ window.OneSignal.push(() => {
347
+ window.OneSignal.showSlidedownPrompt(options)
348
+ .then(value => resolve(value))
349
+ .catch(error => reject(error));
350
+ });
351
+ });
352
+ }
353
+ function showCategorySlidedown(options) {
354
+ return new Promise(function (resolve, reject) {
355
+ if (!doesOneSignalExist()) {
356
+ vueOneSignalFunctionQueue.push({
357
+ name: 'showCategorySlidedown',
358
+ args: arguments,
359
+ promiseResolver: resolve,
360
+ });
361
+ return;
362
+ }
363
+ window.OneSignal.push(() => {
364
+ window.OneSignal.showCategorySlidedown(options)
365
+ .then(value => resolve(value))
366
+ .catch(error => reject(error));
367
+ });
368
+ });
369
+ }
370
+ function showSmsSlidedown(options) {
371
+ return new Promise(function (resolve, reject) {
372
+ if (!doesOneSignalExist()) {
373
+ vueOneSignalFunctionQueue.push({
374
+ name: 'showSmsSlidedown',
375
+ args: arguments,
376
+ promiseResolver: resolve,
377
+ });
378
+ return;
379
+ }
380
+ window.OneSignal.push(() => {
381
+ window.OneSignal.showSmsSlidedown(options)
382
+ .then(value => resolve(value))
383
+ .catch(error => reject(error));
384
+ });
385
+ });
386
+ }
387
+ function showEmailSlidedown(options) {
388
+ return new Promise(function (resolve, reject) {
389
+ if (!doesOneSignalExist()) {
390
+ vueOneSignalFunctionQueue.push({
391
+ name: 'showEmailSlidedown',
392
+ args: arguments,
393
+ promiseResolver: resolve,
394
+ });
395
+ return;
396
+ }
397
+ window.OneSignal.push(() => {
398
+ window.OneSignal.showEmailSlidedown(options)
399
+ .then(value => resolve(value))
400
+ .catch(error => reject(error));
401
+ });
402
+ });
403
+ }
404
+ function showSmsAndEmailSlidedown(options) {
405
+ return new Promise(function (resolve, reject) {
406
+ if (!doesOneSignalExist()) {
407
+ vueOneSignalFunctionQueue.push({
408
+ name: 'showSmsAndEmailSlidedown',
409
+ args: arguments,
410
+ promiseResolver: resolve,
411
+ });
412
+ return;
413
+ }
414
+ window.OneSignal.push(() => {
415
+ window.OneSignal.showSmsAndEmailSlidedown(options)
416
+ .then(value => resolve(value))
417
+ .catch(error => reject(error));
418
+ });
419
+ });
420
+ }
421
+ function getNotificationPermission(onComplete) {
422
+ return new Promise(function (resolve, reject) {
423
+ if (!doesOneSignalExist()) {
424
+ vueOneSignalFunctionQueue.push({
425
+ name: 'getNotificationPermission',
426
+ args: arguments,
427
+ promiseResolver: resolve,
428
+ });
429
+ return;
430
+ }
431
+ window.OneSignal.push(() => {
432
+ window.OneSignal.getNotificationPermission(onComplete)
433
+ .then(value => resolve(value))
434
+ .catch(error => reject(error));
435
+ });
436
+ });
437
+ }
438
+ function getUserId(callback) {
439
+ return new Promise(function (resolve, reject) {
440
+ if (!doesOneSignalExist()) {
441
+ vueOneSignalFunctionQueue.push({
442
+ name: 'getUserId',
443
+ args: arguments,
444
+ promiseResolver: resolve,
445
+ });
446
+ return;
447
+ }
448
+ window.OneSignal.push(() => {
449
+ window.OneSignal.getUserId(callback)
450
+ .then(value => resolve(value))
451
+ .catch(error => reject(error));
452
+ });
453
+ });
454
+ }
455
+ function getSubscription(callback) {
456
+ return new Promise(function (resolve, reject) {
457
+ if (!doesOneSignalExist()) {
458
+ vueOneSignalFunctionQueue.push({
459
+ name: 'getSubscription',
460
+ args: arguments,
461
+ promiseResolver: resolve,
462
+ });
463
+ return;
464
+ }
465
+ window.OneSignal.push(() => {
466
+ window.OneSignal.getSubscription(callback)
467
+ .then(value => resolve(value))
468
+ .catch(error => reject(error));
469
+ });
470
+ });
471
+ }
472
+ function setEmail(email, options) {
473
+ return new Promise(function (resolve, reject) {
474
+ if (!doesOneSignalExist()) {
475
+ vueOneSignalFunctionQueue.push({
476
+ name: 'setEmail',
477
+ args: arguments,
478
+ promiseResolver: resolve,
479
+ });
480
+ return;
481
+ }
482
+ window.OneSignal.push(() => {
483
+ window.OneSignal.setEmail(email, options)
484
+ .then(value => resolve(value))
485
+ .catch(error => reject(error));
486
+ });
487
+ });
488
+ }
489
+ function setSMSNumber(smsNumber, options) {
490
+ return new Promise(function (resolve, reject) {
491
+ if (!doesOneSignalExist()) {
492
+ vueOneSignalFunctionQueue.push({
493
+ name: 'setSMSNumber',
494
+ args: arguments,
495
+ promiseResolver: resolve,
496
+ });
497
+ return;
498
+ }
499
+ window.OneSignal.push(() => {
500
+ window.OneSignal.setSMSNumber(smsNumber, options)
501
+ .then(value => resolve(value))
502
+ .catch(error => reject(error));
503
+ });
504
+ });
505
+ }
506
+ function logoutEmail() {
507
+ return new Promise(function (resolve, reject) {
508
+ if (!doesOneSignalExist()) {
509
+ vueOneSignalFunctionQueue.push({
510
+ name: 'logoutEmail',
511
+ args: arguments,
512
+ promiseResolver: resolve,
513
+ });
514
+ return;
515
+ }
516
+ window.OneSignal.push(() => {
517
+ window.OneSignal.logoutEmail()
518
+ .then(value => resolve(value))
519
+ .catch(error => reject(error));
520
+ });
521
+ });
522
+ }
523
+ function logoutSMS() {
524
+ return new Promise(function (resolve, reject) {
525
+ if (!doesOneSignalExist()) {
526
+ vueOneSignalFunctionQueue.push({
527
+ name: 'logoutSMS',
528
+ args: arguments,
529
+ promiseResolver: resolve,
530
+ });
531
+ return;
532
+ }
533
+ window.OneSignal.push(() => {
534
+ window.OneSignal.logoutSMS()
535
+ .then(value => resolve(value))
536
+ .catch(error => reject(error));
537
+ });
538
+ });
539
+ }
540
+ function setExternalUserId(externalUserId, authHash) {
541
+ return new Promise(function (resolve, reject) {
542
+ if (!doesOneSignalExist()) {
543
+ vueOneSignalFunctionQueue.push({
544
+ name: 'setExternalUserId',
545
+ args: arguments,
546
+ promiseResolver: resolve,
547
+ });
548
+ return;
549
+ }
550
+ window.OneSignal.push(() => {
551
+ window.OneSignal.setExternalUserId(externalUserId, authHash)
552
+ .then(value => resolve(value))
553
+ .catch(error => reject(error));
554
+ });
555
+ });
556
+ }
557
+ function removeExternalUserId() {
558
+ return new Promise(function (resolve, reject) {
559
+ if (!doesOneSignalExist()) {
560
+ vueOneSignalFunctionQueue.push({
561
+ name: 'removeExternalUserId',
562
+ args: arguments,
563
+ promiseResolver: resolve,
564
+ });
565
+ return;
566
+ }
567
+ window.OneSignal.push(() => {
568
+ window.OneSignal.removeExternalUserId()
569
+ .then(value => resolve(value))
570
+ .catch(error => reject(error));
571
+ });
572
+ });
573
+ }
574
+ function getExternalUserId() {
575
+ return new Promise(function (resolve, reject) {
576
+ if (!doesOneSignalExist()) {
577
+ vueOneSignalFunctionQueue.push({
578
+ name: 'getExternalUserId',
579
+ args: arguments,
580
+ promiseResolver: resolve,
581
+ });
582
+ return;
583
+ }
584
+ window.OneSignal.push(() => {
585
+ window.OneSignal.getExternalUserId()
586
+ .then(value => resolve(value))
587
+ .catch(error => reject(error));
588
+ });
589
+ });
590
+ }
591
+ function provideUserConsent(consent) {
592
+ return new Promise(function (resolve, reject) {
593
+ if (!doesOneSignalExist()) {
594
+ vueOneSignalFunctionQueue.push({
595
+ name: 'provideUserConsent',
596
+ args: arguments,
597
+ promiseResolver: resolve,
598
+ });
599
+ return;
600
+ }
601
+ window.OneSignal.push(() => {
602
+ window.OneSignal.provideUserConsent(consent)
603
+ .then(value => resolve(value))
604
+ .catch(error => reject(error));
605
+ });
606
+ });
607
+ }
608
+ function getEmailId(callback) {
609
+ return new Promise(function (resolve, reject) {
610
+ if (!doesOneSignalExist()) {
611
+ vueOneSignalFunctionQueue.push({
612
+ name: 'getEmailId',
613
+ args: arguments,
614
+ promiseResolver: resolve,
615
+ });
616
+ return;
617
+ }
618
+ window.OneSignal.push(() => {
619
+ window.OneSignal.getEmailId(callback)
620
+ .then(value => resolve(value))
621
+ .catch(error => reject(error));
622
+ });
623
+ });
624
+ }
625
+ function getSMSId(callback) {
626
+ return new Promise(function (resolve, reject) {
627
+ if (!doesOneSignalExist()) {
628
+ vueOneSignalFunctionQueue.push({
629
+ name: 'getSMSId',
630
+ args: arguments,
631
+ promiseResolver: resolve,
632
+ });
633
+ return;
634
+ }
635
+ window.OneSignal.push(() => {
636
+ window.OneSignal.getSMSId(callback)
637
+ .then(value => resolve(value))
638
+ .catch(error => reject(error));
639
+ });
640
+ });
641
+ }
642
+ function sendOutcome(outcomeName, outcomeWeight) {
643
+ return new Promise(function (resolve, reject) {
644
+ if (!doesOneSignalExist()) {
645
+ vueOneSignalFunctionQueue.push({
646
+ name: 'sendOutcome',
647
+ args: arguments,
648
+ promiseResolver: resolve,
649
+ });
650
+ return;
651
+ }
652
+ window.OneSignal.push(() => {
653
+ window.OneSignal.sendOutcome(outcomeName, outcomeWeight)
654
+ .then(value => resolve(value))
655
+ .catch(error => reject(error));
656
+ });
657
+ });
658
+ }
659
+ const OneSignalVue = {
660
+ init,
661
+ on,
662
+ off,
663
+ once,
664
+ isPushNotificationsEnabled,
665
+ showHttpPrompt,
666
+ registerForPushNotifications,
667
+ setDefaultNotificationUrl,
668
+ setDefaultTitle,
669
+ getTags,
670
+ sendTag,
671
+ sendTags,
672
+ deleteTag,
673
+ deleteTags,
674
+ addListenerForNotificationOpened,
675
+ setSubscription,
676
+ showHttpPermissionRequest,
677
+ showNativePrompt,
678
+ showSlidedownPrompt,
679
+ showCategorySlidedown,
680
+ showSmsSlidedown,
681
+ showEmailSlidedown,
682
+ showSmsAndEmailSlidedown,
683
+ getNotificationPermission,
684
+ getUserId,
685
+ getSubscription,
686
+ setEmail,
687
+ setSMSNumber,
688
+ logoutEmail,
689
+ logoutSMS,
690
+ setExternalUserId,
691
+ removeExternalUserId,
692
+ getExternalUserId,
693
+ provideUserConsent,
694
+ getEmailId,
695
+ getSMSId,
696
+ sendOutcome,
697
+ };
698
+ const INJECT_KEY = "onesignal";
699
+ export const useOneSignal = () => {
700
+ return inject(INJECT_KEY);
701
+ };
702
+ const OneSignalVuePlugin = {
703
+ install(app, options) {
704
+ app.config.globalProperties.$OneSignal = OneSignalVue;
705
+ app.config.globalProperties.$OneSignal.init(options);
706
+ app.provide(INJECT_KEY, OneSignalVue);
707
+ }
708
+ };
709
+ export default OneSignalVuePlugin;
710
+ //# sourceMappingURL=index.js.map