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 +19 -1
- package/dist/index.d.ts +11 -12
- package/dist/index.es.js +214 -69
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +214 -69
- package/dist/index.js.map +1 -1
- package/index.ts +303 -122
- package/package.json +2 -3
- package/rollup.config.js +0 -1
package/index.ts
CHANGED
|
@@ -1,17 +1,45 @@
|
|
|
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;
|
|
6
4
|
|
|
5
|
+
// true if the script is successfully loaded from CDN.
|
|
7
6
|
let isOneSignalInitialized = false;
|
|
7
|
+
// true if the script fails to load from CDN. A separate flag is necessary
|
|
8
|
+
// to disambiguate between a CDN load failure and a delayed call to
|
|
9
|
+
// OneSignal#init.
|
|
10
|
+
let isOneSignalScriptFailed = false;
|
|
8
11
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const doesOneSignalExist = () => {
|
|
13
|
+
if (window["OneSignal"]) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const handleOnLoad = (resolve: () => void, options: IInitObject) => {
|
|
20
|
+
isOneSignalInitialized = true;
|
|
21
|
+
|
|
22
|
+
// OneSignal is assumed to be loaded correctly because this method
|
|
23
|
+
// is called after the script is successfully loaded by CDN, but
|
|
24
|
+
// just in case.
|
|
25
|
+
window["OneSignal"] = window["OneSignal"] || []
|
|
26
|
+
|
|
27
|
+
window["OneSignal"].push(() => {
|
|
28
|
+
window["OneSignal"].init(options);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
window["OneSignal"].push(() => {
|
|
32
|
+
processQueuedOneSignalFunctions();
|
|
33
|
+
resolve();
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const handleOnError = (resolve: () => void) => {
|
|
38
|
+
isOneSignalScriptFailed = true;
|
|
39
|
+
// Ensure that any unresolved functions are cleared from the queue,
|
|
40
|
+
// even in the event of a CDN load failure.
|
|
41
|
+
processQueuedOneSignalFunctions();
|
|
42
|
+
resolve();
|
|
15
43
|
}
|
|
16
44
|
|
|
17
45
|
const processQueuedOneSignalFunctions = () => {
|
|
@@ -28,21 +56,9 @@ const processQueuedOneSignalFunctions = () => {
|
|
|
28
56
|
});
|
|
29
57
|
}
|
|
30
58
|
|
|
31
|
-
const doesOneSignalExist = () => {
|
|
32
|
-
if (window["OneSignal"]) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const setupOneSignalIfMissing = () => {
|
|
39
|
-
if (!doesOneSignalExist()) {
|
|
40
|
-
window["OneSignal"] = window["OneSignal"] || [];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
59
|
const init = (options: IInitObject) => new Promise<void>(resolve => {
|
|
45
60
|
if (isOneSignalInitialized) {
|
|
61
|
+
resolve();
|
|
46
62
|
return;
|
|
47
63
|
}
|
|
48
64
|
|
|
@@ -50,29 +66,29 @@ const init = (options: IInitObject) => new Promise<void>(resolve => {
|
|
|
50
66
|
throw new Error('You need to provide your OneSignal appId.');
|
|
51
67
|
}
|
|
52
68
|
if (!document) {
|
|
69
|
+
resolve();
|
|
53
70
|
return;
|
|
54
71
|
}
|
|
55
|
-
injectScript();
|
|
56
|
-
setupOneSignalIfMissing();
|
|
57
|
-
window["OneSignal"].push(() => {
|
|
58
|
-
window["OneSignal"].init(options);
|
|
59
|
-
});
|
|
60
72
|
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
const script = document.createElement('script');
|
|
74
|
+
script.id = ONESIGNAL_SDK_ID;
|
|
75
|
+
script.src = ONE_SIGNAL_SCRIPT_SRC;
|
|
76
|
+
script.async = true;
|
|
64
77
|
|
|
78
|
+
script.onload = () => {
|
|
79
|
+
handleOnLoad(resolve, options);
|
|
80
|
+
};
|
|
65
81
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
resolve
|
|
70
|
-
}
|
|
82
|
+
// Always resolve whether or not the script is successfully initialized.
|
|
83
|
+
// This is important for users who may block cdn.onesignal.com w/ adblock.
|
|
84
|
+
script.onerror = () => {
|
|
85
|
+
handleOnError(resolve);
|
|
86
|
+
}
|
|
71
87
|
|
|
72
|
-
|
|
88
|
+
document.head.appendChild(script);
|
|
73
89
|
});
|
|
74
90
|
|
|
75
|
-
|
|
91
|
+
type Action<T> = (item: T) => void;
|
|
76
92
|
interface AutoPromptOptions { force?: boolean; forceSlidedownOverNative?: boolean; slidedownPromptOptions?: IOneSignalAutoPromptOptions; }
|
|
77
93
|
interface RegisterOptions { modalPrompt?: boolean; httpPermissionRequest?: boolean; slidedown?: boolean; autoAccept?: boolean }
|
|
78
94
|
interface SetSMSOptions { identifierAuthHash?: string; }
|
|
@@ -82,16 +98,15 @@ interface IOneSignalAutoPromptOptions { force?: boolean; forceSlidedownOverNativ
|
|
|
82
98
|
interface IOneSignalCategories { positiveUpdateButton: string; negativeUpdateButton: string; savingButtonText: string; errorButtonText: string; updateMessage: string; tags: IOneSignalTagCategory[]; }
|
|
83
99
|
interface IOneSignalTagCategory { tag: string; label: string; checked?: boolean; }
|
|
84
100
|
|
|
85
|
-
|
|
86
101
|
interface IInitObject {
|
|
87
102
|
appId: string;
|
|
88
103
|
subdomainName?: string;
|
|
89
104
|
requiresUserPrivacyConsent?: boolean;
|
|
90
|
-
promptOptions?:
|
|
91
|
-
welcomeNotification?:
|
|
92
|
-
notifyButton?:
|
|
105
|
+
promptOptions?: object;
|
|
106
|
+
welcomeNotification?: object;
|
|
107
|
+
notifyButton?: object;
|
|
93
108
|
persistNotification?: boolean;
|
|
94
|
-
webhooks?:
|
|
109
|
+
webhooks?: object;
|
|
95
110
|
autoResubscribe?: boolean;
|
|
96
111
|
autoRegister?: boolean;
|
|
97
112
|
notificationClickHandlerMatch?: string;
|
|
@@ -100,14 +115,15 @@ interface IInitObject {
|
|
|
100
115
|
serviceWorkerPath?: string;
|
|
101
116
|
serviceWorkerUpdaterPath?: string;
|
|
102
117
|
path?: string;
|
|
118
|
+
allowLocalhostAsSecureOrigin?: boolean;
|
|
103
119
|
[key: string]: any;
|
|
104
120
|
}
|
|
105
121
|
|
|
106
122
|
interface IOneSignal {
|
|
107
|
-
init(options
|
|
108
|
-
on(event: string, listener:
|
|
109
|
-
off(event: string, listener:
|
|
110
|
-
once(event: string, listener:
|
|
123
|
+
init(options: IInitObject): Promise<void>
|
|
124
|
+
on(event: string, listener: () => void): void
|
|
125
|
+
off(event: string, listener: () => void): void
|
|
126
|
+
once(event: string, listener: () => void): void
|
|
111
127
|
isPushNotificationsEnabled(callback?: Action<boolean>): Promise<boolean>
|
|
112
128
|
showHttpPrompt(options?: AutoPromptOptions): Promise<void>
|
|
113
129
|
registerForPushNotifications(options?: RegisterOptions): Promise<void>
|
|
@@ -127,7 +143,7 @@ interface IOneSignal {
|
|
|
127
143
|
showSmsSlidedown(options?: AutoPromptOptions): Promise<void>
|
|
128
144
|
showEmailSlidedown(options?: AutoPromptOptions): Promise<void>
|
|
129
145
|
showSmsAndEmailSlidedown(options?: AutoPromptOptions): Promise<void>
|
|
130
|
-
getNotificationPermission(onComplete?:
|
|
146
|
+
getNotificationPermission(onComplete?: Action<NotificationPermission>): Promise<NotificationPermission>
|
|
131
147
|
getUserId(callback?: Action<string | undefined | null>): Promise<string | undefined | null>
|
|
132
148
|
getSubscription(callback?: Action<boolean>): Promise<boolean>
|
|
133
149
|
setEmail(email: string, options?: SetEmailOptions): Promise<string|null>
|
|
@@ -146,10 +162,10 @@ interface IOneSignal {
|
|
|
146
162
|
|
|
147
163
|
|
|
148
164
|
|
|
149
|
-
function on(event: string, listener:
|
|
165
|
+
function on(event: string, listener: () => void): void {
|
|
150
166
|
if (!doesOneSignalExist()) {
|
|
151
167
|
reactOneSignalFunctionQueue.push({
|
|
152
|
-
name:
|
|
168
|
+
name: 'on',
|
|
153
169
|
args: arguments,
|
|
154
170
|
});
|
|
155
171
|
return;
|
|
@@ -158,12 +174,12 @@ interface IOneSignal {
|
|
|
158
174
|
window["OneSignal"].push(() => {
|
|
159
175
|
window["OneSignal"].on(event, listener)
|
|
160
176
|
});
|
|
161
|
-
}
|
|
177
|
+
}
|
|
162
178
|
|
|
163
|
-
function off(event: string, listener:
|
|
179
|
+
function off(event: string, listener: () => void): void {
|
|
164
180
|
if (!doesOneSignalExist()) {
|
|
165
181
|
reactOneSignalFunctionQueue.push({
|
|
166
|
-
name:
|
|
182
|
+
name: 'off',
|
|
167
183
|
args: arguments,
|
|
168
184
|
});
|
|
169
185
|
return;
|
|
@@ -172,12 +188,12 @@ interface IOneSignal {
|
|
|
172
188
|
window["OneSignal"].push(() => {
|
|
173
189
|
window["OneSignal"].off(event, listener)
|
|
174
190
|
});
|
|
175
|
-
}
|
|
191
|
+
}
|
|
176
192
|
|
|
177
|
-
function once(event: string, listener:
|
|
193
|
+
function once(event: string, listener: () => void): void {
|
|
178
194
|
if (!doesOneSignalExist()) {
|
|
179
195
|
reactOneSignalFunctionQueue.push({
|
|
180
|
-
name:
|
|
196
|
+
name: 'once',
|
|
181
197
|
args: arguments,
|
|
182
198
|
});
|
|
183
199
|
return;
|
|
@@ -186,13 +202,18 @@ interface IOneSignal {
|
|
|
186
202
|
window["OneSignal"].push(() => {
|
|
187
203
|
window["OneSignal"].once(event, listener)
|
|
188
204
|
});
|
|
189
|
-
}
|
|
205
|
+
}
|
|
190
206
|
|
|
191
207
|
function isPushNotificationsEnabled(callback?: Action<boolean>): Promise<boolean> {
|
|
192
208
|
return new Promise((resolve, reject) => {
|
|
209
|
+
if (isOneSignalScriptFailed) {
|
|
210
|
+
resolve();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
193
214
|
if (!doesOneSignalExist()) {
|
|
194
215
|
reactOneSignalFunctionQueue.push({
|
|
195
|
-
name:
|
|
216
|
+
name: 'isPushNotificationsEnabled',
|
|
196
217
|
args: arguments,
|
|
197
218
|
promiseResolver: resolve,
|
|
198
219
|
});
|
|
@@ -209,13 +230,18 @@ interface IOneSignal {
|
|
|
209
230
|
reject(error);
|
|
210
231
|
}
|
|
211
232
|
});
|
|
212
|
-
}
|
|
233
|
+
}
|
|
213
234
|
|
|
214
235
|
function showHttpPrompt(options?: AutoPromptOptions): Promise<void> {
|
|
215
236
|
return new Promise((resolve, reject) => {
|
|
237
|
+
if (isOneSignalScriptFailed) {
|
|
238
|
+
resolve();
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
|
|
216
242
|
if (!doesOneSignalExist()) {
|
|
217
243
|
reactOneSignalFunctionQueue.push({
|
|
218
|
-
name:
|
|
244
|
+
name: 'showHttpPrompt',
|
|
219
245
|
args: arguments,
|
|
220
246
|
promiseResolver: resolve,
|
|
221
247
|
});
|
|
@@ -232,13 +258,18 @@ interface IOneSignal {
|
|
|
232
258
|
reject(error);
|
|
233
259
|
}
|
|
234
260
|
});
|
|
235
|
-
}
|
|
261
|
+
}
|
|
236
262
|
|
|
237
263
|
function registerForPushNotifications(options?: RegisterOptions): Promise<void> {
|
|
238
264
|
return new Promise((resolve, reject) => {
|
|
265
|
+
if (isOneSignalScriptFailed) {
|
|
266
|
+
resolve();
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
|
|
239
270
|
if (!doesOneSignalExist()) {
|
|
240
271
|
reactOneSignalFunctionQueue.push({
|
|
241
|
-
name:
|
|
272
|
+
name: 'registerForPushNotifications',
|
|
242
273
|
args: arguments,
|
|
243
274
|
promiseResolver: resolve,
|
|
244
275
|
});
|
|
@@ -255,13 +286,18 @@ interface IOneSignal {
|
|
|
255
286
|
reject(error);
|
|
256
287
|
}
|
|
257
288
|
});
|
|
258
|
-
}
|
|
289
|
+
}
|
|
259
290
|
|
|
260
291
|
function setDefaultNotificationUrl(url: string): Promise<void> {
|
|
261
292
|
return new Promise((resolve, reject) => {
|
|
293
|
+
if (isOneSignalScriptFailed) {
|
|
294
|
+
resolve();
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
|
|
262
298
|
if (!doesOneSignalExist()) {
|
|
263
299
|
reactOneSignalFunctionQueue.push({
|
|
264
|
-
name:
|
|
300
|
+
name: 'setDefaultNotificationUrl',
|
|
265
301
|
args: arguments,
|
|
266
302
|
promiseResolver: resolve,
|
|
267
303
|
});
|
|
@@ -278,13 +314,18 @@ interface IOneSignal {
|
|
|
278
314
|
reject(error);
|
|
279
315
|
}
|
|
280
316
|
});
|
|
281
|
-
}
|
|
317
|
+
}
|
|
282
318
|
|
|
283
319
|
function setDefaultTitle(title: string): Promise<void> {
|
|
284
320
|
return new Promise((resolve, reject) => {
|
|
321
|
+
if (isOneSignalScriptFailed) {
|
|
322
|
+
resolve();
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
|
|
285
326
|
if (!doesOneSignalExist()) {
|
|
286
327
|
reactOneSignalFunctionQueue.push({
|
|
287
|
-
name:
|
|
328
|
+
name: 'setDefaultTitle',
|
|
288
329
|
args: arguments,
|
|
289
330
|
promiseResolver: resolve,
|
|
290
331
|
});
|
|
@@ -301,13 +342,18 @@ interface IOneSignal {
|
|
|
301
342
|
reject(error);
|
|
302
343
|
}
|
|
303
344
|
});
|
|
304
|
-
}
|
|
345
|
+
}
|
|
305
346
|
|
|
306
347
|
function getTags(callback?: Action<any>): Promise<void> {
|
|
307
348
|
return new Promise((resolve, reject) => {
|
|
349
|
+
if (isOneSignalScriptFailed) {
|
|
350
|
+
resolve();
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
|
|
308
354
|
if (!doesOneSignalExist()) {
|
|
309
355
|
reactOneSignalFunctionQueue.push({
|
|
310
|
-
name:
|
|
356
|
+
name: 'getTags',
|
|
311
357
|
args: arguments,
|
|
312
358
|
promiseResolver: resolve,
|
|
313
359
|
});
|
|
@@ -324,13 +370,18 @@ interface IOneSignal {
|
|
|
324
370
|
reject(error);
|
|
325
371
|
}
|
|
326
372
|
});
|
|
327
|
-
}
|
|
373
|
+
}
|
|
328
374
|
|
|
329
375
|
function sendTag(key: string, value: any, callback?: Action<Object>): Promise<Object | null> {
|
|
330
376
|
return new Promise((resolve, reject) => {
|
|
377
|
+
if (isOneSignalScriptFailed) {
|
|
378
|
+
resolve();
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
|
|
331
382
|
if (!doesOneSignalExist()) {
|
|
332
383
|
reactOneSignalFunctionQueue.push({
|
|
333
|
-
name:
|
|
384
|
+
name: 'sendTag',
|
|
334
385
|
args: arguments,
|
|
335
386
|
promiseResolver: resolve,
|
|
336
387
|
});
|
|
@@ -347,13 +398,18 @@ interface IOneSignal {
|
|
|
347
398
|
reject(error);
|
|
348
399
|
}
|
|
349
400
|
});
|
|
350
|
-
}
|
|
401
|
+
}
|
|
351
402
|
|
|
352
403
|
function sendTags(tags: TagsObject<any>, callback?: Action<Object>): Promise<Object | null> {
|
|
353
404
|
return new Promise((resolve, reject) => {
|
|
405
|
+
if (isOneSignalScriptFailed) {
|
|
406
|
+
resolve();
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
|
|
354
410
|
if (!doesOneSignalExist()) {
|
|
355
411
|
reactOneSignalFunctionQueue.push({
|
|
356
|
-
name:
|
|
412
|
+
name: 'sendTags',
|
|
357
413
|
args: arguments,
|
|
358
414
|
promiseResolver: resolve,
|
|
359
415
|
});
|
|
@@ -370,13 +426,18 @@ interface IOneSignal {
|
|
|
370
426
|
reject(error);
|
|
371
427
|
}
|
|
372
428
|
});
|
|
373
|
-
}
|
|
429
|
+
}
|
|
374
430
|
|
|
375
431
|
function deleteTag(tag: string): Promise<Array<string>> {
|
|
376
432
|
return new Promise((resolve, reject) => {
|
|
433
|
+
if (isOneSignalScriptFailed) {
|
|
434
|
+
resolve();
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
|
|
377
438
|
if (!doesOneSignalExist()) {
|
|
378
439
|
reactOneSignalFunctionQueue.push({
|
|
379
|
-
name:
|
|
440
|
+
name: 'deleteTag',
|
|
380
441
|
args: arguments,
|
|
381
442
|
promiseResolver: resolve,
|
|
382
443
|
});
|
|
@@ -393,13 +454,18 @@ interface IOneSignal {
|
|
|
393
454
|
reject(error);
|
|
394
455
|
}
|
|
395
456
|
});
|
|
396
|
-
}
|
|
457
|
+
}
|
|
397
458
|
|
|
398
459
|
function deleteTags(tags: Array<string>, callback?: Action<Array<string>>): Promise<Array<string>> {
|
|
399
460
|
return new Promise((resolve, reject) => {
|
|
461
|
+
if (isOneSignalScriptFailed) {
|
|
462
|
+
resolve();
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
|
|
400
466
|
if (!doesOneSignalExist()) {
|
|
401
467
|
reactOneSignalFunctionQueue.push({
|
|
402
|
-
name:
|
|
468
|
+
name: 'deleteTags',
|
|
403
469
|
args: arguments,
|
|
404
470
|
promiseResolver: resolve,
|
|
405
471
|
});
|
|
@@ -416,13 +482,18 @@ interface IOneSignal {
|
|
|
416
482
|
reject(error);
|
|
417
483
|
}
|
|
418
484
|
});
|
|
419
|
-
}
|
|
485
|
+
}
|
|
420
486
|
|
|
421
487
|
function addListenerForNotificationOpened(callback?: Action<Notification>): Promise<void> {
|
|
422
488
|
return new Promise((resolve, reject) => {
|
|
489
|
+
if (isOneSignalScriptFailed) {
|
|
490
|
+
resolve();
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
493
|
+
|
|
423
494
|
if (!doesOneSignalExist()) {
|
|
424
495
|
reactOneSignalFunctionQueue.push({
|
|
425
|
-
name:
|
|
496
|
+
name: 'addListenerForNotificationOpened',
|
|
426
497
|
args: arguments,
|
|
427
498
|
promiseResolver: resolve,
|
|
428
499
|
});
|
|
@@ -439,13 +510,18 @@ interface IOneSignal {
|
|
|
439
510
|
reject(error);
|
|
440
511
|
}
|
|
441
512
|
});
|
|
442
|
-
}
|
|
513
|
+
}
|
|
443
514
|
|
|
444
515
|
function setSubscription(newSubscription: boolean): Promise<void> {
|
|
445
516
|
return new Promise((resolve, reject) => {
|
|
517
|
+
if (isOneSignalScriptFailed) {
|
|
518
|
+
resolve();
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
|
|
446
522
|
if (!doesOneSignalExist()) {
|
|
447
523
|
reactOneSignalFunctionQueue.push({
|
|
448
|
-
name:
|
|
524
|
+
name: 'setSubscription',
|
|
449
525
|
args: arguments,
|
|
450
526
|
promiseResolver: resolve,
|
|
451
527
|
});
|
|
@@ -462,13 +538,18 @@ interface IOneSignal {
|
|
|
462
538
|
reject(error);
|
|
463
539
|
}
|
|
464
540
|
});
|
|
465
|
-
}
|
|
541
|
+
}
|
|
466
542
|
|
|
467
543
|
function showHttpPermissionRequest(options?: AutoPromptOptions): Promise<any> {
|
|
468
544
|
return new Promise((resolve, reject) => {
|
|
545
|
+
if (isOneSignalScriptFailed) {
|
|
546
|
+
resolve();
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
|
|
469
550
|
if (!doesOneSignalExist()) {
|
|
470
551
|
reactOneSignalFunctionQueue.push({
|
|
471
|
-
name:
|
|
552
|
+
name: 'showHttpPermissionRequest',
|
|
472
553
|
args: arguments,
|
|
473
554
|
promiseResolver: resolve,
|
|
474
555
|
});
|
|
@@ -485,13 +566,18 @@ interface IOneSignal {
|
|
|
485
566
|
reject(error);
|
|
486
567
|
}
|
|
487
568
|
});
|
|
488
|
-
}
|
|
569
|
+
}
|
|
489
570
|
|
|
490
571
|
function showNativePrompt(): Promise<void> {
|
|
491
572
|
return new Promise((resolve, reject) => {
|
|
573
|
+
if (isOneSignalScriptFailed) {
|
|
574
|
+
resolve();
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
|
|
492
578
|
if (!doesOneSignalExist()) {
|
|
493
579
|
reactOneSignalFunctionQueue.push({
|
|
494
|
-
name:
|
|
580
|
+
name: 'showNativePrompt',
|
|
495
581
|
args: arguments,
|
|
496
582
|
promiseResolver: resolve,
|
|
497
583
|
});
|
|
@@ -508,13 +594,18 @@ interface IOneSignal {
|
|
|
508
594
|
reject(error);
|
|
509
595
|
}
|
|
510
596
|
});
|
|
511
|
-
}
|
|
597
|
+
}
|
|
512
598
|
|
|
513
599
|
function showSlidedownPrompt(options?: AutoPromptOptions): Promise<void> {
|
|
514
600
|
return new Promise((resolve, reject) => {
|
|
601
|
+
if (isOneSignalScriptFailed) {
|
|
602
|
+
resolve();
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
|
|
515
606
|
if (!doesOneSignalExist()) {
|
|
516
607
|
reactOneSignalFunctionQueue.push({
|
|
517
|
-
name:
|
|
608
|
+
name: 'showSlidedownPrompt',
|
|
518
609
|
args: arguments,
|
|
519
610
|
promiseResolver: resolve,
|
|
520
611
|
});
|
|
@@ -531,13 +622,18 @@ interface IOneSignal {
|
|
|
531
622
|
reject(error);
|
|
532
623
|
}
|
|
533
624
|
});
|
|
534
|
-
}
|
|
625
|
+
}
|
|
535
626
|
|
|
536
627
|
function showCategorySlidedown(options?: AutoPromptOptions): Promise<void> {
|
|
537
628
|
return new Promise((resolve, reject) => {
|
|
629
|
+
if (isOneSignalScriptFailed) {
|
|
630
|
+
resolve();
|
|
631
|
+
return;
|
|
632
|
+
}
|
|
633
|
+
|
|
538
634
|
if (!doesOneSignalExist()) {
|
|
539
635
|
reactOneSignalFunctionQueue.push({
|
|
540
|
-
name:
|
|
636
|
+
name: 'showCategorySlidedown',
|
|
541
637
|
args: arguments,
|
|
542
638
|
promiseResolver: resolve,
|
|
543
639
|
});
|
|
@@ -554,13 +650,18 @@ interface IOneSignal {
|
|
|
554
650
|
reject(error);
|
|
555
651
|
}
|
|
556
652
|
});
|
|
557
|
-
}
|
|
653
|
+
}
|
|
558
654
|
|
|
559
655
|
function showSmsSlidedown(options?: AutoPromptOptions): Promise<void> {
|
|
560
656
|
return new Promise((resolve, reject) => {
|
|
657
|
+
if (isOneSignalScriptFailed) {
|
|
658
|
+
resolve();
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
|
|
561
662
|
if (!doesOneSignalExist()) {
|
|
562
663
|
reactOneSignalFunctionQueue.push({
|
|
563
|
-
name:
|
|
664
|
+
name: 'showSmsSlidedown',
|
|
564
665
|
args: arguments,
|
|
565
666
|
promiseResolver: resolve,
|
|
566
667
|
});
|
|
@@ -577,13 +678,18 @@ interface IOneSignal {
|
|
|
577
678
|
reject(error);
|
|
578
679
|
}
|
|
579
680
|
});
|
|
580
|
-
}
|
|
681
|
+
}
|
|
581
682
|
|
|
582
683
|
function showEmailSlidedown(options?: AutoPromptOptions): Promise<void> {
|
|
583
684
|
return new Promise((resolve, reject) => {
|
|
685
|
+
if (isOneSignalScriptFailed) {
|
|
686
|
+
resolve();
|
|
687
|
+
return;
|
|
688
|
+
}
|
|
689
|
+
|
|
584
690
|
if (!doesOneSignalExist()) {
|
|
585
691
|
reactOneSignalFunctionQueue.push({
|
|
586
|
-
name:
|
|
692
|
+
name: 'showEmailSlidedown',
|
|
587
693
|
args: arguments,
|
|
588
694
|
promiseResolver: resolve,
|
|
589
695
|
});
|
|
@@ -600,13 +706,18 @@ interface IOneSignal {
|
|
|
600
706
|
reject(error);
|
|
601
707
|
}
|
|
602
708
|
});
|
|
603
|
-
}
|
|
709
|
+
}
|
|
604
710
|
|
|
605
711
|
function showSmsAndEmailSlidedown(options?: AutoPromptOptions): Promise<void> {
|
|
606
712
|
return new Promise((resolve, reject) => {
|
|
713
|
+
if (isOneSignalScriptFailed) {
|
|
714
|
+
resolve();
|
|
715
|
+
return;
|
|
716
|
+
}
|
|
717
|
+
|
|
607
718
|
if (!doesOneSignalExist()) {
|
|
608
719
|
reactOneSignalFunctionQueue.push({
|
|
609
|
-
name:
|
|
720
|
+
name: 'showSmsAndEmailSlidedown',
|
|
610
721
|
args: arguments,
|
|
611
722
|
promiseResolver: resolve,
|
|
612
723
|
});
|
|
@@ -623,13 +734,18 @@ interface IOneSignal {
|
|
|
623
734
|
reject(error);
|
|
624
735
|
}
|
|
625
736
|
});
|
|
626
|
-
}
|
|
737
|
+
}
|
|
627
738
|
|
|
628
|
-
function getNotificationPermission(onComplete?:
|
|
739
|
+
function getNotificationPermission(onComplete?: Action<NotificationPermission>): Promise<NotificationPermission> {
|
|
629
740
|
return new Promise((resolve, reject) => {
|
|
741
|
+
if (isOneSignalScriptFailed) {
|
|
742
|
+
resolve();
|
|
743
|
+
return;
|
|
744
|
+
}
|
|
745
|
+
|
|
630
746
|
if (!doesOneSignalExist()) {
|
|
631
747
|
reactOneSignalFunctionQueue.push({
|
|
632
|
-
name:
|
|
748
|
+
name: 'getNotificationPermission',
|
|
633
749
|
args: arguments,
|
|
634
750
|
promiseResolver: resolve,
|
|
635
751
|
});
|
|
@@ -646,13 +762,18 @@ interface IOneSignal {
|
|
|
646
762
|
reject(error);
|
|
647
763
|
}
|
|
648
764
|
});
|
|
649
|
-
}
|
|
765
|
+
}
|
|
650
766
|
|
|
651
767
|
function getUserId(callback?: Action<string | undefined | null>): Promise<string | undefined | null> {
|
|
652
768
|
return new Promise((resolve, reject) => {
|
|
769
|
+
if (isOneSignalScriptFailed) {
|
|
770
|
+
resolve();
|
|
771
|
+
return;
|
|
772
|
+
}
|
|
773
|
+
|
|
653
774
|
if (!doesOneSignalExist()) {
|
|
654
775
|
reactOneSignalFunctionQueue.push({
|
|
655
|
-
name:
|
|
776
|
+
name: 'getUserId',
|
|
656
777
|
args: arguments,
|
|
657
778
|
promiseResolver: resolve,
|
|
658
779
|
});
|
|
@@ -669,13 +790,18 @@ interface IOneSignal {
|
|
|
669
790
|
reject(error);
|
|
670
791
|
}
|
|
671
792
|
});
|
|
672
|
-
}
|
|
793
|
+
}
|
|
673
794
|
|
|
674
795
|
function getSubscription(callback?: Action<boolean>): Promise<boolean> {
|
|
675
796
|
return new Promise((resolve, reject) => {
|
|
797
|
+
if (isOneSignalScriptFailed) {
|
|
798
|
+
resolve();
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
|
|
676
802
|
if (!doesOneSignalExist()) {
|
|
677
803
|
reactOneSignalFunctionQueue.push({
|
|
678
|
-
name:
|
|
804
|
+
name: 'getSubscription',
|
|
679
805
|
args: arguments,
|
|
680
806
|
promiseResolver: resolve,
|
|
681
807
|
});
|
|
@@ -692,13 +818,18 @@ interface IOneSignal {
|
|
|
692
818
|
reject(error);
|
|
693
819
|
}
|
|
694
820
|
});
|
|
695
|
-
}
|
|
821
|
+
}
|
|
696
822
|
|
|
697
823
|
function setEmail(email: string, options?: SetEmailOptions): Promise<string|null> {
|
|
698
824
|
return new Promise((resolve, reject) => {
|
|
825
|
+
if (isOneSignalScriptFailed) {
|
|
826
|
+
resolve();
|
|
827
|
+
return;
|
|
828
|
+
}
|
|
829
|
+
|
|
699
830
|
if (!doesOneSignalExist()) {
|
|
700
831
|
reactOneSignalFunctionQueue.push({
|
|
701
|
-
name:
|
|
832
|
+
name: 'setEmail',
|
|
702
833
|
args: arguments,
|
|
703
834
|
promiseResolver: resolve,
|
|
704
835
|
});
|
|
@@ -715,13 +846,18 @@ interface IOneSignal {
|
|
|
715
846
|
reject(error);
|
|
716
847
|
}
|
|
717
848
|
});
|
|
718
|
-
}
|
|
849
|
+
}
|
|
719
850
|
|
|
720
851
|
function setSMSNumber(smsNumber: string, options?: SetSMSOptions): Promise<string | null> {
|
|
721
852
|
return new Promise((resolve, reject) => {
|
|
853
|
+
if (isOneSignalScriptFailed) {
|
|
854
|
+
resolve();
|
|
855
|
+
return;
|
|
856
|
+
}
|
|
857
|
+
|
|
722
858
|
if (!doesOneSignalExist()) {
|
|
723
859
|
reactOneSignalFunctionQueue.push({
|
|
724
|
-
name:
|
|
860
|
+
name: 'setSMSNumber',
|
|
725
861
|
args: arguments,
|
|
726
862
|
promiseResolver: resolve,
|
|
727
863
|
});
|
|
@@ -738,13 +874,18 @@ interface IOneSignal {
|
|
|
738
874
|
reject(error);
|
|
739
875
|
}
|
|
740
876
|
});
|
|
741
|
-
}
|
|
877
|
+
}
|
|
742
878
|
|
|
743
879
|
function logoutEmail(): Promise<void> {
|
|
744
880
|
return new Promise((resolve, reject) => {
|
|
881
|
+
if (isOneSignalScriptFailed) {
|
|
882
|
+
resolve();
|
|
883
|
+
return;
|
|
884
|
+
}
|
|
885
|
+
|
|
745
886
|
if (!doesOneSignalExist()) {
|
|
746
887
|
reactOneSignalFunctionQueue.push({
|
|
747
|
-
name:
|
|
888
|
+
name: 'logoutEmail',
|
|
748
889
|
args: arguments,
|
|
749
890
|
promiseResolver: resolve,
|
|
750
891
|
});
|
|
@@ -761,13 +902,18 @@ interface IOneSignal {
|
|
|
761
902
|
reject(error);
|
|
762
903
|
}
|
|
763
904
|
});
|
|
764
|
-
}
|
|
905
|
+
}
|
|
765
906
|
|
|
766
907
|
function logoutSMS(): Promise<void> {
|
|
767
908
|
return new Promise((resolve, reject) => {
|
|
909
|
+
if (isOneSignalScriptFailed) {
|
|
910
|
+
resolve();
|
|
911
|
+
return;
|
|
912
|
+
}
|
|
913
|
+
|
|
768
914
|
if (!doesOneSignalExist()) {
|
|
769
915
|
reactOneSignalFunctionQueue.push({
|
|
770
|
-
name:
|
|
916
|
+
name: 'logoutSMS',
|
|
771
917
|
args: arguments,
|
|
772
918
|
promiseResolver: resolve,
|
|
773
919
|
});
|
|
@@ -784,13 +930,18 @@ interface IOneSignal {
|
|
|
784
930
|
reject(error);
|
|
785
931
|
}
|
|
786
932
|
});
|
|
787
|
-
}
|
|
933
|
+
}
|
|
788
934
|
|
|
789
935
|
function setExternalUserId(externalUserId: string | undefined | null, authHash?: string): Promise<void> {
|
|
790
936
|
return new Promise((resolve, reject) => {
|
|
937
|
+
if (isOneSignalScriptFailed) {
|
|
938
|
+
resolve();
|
|
939
|
+
return;
|
|
940
|
+
}
|
|
941
|
+
|
|
791
942
|
if (!doesOneSignalExist()) {
|
|
792
943
|
reactOneSignalFunctionQueue.push({
|
|
793
|
-
name:
|
|
944
|
+
name: 'setExternalUserId',
|
|
794
945
|
args: arguments,
|
|
795
946
|
promiseResolver: resolve,
|
|
796
947
|
});
|
|
@@ -807,13 +958,18 @@ interface IOneSignal {
|
|
|
807
958
|
reject(error);
|
|
808
959
|
}
|
|
809
960
|
});
|
|
810
|
-
}
|
|
961
|
+
}
|
|
811
962
|
|
|
812
963
|
function removeExternalUserId(): Promise<void> {
|
|
813
964
|
return new Promise((resolve, reject) => {
|
|
965
|
+
if (isOneSignalScriptFailed) {
|
|
966
|
+
resolve();
|
|
967
|
+
return;
|
|
968
|
+
}
|
|
969
|
+
|
|
814
970
|
if (!doesOneSignalExist()) {
|
|
815
971
|
reactOneSignalFunctionQueue.push({
|
|
816
|
-
name:
|
|
972
|
+
name: 'removeExternalUserId',
|
|
817
973
|
args: arguments,
|
|
818
974
|
promiseResolver: resolve,
|
|
819
975
|
});
|
|
@@ -830,13 +986,18 @@ interface IOneSignal {
|
|
|
830
986
|
reject(error);
|
|
831
987
|
}
|
|
832
988
|
});
|
|
833
|
-
}
|
|
989
|
+
}
|
|
834
990
|
|
|
835
991
|
function getExternalUserId(): Promise<string | undefined | null> {
|
|
836
992
|
return new Promise((resolve, reject) => {
|
|
993
|
+
if (isOneSignalScriptFailed) {
|
|
994
|
+
resolve();
|
|
995
|
+
return;
|
|
996
|
+
}
|
|
997
|
+
|
|
837
998
|
if (!doesOneSignalExist()) {
|
|
838
999
|
reactOneSignalFunctionQueue.push({
|
|
839
|
-
name:
|
|
1000
|
+
name: 'getExternalUserId',
|
|
840
1001
|
args: arguments,
|
|
841
1002
|
promiseResolver: resolve,
|
|
842
1003
|
});
|
|
@@ -853,13 +1014,18 @@ interface IOneSignal {
|
|
|
853
1014
|
reject(error);
|
|
854
1015
|
}
|
|
855
1016
|
});
|
|
856
|
-
}
|
|
1017
|
+
}
|
|
857
1018
|
|
|
858
1019
|
function provideUserConsent(consent: boolean): Promise<void> {
|
|
859
1020
|
return new Promise((resolve, reject) => {
|
|
1021
|
+
if (isOneSignalScriptFailed) {
|
|
1022
|
+
resolve();
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
860
1026
|
if (!doesOneSignalExist()) {
|
|
861
1027
|
reactOneSignalFunctionQueue.push({
|
|
862
|
-
name:
|
|
1028
|
+
name: 'provideUserConsent',
|
|
863
1029
|
args: arguments,
|
|
864
1030
|
promiseResolver: resolve,
|
|
865
1031
|
});
|
|
@@ -876,13 +1042,18 @@ interface IOneSignal {
|
|
|
876
1042
|
reject(error);
|
|
877
1043
|
}
|
|
878
1044
|
});
|
|
879
|
-
}
|
|
1045
|
+
}
|
|
880
1046
|
|
|
881
1047
|
function getEmailId(callback?: Action<string | undefined>): Promise<string | null | undefined> {
|
|
882
1048
|
return new Promise((resolve, reject) => {
|
|
1049
|
+
if (isOneSignalScriptFailed) {
|
|
1050
|
+
resolve();
|
|
1051
|
+
return;
|
|
1052
|
+
}
|
|
1053
|
+
|
|
883
1054
|
if (!doesOneSignalExist()) {
|
|
884
1055
|
reactOneSignalFunctionQueue.push({
|
|
885
|
-
name:
|
|
1056
|
+
name: 'getEmailId',
|
|
886
1057
|
args: arguments,
|
|
887
1058
|
promiseResolver: resolve,
|
|
888
1059
|
});
|
|
@@ -899,13 +1070,18 @@ interface IOneSignal {
|
|
|
899
1070
|
reject(error);
|
|
900
1071
|
}
|
|
901
1072
|
});
|
|
902
|
-
}
|
|
1073
|
+
}
|
|
903
1074
|
|
|
904
1075
|
function getSMSId(callback?: Action<string | undefined>): Promise<string | null | undefined> {
|
|
905
1076
|
return new Promise((resolve, reject) => {
|
|
1077
|
+
if (isOneSignalScriptFailed) {
|
|
1078
|
+
resolve();
|
|
1079
|
+
return;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
906
1082
|
if (!doesOneSignalExist()) {
|
|
907
1083
|
reactOneSignalFunctionQueue.push({
|
|
908
|
-
name:
|
|
1084
|
+
name: 'getSMSId',
|
|
909
1085
|
args: arguments,
|
|
910
1086
|
promiseResolver: resolve,
|
|
911
1087
|
});
|
|
@@ -922,13 +1098,18 @@ interface IOneSignal {
|
|
|
922
1098
|
reject(error);
|
|
923
1099
|
}
|
|
924
1100
|
});
|
|
925
|
-
}
|
|
1101
|
+
}
|
|
926
1102
|
|
|
927
1103
|
function sendOutcome(outcomeName: string, outcomeWeight?: number | undefined): Promise<void> {
|
|
928
1104
|
return new Promise((resolve, reject) => {
|
|
1105
|
+
if (isOneSignalScriptFailed) {
|
|
1106
|
+
resolve();
|
|
1107
|
+
return;
|
|
1108
|
+
}
|
|
1109
|
+
|
|
929
1110
|
if (!doesOneSignalExist()) {
|
|
930
1111
|
reactOneSignalFunctionQueue.push({
|
|
931
|
-
name:
|
|
1112
|
+
name: 'sendOutcome',
|
|
932
1113
|
args: arguments,
|
|
933
1114
|
promiseResolver: resolve,
|
|
934
1115
|
});
|
|
@@ -945,7 +1126,7 @@ interface IOneSignal {
|
|
|
945
1126
|
reject(error);
|
|
946
1127
|
}
|
|
947
1128
|
});
|
|
948
|
-
}
|
|
1129
|
+
}
|
|
949
1130
|
|
|
950
1131
|
const OneSignalReact: IOneSignal = {
|
|
951
1132
|
init,
|