react-native-moengage
Version:
MoEngage is a mobile marketing automation company. This react-native SDK helps you track events, trigger smart notifications and in-apps, provides a drop-in Inbox Controller for notifications.
54 lines (51 loc) • 2.63 kB
text/typescript
import {isValidObject} from "../utils/MoEHelper";
import {
getCustomActionObj,
getMoEInAppData,
getNavigationObj,
getMoESelfHandledCampaignData
} from "../moeParser/MoEInAppParser";
import {getMoEPushPayload, getMoEPushToken} from "../moeParser/MoEPushNotificationParser";
import {MOE_DATA, ACCOUNT_META, MOE_PAYLOAD} from "./MoEConstants";
import {PERMISSION_RESULT} from "..";
import {getPermissionResult} from "../moeParser/MoEngagePayloadParser";
export function executeHandler(
handler: Function,
notification: any,
type: String
) {
if (handler && type) {
const payload = notification[MOE_PAYLOAD];
const notificationPayload = JSON.parse(payload);
if (isValidObject(notificationPayload)) {
if (type == "pushTokenGenerated") {
var pushTokenObject = getMoEPushToken(notificationPayload);
pushTokenObject != undefined ? handler(pushTokenObject) : null;
} else if (type == PERMISSION_RESULT) {
let payload = getPermissionResult(notificationPayload)
handler(payload)
} else {
const accountMeta = notificationPayload[ACCOUNT_META];
if (accountMeta != undefined && isValidObject(accountMeta)) {
const payload = notificationPayload[MOE_DATA];
if (type == "inAppCampaignShown" || type == "inAppCampaignDismissed") {
var inAppObject = getMoEInAppData(payload, accountMeta);
inAppObject != undefined ? handler(inAppObject) : null;
} else if (type == "inAppCampaignSelfHandled") {
var selfHandled = getMoESelfHandledCampaignData(payload, accountMeta);
selfHandled != undefined ? handler(selfHandled) : null;
} else if (type == "inAppCampaignCustomAction") {
var cutomAction = getCustomActionObj(payload, accountMeta);
cutomAction != undefined ? handler(cutomAction) : null;
} else if (type == "inAppCampaignClicked") {
var navigationAction = getNavigationObj(payload, accountMeta);
navigationAction != undefined ? handler(navigationAction) : null;
} else if (type == "pushClicked") {
var pushCampaignObject = getMoEPushPayload(payload, accountMeta);
pushCampaignObject != undefined ? handler(pushCampaignObject) : null;
}
}
}
}
}
}