react-onesignal 2.0.2 → 2.0.3

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/README.md CHANGED
@@ -71,9 +71,27 @@ OneSignal.init({ appId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }).then(() => {
71
71
  })
72
72
  ```
73
73
 
74
- ### Options
74
+ ### Init Options
75
75
  You can pass other [options](https://documentation.onesignal.com/docs/web-push-sdk#init) to the `init` function. Use these options to configure personalized prompt options, auto-resubscribe, and more.
76
76
 
77
+ **Service Worker Params**
78
+ You can customize the location and filenames of service worker assets. You are also able to specify the specific scope that your service worker should control. You can read more [here](https://documentation.onesignal.com/docs/onesignal-service-worker-faq#sdk-parameter-reference-for-service-workers).
79
+
80
+ In this distribution, you can specify the parameters via the following:
81
+
82
+ | Field | Details |
83
+ |----------------------------|------------------------------------------------------------------------------------------------------------------------|
84
+ | `serviceWorkerParam` | Use to specify the scope, or the path the service worker has control of. Example: `{ scope: "/js/push/onesignal/" }` |
85
+ | `serviceWorkerPath` | The path to the service worker file. |
86
+
87
+ ### Service Worker File
88
+ If you haven't done so already, you will need to add the [OneSignal Service Worker file](https://github.com/OneSignal/OneSignal-Website-SDK/files/7585231/OneSignal-Web-SDK-HTTPS-Integration-Files.zip) to your site ([learn more](https://documentation.onesignal.com/docs/web-push-quickstart#step-6-upload-files)).
89
+
90
+ The OneSignal SDK file must be publicly accessible. You can put them in your top-level root or a subdirectory. However, if you are placing the file not on top-level root make sure to specify the path via the service worker params in the init options (see section above).
91
+
92
+ **Tip:**
93
+ Visit `https://yoursite.com/OneSignalSDKWorker.js` in the address bar to make sure the files are being served successfully.
94
+
77
95
  ---
78
96
  ## OneSignal API
79
97
  ### Typescript
package/dist/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- interface Action<T> {
2
- (item: T): void;
3
- }
1
+ declare type Action<T> = (item: T) => void;
4
2
  interface AutoPromptOptions {
5
3
  force?: boolean;
6
4
  forceSlidedownOverNative?: boolean;
@@ -45,11 +43,11 @@ interface IInitObject {
45
43
  appId: string;
46
44
  subdomainName?: string;
47
45
  requiresUserPrivacyConsent?: boolean;
48
- promptOptions?: Object;
49
- welcomeNotification?: Object;
50
- notifyButton?: Object;
46
+ promptOptions?: object;
47
+ welcomeNotification?: object;
48
+ notifyButton?: object;
51
49
  persistNotification?: boolean;
52
- webhooks?: Object;
50
+ webhooks?: object;
53
51
  autoResubscribe?: boolean;
54
52
  autoRegister?: boolean;
55
53
  notificationClickHandlerMatch?: string;
@@ -60,13 +58,14 @@ interface IInitObject {
60
58
  serviceWorkerPath?: string;
61
59
  serviceWorkerUpdaterPath?: string;
62
60
  path?: string;
61
+ allowLocalhostAsSecureOrigin?: boolean;
63
62
  [key: string]: any;
64
63
  }
65
64
  interface IOneSignal {
66
- init(options?: IInitObject): Promise<void>;
67
- on(event: string, listener: Function): void;
68
- off(event: string, listener: Function): void;
69
- once(event: string, listener: Function): void;
65
+ init(options: IInitObject): Promise<void>;
66
+ on(event: string, listener: () => void): void;
67
+ off(event: string, listener: () => void): void;
68
+ once(event: string, listener: () => void): void;
70
69
  isPushNotificationsEnabled(callback?: Action<boolean>): Promise<boolean>;
71
70
  showHttpPrompt(options?: AutoPromptOptions): Promise<void>;
72
71
  registerForPushNotifications(options?: RegisterOptions): Promise<void>;
@@ -86,7 +85,7 @@ interface IOneSignal {
86
85
  showSmsSlidedown(options?: AutoPromptOptions): Promise<void>;
87
86
  showEmailSlidedown(options?: AutoPromptOptions): Promise<void>;
88
87
  showSmsAndEmailSlidedown(options?: AutoPromptOptions): Promise<void>;
89
- getNotificationPermission(onComplete?: Function): Promise<NotificationPermission>;
88
+ getNotificationPermission(onComplete?: Action<NotificationPermission>): Promise<NotificationPermission>;
90
89
  getUserId(callback?: Action<string | undefined | null>): Promise<string | undefined | null>;
91
90
  getSubscription(callback?: Action<boolean>): Promise<boolean>;
92
91
  setEmail(email: string, options?: SetEmailOptions): Promise<string | null>;
package/dist/index.es.js CHANGED
@@ -1,15 +1,38 @@
1
1
  const ONESIGNAL_SDK_ID = 'onesignal-sdk';
2
2
  const ONE_SIGNAL_SCRIPT_SRC = 'https://cdn.onesignal.com/sdks/OneSignalSDK.js';
3
- const ONESIGNAL_NOT_SETUP_ERROR = 'OneSignal is not setup correctly.';
4
3
  const reactOneSignalFunctionQueue = [];
5
- const MAX_TIMEOUT = 30;
4
+ // true if the script is successfully loaded from CDN.
6
5
  let isOneSignalInitialized = false;
7
- const injectScript = () => {
8
- const script = document.createElement('script');
9
- script.id = ONESIGNAL_SDK_ID;
10
- script.src = ONE_SIGNAL_SCRIPT_SRC;
11
- script.async = true;
12
- document.head.appendChild(script);
6
+ // true if the script fails to load from CDN. A separate flag is necessary
7
+ // to disambiguate between a CDN load failure and a delayed call to
8
+ // OneSignal#init.
9
+ let isOneSignalScriptFailed = false;
10
+ const doesOneSignalExist = () => {
11
+ if (window["OneSignal"]) {
12
+ return true;
13
+ }
14
+ return false;
15
+ };
16
+ const handleOnLoad = (resolve, options) => {
17
+ isOneSignalInitialized = true;
18
+ // OneSignal is assumed to be loaded correctly because this method
19
+ // is called after the script is successfully loaded by CDN, but
20
+ // just in case.
21
+ window["OneSignal"] = window["OneSignal"] || [];
22
+ window["OneSignal"].push(() => {
23
+ window["OneSignal"].init(options);
24
+ });
25
+ window["OneSignal"].push(() => {
26
+ processQueuedOneSignalFunctions();
27
+ resolve();
28
+ });
29
+ };
30
+ const handleOnError = (resolve) => {
31
+ isOneSignalScriptFailed = true;
32
+ // Ensure that any unresolved functions are cleared from the queue,
33
+ // even in the event of a CDN load failure.
34
+ processQueuedOneSignalFunctions();
35
+ resolve();
13
36
  };
14
37
  const processQueuedOneSignalFunctions = () => {
15
38
  reactOneSignalFunctionQueue.forEach(element => {
@@ -24,46 +47,36 @@ const processQueuedOneSignalFunctions = () => {
24
47
  }
25
48
  });
26
49
  };
27
- const doesOneSignalExist = () => {
28
- if (window["OneSignal"]) {
29
- return true;
30
- }
31
- return false;
32
- };
33
- const setupOneSignalIfMissing = () => {
34
- if (!doesOneSignalExist()) {
35
- window["OneSignal"] = window["OneSignal"] || [];
36
- }
37
- };
38
50
  const init = (options) => new Promise(resolve => {
39
51
  if (isOneSignalInitialized) {
52
+ resolve();
40
53
  return;
41
54
  }
42
55
  if (!options || !options.appId) {
43
56
  throw new Error('You need to provide your OneSignal appId.');
44
57
  }
45
58
  if (!document) {
59
+ resolve();
46
60
  return;
47
61
  }
48
- injectScript();
49
- setupOneSignalIfMissing();
50
- window["OneSignal"].push(() => {
51
- window["OneSignal"].init(options);
52
- });
53
- const timeout = setTimeout(() => {
54
- console.error(ONESIGNAL_NOT_SETUP_ERROR);
55
- }, MAX_TIMEOUT * 1000);
56
- window["OneSignal"].push(() => {
57
- clearTimeout(timeout);
58
- processQueuedOneSignalFunctions();
59
- resolve();
60
- });
61
- isOneSignalInitialized = true;
62
+ const script = document.createElement('script');
63
+ script.id = ONESIGNAL_SDK_ID;
64
+ script.src = ONE_SIGNAL_SCRIPT_SRC;
65
+ script.async = true;
66
+ script.onload = () => {
67
+ handleOnLoad(resolve, options);
68
+ };
69
+ // Always resolve whether or not the script is successfully initialized.
70
+ // This is important for users who may block cdn.onesignal.com w/ adblock.
71
+ script.onerror = () => {
72
+ handleOnError(resolve);
73
+ };
74
+ document.head.appendChild(script);
62
75
  });
63
76
  function on(event, listener) {
64
77
  if (!doesOneSignalExist()) {
65
78
  reactOneSignalFunctionQueue.push({
66
- name: "on",
79
+ name: 'on',
67
80
  args: arguments,
68
81
  });
69
82
  return;
@@ -75,7 +88,7 @@ function on(event, listener) {
75
88
  function off(event, listener) {
76
89
  if (!doesOneSignalExist()) {
77
90
  reactOneSignalFunctionQueue.push({
78
- name: "off",
91
+ name: 'off',
79
92
  args: arguments,
80
93
  });
81
94
  return;
@@ -87,7 +100,7 @@ function off(event, listener) {
87
100
  function once(event, listener) {
88
101
  if (!doesOneSignalExist()) {
89
102
  reactOneSignalFunctionQueue.push({
90
- name: "once",
103
+ name: 'once',
91
104
  args: arguments,
92
105
  });
93
106
  return;
@@ -98,9 +111,13 @@ function once(event, listener) {
98
111
  }
99
112
  function isPushNotificationsEnabled(callback) {
100
113
  return new Promise((resolve, reject) => {
114
+ if (isOneSignalScriptFailed) {
115
+ resolve();
116
+ return;
117
+ }
101
118
  if (!doesOneSignalExist()) {
102
119
  reactOneSignalFunctionQueue.push({
103
- name: "isPushNotificationsEnabled",
120
+ name: 'isPushNotificationsEnabled',
104
121
  args: arguments,
105
122
  promiseResolver: resolve,
106
123
  });
@@ -120,9 +137,13 @@ function isPushNotificationsEnabled(callback) {
120
137
  }
121
138
  function showHttpPrompt(options) {
122
139
  return new Promise((resolve, reject) => {
140
+ if (isOneSignalScriptFailed) {
141
+ resolve();
142
+ return;
143
+ }
123
144
  if (!doesOneSignalExist()) {
124
145
  reactOneSignalFunctionQueue.push({
125
- name: "showHttpPrompt",
146
+ name: 'showHttpPrompt',
126
147
  args: arguments,
127
148
  promiseResolver: resolve,
128
149
  });
@@ -142,9 +163,13 @@ function showHttpPrompt(options) {
142
163
  }
143
164
  function registerForPushNotifications(options) {
144
165
  return new Promise((resolve, reject) => {
166
+ if (isOneSignalScriptFailed) {
167
+ resolve();
168
+ return;
169
+ }
145
170
  if (!doesOneSignalExist()) {
146
171
  reactOneSignalFunctionQueue.push({
147
- name: "registerForPushNotifications",
172
+ name: 'registerForPushNotifications',
148
173
  args: arguments,
149
174
  promiseResolver: resolve,
150
175
  });
@@ -164,9 +189,13 @@ function registerForPushNotifications(options) {
164
189
  }
165
190
  function setDefaultNotificationUrl(url) {
166
191
  return new Promise((resolve, reject) => {
192
+ if (isOneSignalScriptFailed) {
193
+ resolve();
194
+ return;
195
+ }
167
196
  if (!doesOneSignalExist()) {
168
197
  reactOneSignalFunctionQueue.push({
169
- name: "setDefaultNotificationUrl",
198
+ name: 'setDefaultNotificationUrl',
170
199
  args: arguments,
171
200
  promiseResolver: resolve,
172
201
  });
@@ -186,9 +215,13 @@ function setDefaultNotificationUrl(url) {
186
215
  }
187
216
  function setDefaultTitle(title) {
188
217
  return new Promise((resolve, reject) => {
218
+ if (isOneSignalScriptFailed) {
219
+ resolve();
220
+ return;
221
+ }
189
222
  if (!doesOneSignalExist()) {
190
223
  reactOneSignalFunctionQueue.push({
191
- name: "setDefaultTitle",
224
+ name: 'setDefaultTitle',
192
225
  args: arguments,
193
226
  promiseResolver: resolve,
194
227
  });
@@ -208,9 +241,13 @@ function setDefaultTitle(title) {
208
241
  }
209
242
  function getTags(callback) {
210
243
  return new Promise((resolve, reject) => {
244
+ if (isOneSignalScriptFailed) {
245
+ resolve();
246
+ return;
247
+ }
211
248
  if (!doesOneSignalExist()) {
212
249
  reactOneSignalFunctionQueue.push({
213
- name: "getTags",
250
+ name: 'getTags',
214
251
  args: arguments,
215
252
  promiseResolver: resolve,
216
253
  });
@@ -230,9 +267,13 @@ function getTags(callback) {
230
267
  }
231
268
  function sendTag(key, value, callback) {
232
269
  return new Promise((resolve, reject) => {
270
+ if (isOneSignalScriptFailed) {
271
+ resolve();
272
+ return;
273
+ }
233
274
  if (!doesOneSignalExist()) {
234
275
  reactOneSignalFunctionQueue.push({
235
- name: "sendTag",
276
+ name: 'sendTag',
236
277
  args: arguments,
237
278
  promiseResolver: resolve,
238
279
  });
@@ -252,9 +293,13 @@ function sendTag(key, value, callback) {
252
293
  }
253
294
  function sendTags(tags, callback) {
254
295
  return new Promise((resolve, reject) => {
296
+ if (isOneSignalScriptFailed) {
297
+ resolve();
298
+ return;
299
+ }
255
300
  if (!doesOneSignalExist()) {
256
301
  reactOneSignalFunctionQueue.push({
257
- name: "sendTags",
302
+ name: 'sendTags',
258
303
  args: arguments,
259
304
  promiseResolver: resolve,
260
305
  });
@@ -274,9 +319,13 @@ function sendTags(tags, callback) {
274
319
  }
275
320
  function deleteTag(tag) {
276
321
  return new Promise((resolve, reject) => {
322
+ if (isOneSignalScriptFailed) {
323
+ resolve();
324
+ return;
325
+ }
277
326
  if (!doesOneSignalExist()) {
278
327
  reactOneSignalFunctionQueue.push({
279
- name: "deleteTag",
328
+ name: 'deleteTag',
280
329
  args: arguments,
281
330
  promiseResolver: resolve,
282
331
  });
@@ -296,9 +345,13 @@ function deleteTag(tag) {
296
345
  }
297
346
  function deleteTags(tags, callback) {
298
347
  return new Promise((resolve, reject) => {
348
+ if (isOneSignalScriptFailed) {
349
+ resolve();
350
+ return;
351
+ }
299
352
  if (!doesOneSignalExist()) {
300
353
  reactOneSignalFunctionQueue.push({
301
- name: "deleteTags",
354
+ name: 'deleteTags',
302
355
  args: arguments,
303
356
  promiseResolver: resolve,
304
357
  });
@@ -318,9 +371,13 @@ function deleteTags(tags, callback) {
318
371
  }
319
372
  function addListenerForNotificationOpened(callback) {
320
373
  return new Promise((resolve, reject) => {
374
+ if (isOneSignalScriptFailed) {
375
+ resolve();
376
+ return;
377
+ }
321
378
  if (!doesOneSignalExist()) {
322
379
  reactOneSignalFunctionQueue.push({
323
- name: "addListenerForNotificationOpened",
380
+ name: 'addListenerForNotificationOpened',
324
381
  args: arguments,
325
382
  promiseResolver: resolve,
326
383
  });
@@ -340,9 +397,13 @@ function addListenerForNotificationOpened(callback) {
340
397
  }
341
398
  function setSubscription(newSubscription) {
342
399
  return new Promise((resolve, reject) => {
400
+ if (isOneSignalScriptFailed) {
401
+ resolve();
402
+ return;
403
+ }
343
404
  if (!doesOneSignalExist()) {
344
405
  reactOneSignalFunctionQueue.push({
345
- name: "setSubscription",
406
+ name: 'setSubscription',
346
407
  args: arguments,
347
408
  promiseResolver: resolve,
348
409
  });
@@ -362,9 +423,13 @@ function setSubscription(newSubscription) {
362
423
  }
363
424
  function showHttpPermissionRequest(options) {
364
425
  return new Promise((resolve, reject) => {
426
+ if (isOneSignalScriptFailed) {
427
+ resolve();
428
+ return;
429
+ }
365
430
  if (!doesOneSignalExist()) {
366
431
  reactOneSignalFunctionQueue.push({
367
- name: "showHttpPermissionRequest",
432
+ name: 'showHttpPermissionRequest',
368
433
  args: arguments,
369
434
  promiseResolver: resolve,
370
435
  });
@@ -384,9 +449,13 @@ function showHttpPermissionRequest(options) {
384
449
  }
385
450
  function showNativePrompt() {
386
451
  return new Promise((resolve, reject) => {
452
+ if (isOneSignalScriptFailed) {
453
+ resolve();
454
+ return;
455
+ }
387
456
  if (!doesOneSignalExist()) {
388
457
  reactOneSignalFunctionQueue.push({
389
- name: "showNativePrompt",
458
+ name: 'showNativePrompt',
390
459
  args: arguments,
391
460
  promiseResolver: resolve,
392
461
  });
@@ -406,9 +475,13 @@ function showNativePrompt() {
406
475
  }
407
476
  function showSlidedownPrompt(options) {
408
477
  return new Promise((resolve, reject) => {
478
+ if (isOneSignalScriptFailed) {
479
+ resolve();
480
+ return;
481
+ }
409
482
  if (!doesOneSignalExist()) {
410
483
  reactOneSignalFunctionQueue.push({
411
- name: "showSlidedownPrompt",
484
+ name: 'showSlidedownPrompt',
412
485
  args: arguments,
413
486
  promiseResolver: resolve,
414
487
  });
@@ -428,9 +501,13 @@ function showSlidedownPrompt(options) {
428
501
  }
429
502
  function showCategorySlidedown(options) {
430
503
  return new Promise((resolve, reject) => {
504
+ if (isOneSignalScriptFailed) {
505
+ resolve();
506
+ return;
507
+ }
431
508
  if (!doesOneSignalExist()) {
432
509
  reactOneSignalFunctionQueue.push({
433
- name: "showCategorySlidedown",
510
+ name: 'showCategorySlidedown',
434
511
  args: arguments,
435
512
  promiseResolver: resolve,
436
513
  });
@@ -450,9 +527,13 @@ function showCategorySlidedown(options) {
450
527
  }
451
528
  function showSmsSlidedown(options) {
452
529
  return new Promise((resolve, reject) => {
530
+ if (isOneSignalScriptFailed) {
531
+ resolve();
532
+ return;
533
+ }
453
534
  if (!doesOneSignalExist()) {
454
535
  reactOneSignalFunctionQueue.push({
455
- name: "showSmsSlidedown",
536
+ name: 'showSmsSlidedown',
456
537
  args: arguments,
457
538
  promiseResolver: resolve,
458
539
  });
@@ -472,9 +553,13 @@ function showSmsSlidedown(options) {
472
553
  }
473
554
  function showEmailSlidedown(options) {
474
555
  return new Promise((resolve, reject) => {
556
+ if (isOneSignalScriptFailed) {
557
+ resolve();
558
+ return;
559
+ }
475
560
  if (!doesOneSignalExist()) {
476
561
  reactOneSignalFunctionQueue.push({
477
- name: "showEmailSlidedown",
562
+ name: 'showEmailSlidedown',
478
563
  args: arguments,
479
564
  promiseResolver: resolve,
480
565
  });
@@ -494,9 +579,13 @@ function showEmailSlidedown(options) {
494
579
  }
495
580
  function showSmsAndEmailSlidedown(options) {
496
581
  return new Promise((resolve, reject) => {
582
+ if (isOneSignalScriptFailed) {
583
+ resolve();
584
+ return;
585
+ }
497
586
  if (!doesOneSignalExist()) {
498
587
  reactOneSignalFunctionQueue.push({
499
- name: "showSmsAndEmailSlidedown",
588
+ name: 'showSmsAndEmailSlidedown',
500
589
  args: arguments,
501
590
  promiseResolver: resolve,
502
591
  });
@@ -516,9 +605,13 @@ function showSmsAndEmailSlidedown(options) {
516
605
  }
517
606
  function getNotificationPermission(onComplete) {
518
607
  return new Promise((resolve, reject) => {
608
+ if (isOneSignalScriptFailed) {
609
+ resolve();
610
+ return;
611
+ }
519
612
  if (!doesOneSignalExist()) {
520
613
  reactOneSignalFunctionQueue.push({
521
- name: "getNotificationPermission",
614
+ name: 'getNotificationPermission',
522
615
  args: arguments,
523
616
  promiseResolver: resolve,
524
617
  });
@@ -538,9 +631,13 @@ function getNotificationPermission(onComplete) {
538
631
  }
539
632
  function getUserId(callback) {
540
633
  return new Promise((resolve, reject) => {
634
+ if (isOneSignalScriptFailed) {
635
+ resolve();
636
+ return;
637
+ }
541
638
  if (!doesOneSignalExist()) {
542
639
  reactOneSignalFunctionQueue.push({
543
- name: "getUserId",
640
+ name: 'getUserId',
544
641
  args: arguments,
545
642
  promiseResolver: resolve,
546
643
  });
@@ -560,9 +657,13 @@ function getUserId(callback) {
560
657
  }
561
658
  function getSubscription(callback) {
562
659
  return new Promise((resolve, reject) => {
660
+ if (isOneSignalScriptFailed) {
661
+ resolve();
662
+ return;
663
+ }
563
664
  if (!doesOneSignalExist()) {
564
665
  reactOneSignalFunctionQueue.push({
565
- name: "getSubscription",
666
+ name: 'getSubscription',
566
667
  args: arguments,
567
668
  promiseResolver: resolve,
568
669
  });
@@ -582,9 +683,13 @@ function getSubscription(callback) {
582
683
  }
583
684
  function setEmail(email, options) {
584
685
  return new Promise((resolve, reject) => {
686
+ if (isOneSignalScriptFailed) {
687
+ resolve();
688
+ return;
689
+ }
585
690
  if (!doesOneSignalExist()) {
586
691
  reactOneSignalFunctionQueue.push({
587
- name: "setEmail",
692
+ name: 'setEmail',
588
693
  args: arguments,
589
694
  promiseResolver: resolve,
590
695
  });
@@ -604,9 +709,13 @@ function setEmail(email, options) {
604
709
  }
605
710
  function setSMSNumber(smsNumber, options) {
606
711
  return new Promise((resolve, reject) => {
712
+ if (isOneSignalScriptFailed) {
713
+ resolve();
714
+ return;
715
+ }
607
716
  if (!doesOneSignalExist()) {
608
717
  reactOneSignalFunctionQueue.push({
609
- name: "setSMSNumber",
718
+ name: 'setSMSNumber',
610
719
  args: arguments,
611
720
  promiseResolver: resolve,
612
721
  });
@@ -626,9 +735,13 @@ function setSMSNumber(smsNumber, options) {
626
735
  }
627
736
  function logoutEmail() {
628
737
  return new Promise((resolve, reject) => {
738
+ if (isOneSignalScriptFailed) {
739
+ resolve();
740
+ return;
741
+ }
629
742
  if (!doesOneSignalExist()) {
630
743
  reactOneSignalFunctionQueue.push({
631
- name: "logoutEmail",
744
+ name: 'logoutEmail',
632
745
  args: arguments,
633
746
  promiseResolver: resolve,
634
747
  });
@@ -648,9 +761,13 @@ function logoutEmail() {
648
761
  }
649
762
  function logoutSMS() {
650
763
  return new Promise((resolve, reject) => {
764
+ if (isOneSignalScriptFailed) {
765
+ resolve();
766
+ return;
767
+ }
651
768
  if (!doesOneSignalExist()) {
652
769
  reactOneSignalFunctionQueue.push({
653
- name: "logoutSMS",
770
+ name: 'logoutSMS',
654
771
  args: arguments,
655
772
  promiseResolver: resolve,
656
773
  });
@@ -670,9 +787,13 @@ function logoutSMS() {
670
787
  }
671
788
  function setExternalUserId(externalUserId, authHash) {
672
789
  return new Promise((resolve, reject) => {
790
+ if (isOneSignalScriptFailed) {
791
+ resolve();
792
+ return;
793
+ }
673
794
  if (!doesOneSignalExist()) {
674
795
  reactOneSignalFunctionQueue.push({
675
- name: "setExternalUserId",
796
+ name: 'setExternalUserId',
676
797
  args: arguments,
677
798
  promiseResolver: resolve,
678
799
  });
@@ -692,9 +813,13 @@ function setExternalUserId(externalUserId, authHash) {
692
813
  }
693
814
  function removeExternalUserId() {
694
815
  return new Promise((resolve, reject) => {
816
+ if (isOneSignalScriptFailed) {
817
+ resolve();
818
+ return;
819
+ }
695
820
  if (!doesOneSignalExist()) {
696
821
  reactOneSignalFunctionQueue.push({
697
- name: "removeExternalUserId",
822
+ name: 'removeExternalUserId',
698
823
  args: arguments,
699
824
  promiseResolver: resolve,
700
825
  });
@@ -714,9 +839,13 @@ function removeExternalUserId() {
714
839
  }
715
840
  function getExternalUserId() {
716
841
  return new Promise((resolve, reject) => {
842
+ if (isOneSignalScriptFailed) {
843
+ resolve();
844
+ return;
845
+ }
717
846
  if (!doesOneSignalExist()) {
718
847
  reactOneSignalFunctionQueue.push({
719
- name: "getExternalUserId",
848
+ name: 'getExternalUserId',
720
849
  args: arguments,
721
850
  promiseResolver: resolve,
722
851
  });
@@ -736,9 +865,13 @@ function getExternalUserId() {
736
865
  }
737
866
  function provideUserConsent(consent) {
738
867
  return new Promise((resolve, reject) => {
868
+ if (isOneSignalScriptFailed) {
869
+ resolve();
870
+ return;
871
+ }
739
872
  if (!doesOneSignalExist()) {
740
873
  reactOneSignalFunctionQueue.push({
741
- name: "provideUserConsent",
874
+ name: 'provideUserConsent',
742
875
  args: arguments,
743
876
  promiseResolver: resolve,
744
877
  });
@@ -758,9 +891,13 @@ function provideUserConsent(consent) {
758
891
  }
759
892
  function getEmailId(callback) {
760
893
  return new Promise((resolve, reject) => {
894
+ if (isOneSignalScriptFailed) {
895
+ resolve();
896
+ return;
897
+ }
761
898
  if (!doesOneSignalExist()) {
762
899
  reactOneSignalFunctionQueue.push({
763
- name: "getEmailId",
900
+ name: 'getEmailId',
764
901
  args: arguments,
765
902
  promiseResolver: resolve,
766
903
  });
@@ -780,9 +917,13 @@ function getEmailId(callback) {
780
917
  }
781
918
  function getSMSId(callback) {
782
919
  return new Promise((resolve, reject) => {
920
+ if (isOneSignalScriptFailed) {
921
+ resolve();
922
+ return;
923
+ }
783
924
  if (!doesOneSignalExist()) {
784
925
  reactOneSignalFunctionQueue.push({
785
- name: "getSMSId",
926
+ name: 'getSMSId',
786
927
  args: arguments,
787
928
  promiseResolver: resolve,
788
929
  });
@@ -802,9 +943,13 @@ function getSMSId(callback) {
802
943
  }
803
944
  function sendOutcome(outcomeName, outcomeWeight) {
804
945
  return new Promise((resolve, reject) => {
946
+ if (isOneSignalScriptFailed) {
947
+ resolve();
948
+ return;
949
+ }
805
950
  if (!doesOneSignalExist()) {
806
951
  reactOneSignalFunctionQueue.push({
807
- name: "sendOutcome",
952
+ name: 'sendOutcome',
808
953
  args: arguments,
809
954
  promiseResolver: resolve,
810
955
  });