react-native-acoustic-connect-beta
Version:
BETA: React native plugin for Acoustic Connect
107 lines (97 loc) • 3.8 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useDialogTracking = exports.default = void 0;
var _react = require("react");
var _DialogListener = _interopRequireDefault(require("./DialogListener"));
var _TLTRN = _interopRequireDefault(require("../TLTRN"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/********************************************************************************************
* Copyright (C) 2025 Acoustic, L.P. All rights reserved.
*
* NOTICE: This file contains material that is confidential and proprietary to
* Acoustic, L.P. and/or other developers. No license is granted under any intellectual or
* industrial property rights of Acoustic, L.P. except as may be provided in an agreement with
* Acoustic, L.P. Any unauthorized copying or distribution of content from this file is
* prohibited.
********************************************************************************************/
/**
* React hook for tracking custom dialog events
* Provides utilities to track dialog show, dismiss, and button click events
*/
const useDialogTracking = () => {
const dialogIds = (0, _react.useRef)(new Set());
/**
* Generate a unique dialog ID
*/
const generateDialogId = (0, _react.useCallback)(() => {
const id = Math.random().toString(36).substr(2, 9) + Date.now().toString(36);
dialogIds.current.add(id);
return id;
}, []);
/**
* Track a custom dialog show event
*/
const trackDialogShow = (0, _react.useCallback)((dialogId, title, buttons) => {
_DialogListener.default.getInstance().trackCustomDialogShow(dialogId, title, buttons);
// Note: The actual native call is handled by the DialogListener event system
// No need to call TLTRN.logDialogShowEvent directly here
}, []);
/**
* Track a custom dialog dismiss event
*/
const trackDialogDismiss = (0, _react.useCallback)((dialogId, reason = 'manual') => {
_DialogListener.default.getInstance().trackCustomDialogDismiss(dialogId, reason);
// Note: The actual native call is handled by the DialogListener event system
// No need to call TLTRN.logDialogDismissEvent directly here
}, []);
/**
* Track a custom dialog button click event
*/
const trackDialogButtonClick = (0, _react.useCallback)((dialogId, buttonText, buttonIndex) => {
_DialogListener.default.getInstance().trackCustomDialogButtonClick(dialogId, buttonText, buttonIndex);
// Note: The actual native call is handled by the DialogListener event system
// No need to call TLTRN.logDialogButtonClickEvent directly here
}, []);
/**
* Track a custom dialog event
*/
const trackDialogCustomEvent = (0, _react.useCallback)((dialogId, eventName, values) => {
_TLTRN.default.logDialogCustomEvent(dialogId, eventName, values);
}, []);
/**
* Create a wrapped button with automatic tracking
*/
const createTrackedButton = (0, _react.useCallback)((dialogId, button, buttonIndex) => {
return {
...button,
onPress: () => {
// Track the button click
trackDialogButtonClick(dialogId, button.text || '', buttonIndex);
// Call the original onPress if it exists
if (button.onPress) {
button.onPress();
}
}
};
}, [trackDialogButtonClick]);
/**
* Clean up dialog tracking
*/
const cleanup = (0, _react.useCallback)(() => {
dialogIds.current.clear();
}, []);
return {
generateDialogId,
trackDialogShow,
trackDialogDismiss,
trackDialogButtonClick,
trackDialogCustomEvent,
createTrackedButton,
cleanup
};
};
exports.useDialogTracking = useDialogTracking;
var _default = exports.default = useDialogTracking;
//# sourceMappingURL=useDialogTracking.js.map
;