UNPKG

@revrag-ai/embed-react-native

Version:

A powerful React Native library for integrating AI-powered voice agents into mobile applications. Features real-time voice communication, intelligent speech processing, customizable UI components, and comprehensive event handling for building conversation

70 lines (65 loc) 2.16 kB
"use strict"; import { getAgentData, setAgentData } from "../store/store.key.js"; import { APIService } from "../api/api.js"; // Predefined event keys export let EventKeys = /*#__PURE__*/function (EventKeys) { EventKeys["USER_DATA"] = "user_data"; EventKeys["SCREEN_STATE"] = "state_data"; return EventKeys; }({}); class Embed { events = {}; // Automatically adds a default listener if none exists ensureDefaultListener(eventKey) { if (!this.events[eventKey]) { this.events[eventKey] = [data => { console.log(`[Default] Event handled for ${eventKey}:`, data); }]; } } async Event(eventKey, data) { if (!Object.values(EventKeys).includes(eventKey)) { console.error(`Invalid event key: ${eventKey}`); throw new Error(`Invalid event key: ${eventKey}. Must be one of: ${Object.values(EventKeys).join(', ')}`); } const key = eventKey; if (key !== EventKeys.USER_DATA) { const userIdentity = await getAgentData(EventKeys.USER_DATA); if (userIdentity) { data.app_user_id = userIdentity.app_user_id; } else { throw new Error('User identity not found'); } } // Ensure a default listener is registered if not already this.ensureDefaultListener(key); console.log('response,updateUserDatniuioioioa'); // Trigger API call try { const apiService = APIService.getInstance(); const response = await apiService.updateUserData({ eventKey: key, data }); console.log('response,updateUserData', response); if (!response.success) { console.error('Failed to trigger API for event:', eventKey); } setAgentData(data, key); } catch (error) { console.error('Error triggering API:', error); } // Trigger event listeners this.events[key]?.forEach(callback => callback(data)); } // Still allow custom listeners (optional) on(eventKey, callback) { if (!this.events[eventKey]) { this.events[eventKey] = []; } this.events[eventKey]?.push(callback); } } const embed = new Embed(); export default embed; //# sourceMappingURL=embed.event.js.map