react-native-blitzllama-mmkv
Version:
Blitzllama React Native Library with mmkv
106 lines (105 loc) • 4.38 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable react-hooks/exhaustive-deps */
const React = __importStar(require("react"));
const react_native_1 = require("react-native");
const apiCall_1 = require("../apiCall");
const utils_1 = require("../utils");
const SurveyModal_1 = __importDefault(require("./SurveyModal"));
const Blitzllama = ({ trigger, showSurvey, closeSurvey, event_properties }) => {
const [isShow, setShow] = React.useState(false);
const toggleModal = (show) => {
setShow(show);
if (!show && closeSurvey) {
closeSurvey();
}
};
const triggerEvent = async () => {
if (trigger && showSurvey) {
let triggers = await (0, utils_1.getData)('@blitz_triggers');
if (!triggers) {
await (0, apiCall_1.executePendingArray)('trigger');
triggers = await (0, utils_1.getData)('@blitz_triggers');
}
if (triggers) {
const parseTriggers = JSON.parse(triggers);
if (parseTriggers &&
parseTriggers.trigger_with_events &&
parseTriggers.trigger_with_events.length > 0) {
const triggerItem = parseTriggers.trigger_with_events.find((t) => t.trigger_name === trigger);
if (triggerItem &&
event_properties &&
typeof event_properties === 'object') {
const { properties = [] } = triggerItem;
const trigger_keys = properties.map((p) => p.property_name);
const event_keys = Object.keys(event_properties);
for (const i in event_keys) {
if (!trigger_keys.includes(event_keys[i])) {
setShow(true);
return;
}
}
}
}
if (parseTriggers && parseTriggers.triggers) {
if (parseTriggers.triggers.includes(trigger)) {
setShow(true);
}
else if (!parseTriggers.all_triggers.includes(trigger)) {
await (0, apiCall_1._createTrigger)(trigger);
}
}
}
}
};
React.useEffect(() => {
if (trigger && trigger.length > 0 && showSurvey) {
triggerEvent();
}
}, [trigger, showSurvey, closeSurvey]);
if (trigger && trigger.length > 0 && isShow) {
return (<react_native_1.View style={styles.modalContainer}>
<SurveyModal_1.default modalVisible={isShow} setModalVisible={() => toggleModal(false)} trigger={trigger} event_properties={event_properties}/>
</react_native_1.View>);
}
else {
return null;
}
};
const styles = react_native_1.StyleSheet.create({
modalContainer: {
justifyContent: 'flex-end',
},
buttonContainer: {
justifyContent: 'center',
alignItems: 'center',
marginTop: 20,
},
});
exports.default = Blitzllama;