UNPKG

react-native-acoustic-connect-beta

Version:

BETA: React native plugin for Acoustic Connect

107 lines (97 loc) 3.8 kB
"use strict"; 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