react-onesignal
Advanced tools
Comparing version 1.5.1 to 1.6.0
@@ -48,3 +48,5 @@ module.exports = { | ||
"no-continue": 0, | ||
"no-unused-vars": "off", | ||
"@typescript-eslint/no-unused-vars": ["error"] | ||
}, | ||
}; |
@@ -1,4 +0,5 @@ | ||
import permissionStatusEnum from './permissionStatus'; | ||
import permissionStatusEnum from './constants/permissionStatusEnum'; | ||
import useOneSignalSetup from './hooks/useOneSignalSetup'; | ||
import OneSignal from './oneSignal'; | ||
export { permissionStatusEnum as permissionStatus, }; | ||
export { permissionStatusEnum as permissionStatus, useOneSignalSetup, }; | ||
export default OneSignal; |
@@ -1,2 +0,6 @@ | ||
/* eslint-disable no-unused-vars */ | ||
import { useRef, useEffect, useState } from 'react'; | ||
/** | ||
* Defines possible values for permissions statuses. | ||
*/ | ||
var permissionStatusEnum; | ||
@@ -242,3 +246,3 @@ (function (permissionStatusEnum) { | ||
if (!oneSignal) { | ||
reject(); | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
@@ -275,2 +279,20 @@ } | ||
/** | ||
* Remove email on OneSignal instance. | ||
*/ | ||
var logoutEmail = function () { return new Promise(function (resolve, reject) { | ||
var oneSignal = getOneSignalInstance(); | ||
if (!oneSignal) { | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
} | ||
try { | ||
oneSignal.logoutEmail() | ||
.then(function (value) { return resolve(value); }) | ||
.catch(function (error) { return reject(error); }); | ||
} | ||
catch (error) { | ||
reject(error); | ||
} | ||
}); }; | ||
/** | ||
* Gets the email ID configured on OneSignal instance. | ||
@@ -331,2 +353,20 @@ */ | ||
/** | ||
* Sets the external user ID on OneSignal instance. | ||
*/ | ||
var removeExternalUserId = function () { return new Promise(function (resolve, reject) { | ||
var oneSignal = getOneSignalInstance(); | ||
if (!oneSignal) { | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
} | ||
try { | ||
oneSignal.removeExternalUserId() | ||
.then(function () { return resolve(); }) | ||
.catch(function (error) { return reject(error); }); | ||
} | ||
catch (error) { | ||
reject(error); | ||
} | ||
}); }; | ||
/** | ||
* Gets the external user ID configured on OneSignal instance. | ||
@@ -394,2 +434,3 @@ */ | ||
var ReactOneSignal = { | ||
getOneSignalInstance: getOneSignalInstance, | ||
initialize: initialize, | ||
@@ -403,5 +444,7 @@ notificationPermission: notificationPermission, | ||
setEmail: setEmail, | ||
logoutEmail: logoutEmail, | ||
getEmailId: getEmailId, | ||
getPlayerId: getPlayerId, | ||
setExternalUserId: setExternalUserId, | ||
removeExternalUserId: removeExternalUserId, | ||
getExternalUserId: getExternalUserId, | ||
@@ -412,4 +455,48 @@ sendTag: sendTag, | ||
/** | ||
* Hook that exposes an interval, similar to setInterval. | ||
* @param callback The callback function | ||
* @param delay The delay | ||
*/ | ||
function useInterval(callback, delay) { | ||
var savedCallback = useRef(); | ||
// Remember the latest callback. | ||
useEffect(function () { | ||
savedCallback.current = callback; | ||
}, [callback]); | ||
// Set up the interval. | ||
useEffect(function () { | ||
if (delay !== null && savedCallback.current) { | ||
var tick = function () { | ||
savedCallback.current(); | ||
}; | ||
var id_1 = setInterval(tick, delay); | ||
return function () { return clearInterval(id_1); }; | ||
} | ||
return function () { }; | ||
}, [delay]); | ||
} | ||
/** | ||
* Hook that waits for oneSignal initialization before executing the callback | ||
* useful for using setEmail and setExternalUserId without getting error | ||
* it uses setInterval to check if OneSignal is setup, calling the callback when it is | ||
* | ||
* @param callback the callback to be called when oneSignal is initialized. | ||
* @param pollingIntervalMs time between checks, null to disable. | ||
*/ | ||
var useOneSignalSetup = function (callback, pollingIntervalMs) { | ||
if (pollingIntervalMs === void 0) { pollingIntervalMs = 100; } | ||
var _a = useState(false), initialized = _a[0], setInitialized = _a[1]; | ||
useInterval(function () { | ||
var oneSignal = getOneSignalInstance(); | ||
if (oneSignal) { | ||
setInitialized(true); | ||
callback(); | ||
} | ||
}, initialized ? null : pollingIntervalMs); | ||
}; | ||
export default ReactOneSignal; | ||
export { permissionStatusEnum$1 as permissionStatus }; | ||
export { permissionStatusEnum$1 as permissionStatus, useOneSignalSetup }; | ||
//# sourceMappingURL=index.es.js.map |
@@ -5,3 +5,7 @@ 'use strict'; | ||
/* eslint-disable no-unused-vars */ | ||
var react = require('react'); | ||
/** | ||
* Defines possible values for permissions statuses. | ||
*/ | ||
var permissionStatusEnum; | ||
@@ -247,3 +251,3 @@ (function (permissionStatusEnum) { | ||
if (!oneSignal) { | ||
reject(); | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
@@ -280,2 +284,20 @@ } | ||
/** | ||
* Remove email on OneSignal instance. | ||
*/ | ||
var logoutEmail = function () { return new Promise(function (resolve, reject) { | ||
var oneSignal = getOneSignalInstance(); | ||
if (!oneSignal) { | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
} | ||
try { | ||
oneSignal.logoutEmail() | ||
.then(function (value) { return resolve(value); }) | ||
.catch(function (error) { return reject(error); }); | ||
} | ||
catch (error) { | ||
reject(error); | ||
} | ||
}); }; | ||
/** | ||
* Gets the email ID configured on OneSignal instance. | ||
@@ -336,2 +358,20 @@ */ | ||
/** | ||
* Sets the external user ID on OneSignal instance. | ||
*/ | ||
var removeExternalUserId = function () { return new Promise(function (resolve, reject) { | ||
var oneSignal = getOneSignalInstance(); | ||
if (!oneSignal) { | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
} | ||
try { | ||
oneSignal.removeExternalUserId() | ||
.then(function () { return resolve(); }) | ||
.catch(function (error) { return reject(error); }); | ||
} | ||
catch (error) { | ||
reject(error); | ||
} | ||
}); }; | ||
/** | ||
* Gets the external user ID configured on OneSignal instance. | ||
@@ -399,2 +439,3 @@ */ | ||
var ReactOneSignal = { | ||
getOneSignalInstance: getOneSignalInstance, | ||
initialize: initialize, | ||
@@ -408,5 +449,7 @@ notificationPermission: notificationPermission, | ||
setEmail: setEmail, | ||
logoutEmail: logoutEmail, | ||
getEmailId: getEmailId, | ||
getPlayerId: getPlayerId, | ||
setExternalUserId: setExternalUserId, | ||
removeExternalUserId: removeExternalUserId, | ||
getExternalUserId: getExternalUserId, | ||
@@ -417,4 +460,49 @@ sendTag: sendTag, | ||
/** | ||
* Hook that exposes an interval, similar to setInterval. | ||
* @param callback The callback function | ||
* @param delay The delay | ||
*/ | ||
function useInterval(callback, delay) { | ||
var savedCallback = react.useRef(); | ||
// Remember the latest callback. | ||
react.useEffect(function () { | ||
savedCallback.current = callback; | ||
}, [callback]); | ||
// Set up the interval. | ||
react.useEffect(function () { | ||
if (delay !== null && savedCallback.current) { | ||
var tick = function () { | ||
savedCallback.current(); | ||
}; | ||
var id_1 = setInterval(tick, delay); | ||
return function () { return clearInterval(id_1); }; | ||
} | ||
return function () { }; | ||
}, [delay]); | ||
} | ||
/** | ||
* Hook that waits for oneSignal initialization before executing the callback | ||
* useful for using setEmail and setExternalUserId without getting error | ||
* it uses setInterval to check if OneSignal is setup, calling the callback when it is | ||
* | ||
* @param callback the callback to be called when oneSignal is initialized. | ||
* @param pollingIntervalMs time between checks, null to disable. | ||
*/ | ||
var useOneSignalSetup = function (callback, pollingIntervalMs) { | ||
if (pollingIntervalMs === void 0) { pollingIntervalMs = 100; } | ||
var _a = react.useState(false), initialized = _a[0], setInitialized = _a[1]; | ||
useInterval(function () { | ||
var oneSignal = getOneSignalInstance(); | ||
if (oneSignal) { | ||
setInitialized(true); | ||
callback(); | ||
} | ||
}, initialized ? null : pollingIntervalMs); | ||
}; | ||
exports.default = ReactOneSignal; | ||
exports.permissionStatus = permissionStatusEnum$1; | ||
exports.useOneSignalSetup = useOneSignalSetup; | ||
//# sourceMappingURL=index.js.map |
@@ -1,6 +0,11 @@ | ||
import { OneSignalOptions, IOneSignalEvent } from './oneSignal.types'; | ||
import { IOneSignal, OneSignalOptions, IOneSignalEvent } from './oneSignal.types'; | ||
/** | ||
* Gets the window OneSignal instance. | ||
*/ | ||
export declare const getOneSignalInstance: () => IOneSignal | null; | ||
/** | ||
* Object for manipulating OneSignal. | ||
*/ | ||
declare const ReactOneSignal: { | ||
getOneSignalInstance: () => IOneSignal | null; | ||
initialize: (appId: string, options: OneSignalOptions, events?: IOneSignalEvent[]) => void; | ||
@@ -14,5 +19,7 @@ notificationPermission: () => string[] | null; | ||
setEmail: (email: string) => Promise<string>; | ||
logoutEmail: () => Promise<void>; | ||
getEmailId: () => Promise<string>; | ||
getPlayerId: () => Promise<string>; | ||
setExternalUserId: (externalUserId: string | number) => Promise<void>; | ||
removeExternalUserId: () => Promise<void>; | ||
getExternalUserId: () => Promise<string>; | ||
@@ -19,0 +26,0 @@ sendTag: (key: string, val: string) => Promise<string>; |
@@ -9,5 +9,7 @@ export interface IOneSignal { | ||
setEmail: (email: string) => Promise<string>; | ||
logoutEmail: () => Promise<void>; | ||
getEmailId: () => Promise<string>; | ||
getUserId: () => Promise<string>; | ||
setExternalUserId: (externalUserId: string | number) => Promise<void>; | ||
removeExternalUserId: () => Promise<void>; | ||
getExternalUserId: () => Promise<any>; | ||
@@ -14,0 +16,0 @@ initialized: boolean; |
@@ -0,1 +1,4 @@ | ||
/** | ||
* Defines possible values for permissions statuses. | ||
*/ | ||
declare enum permissionStatusEnum { | ||
@@ -2,0 +5,0 @@ Default = "default", |
{ | ||
"name": "react-onesignal", | ||
"version": "1.5.1", | ||
"version": "1.6.0", | ||
"description": "React OneSignal Module: Make it easy to integrate OneSignal with your React App!", | ||
@@ -21,3 +21,5 @@ "author": "pedro-lb", | ||
}, | ||
"peerDependencies": {}, | ||
"peerDependencies": { | ||
"react": ">= 16.8" | ||
}, | ||
"devDependencies": { | ||
@@ -57,2 +59,3 @@ "@babel/core": "^7.0.0", | ||
"eslint-plugin-react-hooks": "^1.7.0", | ||
"react": "^16.13.1", | ||
"rollup": "^1.1.2", | ||
@@ -59,0 +62,0 @@ "rollup-plugin-babel": "^4.3.2", |
@@ -81,5 +81,7 @@ # React OneSignal | ||
setEmail: (email: string) => Promise<string>; | ||
logoutEmail: () => Promise<void>; | ||
getEmailId: () => Promise<string>; | ||
getUserId: () => Promise<string>; | ||
setExternalUserId: (externalUserId: string | number) => Promise<void>; | ||
removeExternalUserId: () => Promise<void>; | ||
getExternalUserId: () => Promise<any>; | ||
@@ -125,3 +127,3 @@ initialized: boolean; | ||
You can use `setEmail` and `getEmailId` to track user email. | ||
You can use `setEmail`, `getEmailId` and `logoutEmail` to track user email. | ||
@@ -134,2 +136,5 @@ ```js | ||
const emailId = await OneSignal.getEmailId(); | ||
// Remove email tracking | ||
OneSignal.logoutEmail(); | ||
``` | ||
@@ -139,3 +144,3 @@ | ||
You can use `setExternalUserId` and `getExternalUserId` to track external user ID. | ||
You can use `setExternalUserId`, `getExternalUserId` and `removeExternalUserId` to track external user ID. | ||
@@ -148,2 +153,5 @@ ```js | ||
const externalUserId = await OneSignal.getExternalUserId(); | ||
// Remove external user ID | ||
OneSignal.removeExternalUserId(); | ||
``` | ||
@@ -215,2 +223,26 @@ | ||
### Setup hook | ||
To avoid error due to OneSignal not initialized, you can use useOneSignalSetup hook, passing a callback to be called when OneSignal is ready | ||
```ts | ||
import OneSignal, { useOneSignalSetup } from 'react-onesignal'; | ||
type AppProps = { | ||
user: { | ||
id: string; | ||
Email: string; | ||
}; | ||
}; | ||
function App(props: AppProps) { | ||
const { user } = props; | ||
useOneSignalSetup(() => { | ||
OneSignal.setEmail(user.Email); | ||
OneSignal.setExternalUserId(user.id); | ||
}); | ||
} | ||
``` | ||
## Contributing | ||
@@ -217,0 +249,0 @@ |
@@ -1,2 +0,3 @@ | ||
import permissionStatusEnum from './permissionStatus'; | ||
import permissionStatusEnum from './constants/permissionStatusEnum'; | ||
import useOneSignalSetup from './hooks/useOneSignalSetup'; | ||
import OneSignal from './oneSignal'; | ||
@@ -6,4 +7,5 @@ | ||
permissionStatusEnum as permissionStatus, | ||
useOneSignalSetup, | ||
}; | ||
export default OneSignal; |
@@ -1,2 +0,1 @@ | ||
// eslint-disable-next-line no-unused-vars | ||
import { IOneSignal, OneSignalOptions, IOneSignalEvent } from './oneSignal.types'; | ||
@@ -118,3 +117,3 @@ | ||
*/ | ||
const getOneSignalInstance = () => { | ||
export const getOneSignalInstance = () => { | ||
const OneSignal: IOneSignal = window['OneSignal']; | ||
@@ -303,3 +302,3 @@ | ||
if (!oneSignal) { | ||
reject(); | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
@@ -339,2 +338,22 @@ } | ||
/** | ||
* Remove email on OneSignal instance. | ||
*/ | ||
const logoutEmail = () => new Promise<void>((resolve, reject) => { | ||
const oneSignal = getOneSignalInstance(); | ||
if (!oneSignal) { | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
} | ||
try { | ||
oneSignal.logoutEmail() | ||
.then((value) => resolve(value)) | ||
.catch((error) => reject(error)); | ||
} catch (error) { | ||
reject(error); | ||
} | ||
}); | ||
/** | ||
* Gets the email ID configured on OneSignal instance. | ||
@@ -403,2 +422,23 @@ */ | ||
/** | ||
* Sets the external user ID on OneSignal instance. | ||
*/ | ||
const removeExternalUserId = ( | ||
) => new Promise<void>((resolve, reject) => { | ||
const oneSignal = getOneSignalInstance(); | ||
if (!oneSignal) { | ||
reject(new Error(ONESIGNAL_NOT_SETUP_ERROR)); | ||
return; | ||
} | ||
try { | ||
oneSignal.removeExternalUserId() | ||
.then(() => resolve()) | ||
.catch((error) => reject(error)); | ||
} catch (error) { | ||
reject(error); | ||
} | ||
}); | ||
/** | ||
* Gets the external user ID configured on OneSignal instance. | ||
@@ -468,2 +508,3 @@ */ | ||
/** | ||
@@ -473,2 +514,3 @@ * Object for manipulating OneSignal. | ||
const ReactOneSignal = { | ||
getOneSignalInstance, | ||
initialize, | ||
@@ -482,5 +524,7 @@ notificationPermission, | ||
setEmail, | ||
logoutEmail, | ||
getEmailId, | ||
getPlayerId, | ||
setExternalUserId, | ||
removeExternalUserId, | ||
getExternalUserId, | ||
@@ -487,0 +531,0 @@ sendTag, |
@@ -9,5 +9,7 @@ export interface IOneSignal { | ||
setEmail: (email: string) => Promise<string>; | ||
logoutEmail: () => Promise<void>; | ||
getEmailId: () => Promise<string>; | ||
getUserId: () => Promise<string>; | ||
setExternalUserId: (externalUserId: string | number) => Promise<void>; | ||
removeExternalUserId: () => Promise<void>; | ||
getExternalUserId: () => Promise<any>; | ||
@@ -14,0 +16,0 @@ initialized: boolean; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
114615
23
1761
255
1
42