@revrag-ai/embed-react-native 1.0.15 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/api/api.js +6 -5
- package/dist/commonjs/api/api.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedButton.js +140 -318
- package/dist/commonjs/components/Embed/EmbedButton.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedVoice.js +16 -4
- package/dist/commonjs/components/Embed/EmbedVoice.js.map +1 -1
- package/dist/commonjs/context/EmbedProvider.js +638 -0
- package/dist/commonjs/context/EmbedProvider.js.map +1 -0
- package/dist/commonjs/events/embed.event.js +141 -7
- package/dist/commonjs/events/embed.event.js.map +1 -1
- package/dist/commonjs/hooks/EmbedButton.animations.js +181 -0
- package/dist/commonjs/hooks/EmbedButton.animations.js.map +1 -0
- package/dist/commonjs/hooks/EmbedButton.helpers.js +90 -0
- package/dist/commonjs/hooks/EmbedButton.helpers.js.map +1 -0
- package/dist/commonjs/hooks/EmbedButton.hooks.js +165 -0
- package/dist/commonjs/hooks/EmbedButton.hooks.js.map +1 -0
- package/dist/commonjs/hooks/initialize.js +65 -25
- package/dist/commonjs/hooks/initialize.js.map +1 -1
- package/dist/commonjs/index.js +14 -0
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/utils/constant.js +88 -0
- package/dist/commonjs/utils/constant.js.map +1 -0
- package/dist/commonjs/utils/reanimated.helper.js +2 -3
- package/dist/commonjs/utils/reanimated.helper.js.map +1 -1
- package/dist/module/api/api.js +6 -6
- package/dist/module/api/api.js.map +1 -1
- package/dist/module/components/Embed/EmbedButton.js +141 -320
- package/dist/module/components/Embed/EmbedButton.js.map +1 -1
- package/dist/module/components/Embed/EmbedVoice.js +16 -4
- package/dist/module/components/Embed/EmbedVoice.js.map +1 -1
- package/dist/module/context/EmbedProvider.js +626 -0
- package/dist/module/context/EmbedProvider.js.map +1 -0
- package/dist/module/events/embed.event.js +144 -5
- package/dist/module/events/embed.event.js.map +1 -1
- package/dist/module/hooks/EmbedButton.animations.js +172 -0
- package/dist/module/hooks/EmbedButton.animations.js.map +1 -0
- package/dist/module/hooks/EmbedButton.helpers.js +80 -0
- package/dist/module/hooks/EmbedButton.helpers.js.map +1 -0
- package/dist/module/hooks/EmbedButton.hooks.js +160 -0
- package/dist/module/hooks/EmbedButton.hooks.js.map +1 -0
- package/dist/module/hooks/initialize.js +66 -26
- package/dist/module/hooks/initialize.js.map +1 -1
- package/dist/module/index.js +3 -2
- package/dist/module/index.js.map +1 -1
- package/dist/module/utils/constant.js +82 -0
- package/dist/module/utils/constant.js.map +1 -0
- package/dist/module/utils/reanimated.helper.js +2 -3
- package/dist/module/utils/reanimated.helper.js.map +1 -1
- package/dist/typescript/src/api/api.d.ts +4 -3
- package/dist/typescript/src/api/api.d.ts.map +1 -1
- package/dist/typescript/src/api/types/embed.api.types.d.ts +1 -1
- package/dist/typescript/src/api/types/embed.api.types.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedButton.d.ts +5 -25
- package/dist/typescript/src/components/Embed/EmbedButton.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedVoice.d.ts.map +1 -1
- package/dist/typescript/src/context/EmbedProvider.d.ts +306 -0
- package/dist/typescript/src/context/EmbedProvider.d.ts.map +1 -0
- package/dist/typescript/src/events/embed.event.d.ts +79 -1
- package/dist/typescript/src/events/embed.event.d.ts.map +1 -1
- package/dist/typescript/src/hooks/EmbedButton.animations.d.ts +38 -0
- package/dist/typescript/src/hooks/EmbedButton.animations.d.ts.map +1 -0
- package/dist/typescript/src/hooks/EmbedButton.helpers.d.ts +49 -0
- package/dist/typescript/src/hooks/EmbedButton.helpers.d.ts.map +1 -0
- package/dist/typescript/src/hooks/EmbedButton.hooks.d.ts +49 -0
- package/dist/typescript/src/hooks/EmbedButton.hooks.d.ts.map +1 -0
- package/dist/typescript/src/hooks/initialize.d.ts.map +1 -1
- package/dist/typescript/src/hooks/types/initialize.types.d.ts +1 -1
- package/dist/typescript/src/hooks/types/initialize.types.d.ts.map +1 -1
- package/dist/typescript/src/index.d.ts +5 -3
- package/dist/typescript/src/index.d.ts.map +1 -1
- package/dist/typescript/src/index.types.d.ts +1 -1
- package/dist/typescript/src/index.types.d.ts.map +1 -1
- package/dist/typescript/src/utils/constant.d.ts +45 -0
- package/dist/typescript/src/utils/constant.d.ts.map +1 -0
- package/dist/typescript/src/utils/reanimated.helper.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","EmbedButton","Embed","EventKeys","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DEFAULT_INCLUDED_SCREENS","NAVIGATION_LISTENER_DELAY","getRouteHierarchy","state","allRoutes","routesByLevel","currentRouteParams","traverse","currentState","level","index","route","routes","name","routeName","push","params","length","currentScreen","parentRoute","undefined","depth","fullPath","join","routeParams","error","getAllRoutes","allRouteNamesSet","Set","collectRoutes","routeNames","Array","isArray","forEach","add","from","getNavigationTree","buildTree","filter","map","node","children","getAllDefinedRoutes","trackEmbedEvent","eventName","properties","Event","FORM_STATE","type","timestamp","Date","toISOString","trackRageClick","elementId","elementType","coordinates","clickCount","eventData","trackFormEvent","formId","eventType","formData","EmbedProvider","navigationRef","includeScreens","appVersion","_appVersion","defaultNavRef","navRef","isMountedRef","showEmbedButton","setShowEmbedButton","allIncludedScreens","Boolean","trackScreen","current","getRootState","routeInfo","screenName","getCurrentRoute","hasIncludeFilter","isIncluded","includes","shouldShowButton","screen","app_version","unsubscribe","delayTimer","setupListener","addListener","setTimeout","clearTimeout"],"sourceRoot":"../../../src","sources":["context/EmbedProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,25 +2,158 @@
|
|
|
2
2
|
|
|
3
3
|
import { getAgentData, setAgentData } from "../store/store.key.js";
|
|
4
4
|
import { APIService } from "../api/api.js";
|
|
5
|
-
|
|
5
|
+
import { buildEventPayload } from "../utils/constant.js";
|
|
6
|
+
// Predefined event keys for sending data to the agent
|
|
6
7
|
export let EventKeys = /*#__PURE__*/function (EventKeys) {
|
|
7
8
|
EventKeys["USER_DATA"] = "user_data";
|
|
8
9
|
EventKeys["SCREEN_STATE"] = "screen_state";
|
|
9
10
|
EventKeys["OFFER_STATE"] = "offer_state";
|
|
11
|
+
EventKeys["CUSTOM_EVENT"] = "custom_event";
|
|
12
|
+
EventKeys["FORM_STATE"] = "form_state";
|
|
13
|
+
EventKeys["ACTION_STATE"] = "action_state";
|
|
14
|
+
EventKeys["ERROR_STATE"] = "error_state";
|
|
15
|
+
EventKeys["SUCCESS_STATE"] = "success_state";
|
|
16
|
+
EventKeys["WARNING_STATE"] = "warning_state";
|
|
17
|
+
EventKeys["INFO_STATE"] = "info_state";
|
|
18
|
+
EventKeys["DEBUG_STATE"] = "debug_state";
|
|
10
19
|
return EventKeys;
|
|
11
20
|
}({});
|
|
21
|
+
|
|
22
|
+
// Agent event keys for listening to agent state changes
|
|
23
|
+
export let AgentEvent = /*#__PURE__*/function (AgentEvent) {
|
|
24
|
+
AgentEvent["AGENT_CONNECTED"] = "agent_connected";
|
|
25
|
+
AgentEvent["AGENT_DISCONNECTED"] = "agent_disconnected";
|
|
26
|
+
AgentEvent["POPUP_MESSAGE_VISIBLE"] = "popup_message_visible";
|
|
27
|
+
return AgentEvent;
|
|
28
|
+
}({});
|
|
29
|
+
|
|
30
|
+
// Event data interfaces
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Agent Event Emitter
|
|
34
|
+
* Handles listening to agent state changes (connection, disconnection, popup visibility)
|
|
35
|
+
* Also sends agent events to the backend API
|
|
36
|
+
*/
|
|
37
|
+
class AgentEventEmitter {
|
|
38
|
+
agentListeners = {};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Add an event listener for agent events
|
|
42
|
+
* @param eventKey - The agent event to listen for
|
|
43
|
+
* @param callback - Callback function to execute when event fires
|
|
44
|
+
*/
|
|
45
|
+
on(eventKey, callback) {
|
|
46
|
+
if (!this.agentListeners[eventKey]) {
|
|
47
|
+
this.agentListeners[eventKey] = [];
|
|
48
|
+
}
|
|
49
|
+
this.agentListeners[eventKey]?.push(callback);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Remove an event listener for agent events
|
|
54
|
+
* @param eventKey - The agent event to stop listening to
|
|
55
|
+
* @param callback - The callback function to remove
|
|
56
|
+
*/
|
|
57
|
+
off(eventKey, callback) {
|
|
58
|
+
if (!this.agentListeners[eventKey]) return;
|
|
59
|
+
const index = this.agentListeners[eventKey]?.indexOf(callback);
|
|
60
|
+
if (index !== undefined && index > -1) {
|
|
61
|
+
this.agentListeners[eventKey]?.splice(index, 1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Emit an agent event to all registered listeners AND send to backend
|
|
67
|
+
* @param eventKey - The agent event to emit
|
|
68
|
+
* @param data - Data to pass to listeners
|
|
69
|
+
* @internal - Used internally by the library
|
|
70
|
+
*/
|
|
71
|
+
async emit(eventKey, data) {
|
|
72
|
+
// Trigger local event listeners first
|
|
73
|
+
this.agentListeners[eventKey]?.forEach(callback => {
|
|
74
|
+
try {
|
|
75
|
+
callback(data);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error(`Error in agent event listener for ${eventKey}:`, error);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Send to backend API
|
|
82
|
+
await this.sendToBackend(eventKey, data);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Send agent event data to backend API
|
|
87
|
+
* @param eventKey - The agent event type
|
|
88
|
+
* @param data - Event data
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
async sendToBackend(eventKey, data) {
|
|
92
|
+
try {
|
|
93
|
+
// Get user identity to include app_user_id
|
|
94
|
+
const userIdentity = await getAgentData(EventKeys.USER_DATA);
|
|
95
|
+
if (!userIdentity?.app_user_id) {
|
|
96
|
+
console.warn(`[AgentEvent] Cannot send ${eventKey} to backend: User identity not found`);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Prepare payload with app_user_id
|
|
101
|
+
const payload = {
|
|
102
|
+
...data,
|
|
103
|
+
app_user_id: userIdentity.app_user_id,
|
|
104
|
+
eventKey: eventKey,
|
|
105
|
+
eventType: 'agent_event'
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
// Send to API
|
|
109
|
+
const apiService = APIService.getInstance();
|
|
110
|
+
const paramsData = buildEventPayload(payload);
|
|
111
|
+
const response = await apiService.updateUserData(paramsData);
|
|
112
|
+
if (!response.success) {
|
|
113
|
+
console.error(`[AgentEvent] Failed to send ${eventKey} to backend:`, response.error);
|
|
114
|
+
}
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.error(`[AgentEvent] Error sending ${eventKey} to backend:`, error);
|
|
117
|
+
// Fail silently - agent events should not break the app
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Remove all listeners for a specific event
|
|
123
|
+
* @param eventKey - The agent event to clear listeners for
|
|
124
|
+
*/
|
|
125
|
+
removeAllListeners(eventKey) {
|
|
126
|
+
if (eventKey) {
|
|
127
|
+
delete this.agentListeners[eventKey];
|
|
128
|
+
} else {
|
|
129
|
+
this.agentListeners = {};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
12
133
|
class Embed {
|
|
13
134
|
events = {};
|
|
14
135
|
|
|
136
|
+
// Agent event emitter for listening to agent state changes
|
|
137
|
+
|
|
138
|
+
constructor() {
|
|
139
|
+
this.event = new AgentEventEmitter();
|
|
140
|
+
}
|
|
141
|
+
|
|
15
142
|
// Automatically adds a default listener if none exists
|
|
16
143
|
ensureDefaultListener(eventKey) {
|
|
17
144
|
if (!this.events[eventKey]) {
|
|
18
145
|
this.events[eventKey] = [data => {
|
|
19
146
|
// todo: handle default event
|
|
20
|
-
console.info('default event', data);
|
|
147
|
+
console.info('default event this', data);
|
|
21
148
|
}];
|
|
22
149
|
}
|
|
23
150
|
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Send an event to the AI agent
|
|
154
|
+
* @param eventKey - The event type to send
|
|
155
|
+
* @param data - Event data payload
|
|
156
|
+
*/
|
|
24
157
|
async Event(eventKey, data) {
|
|
25
158
|
if (!Object.values(EventKeys).includes(eventKey)) {
|
|
26
159
|
// todo: handle invalid event key
|
|
@@ -42,9 +175,12 @@ class Embed {
|
|
|
42
175
|
// Trigger API call
|
|
43
176
|
try {
|
|
44
177
|
const apiService = APIService.getInstance();
|
|
178
|
+
const paramsData = buildEventPayload({
|
|
179
|
+
...data,
|
|
180
|
+
eventKey: key
|
|
181
|
+
});
|
|
45
182
|
const response = await apiService.updateUserData({
|
|
46
|
-
|
|
47
|
-
data
|
|
183
|
+
...paramsData
|
|
48
184
|
});
|
|
49
185
|
if (!response.success) {
|
|
50
186
|
throw new Error(`Failed to trigger API for event: ${eventKey}`);
|
|
@@ -59,7 +195,10 @@ class Embed {
|
|
|
59
195
|
this.events[key]?.forEach(callback => callback(data));
|
|
60
196
|
}
|
|
61
197
|
|
|
62
|
-
|
|
198
|
+
/**
|
|
199
|
+
* Add listener for data events (legacy support)
|
|
200
|
+
* @deprecated Use event.on() for agent events instead
|
|
201
|
+
*/
|
|
63
202
|
on(eventKey, callback) {
|
|
64
203
|
if (!this.events[eventKey]) {
|
|
65
204
|
this.events[eventKey] = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAgentData","setAgentData","APIService","EventKeys","
|
|
1
|
+
{"version":3,"names":["getAgentData","setAgentData","APIService","buildEventPayload","EventKeys","AgentEvent","AgentEventEmitter","agentListeners","on","eventKey","callback","push","off","index","indexOf","undefined","splice","emit","data","forEach","error","console","sendToBackend","userIdentity","USER_DATA","app_user_id","warn","payload","eventType","apiService","getInstance","paramsData","response","updateUserData","success","removeAllListeners","Embed","events","constructor","event","ensureDefaultListener","info","Event","Object","values","includes","Error","join","key","embed"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,YAAY,QAAQ,uBAAoB;AAC/D,SAASC,UAAU,QAAQ,eAAY;AACvC,SAASC,iBAAiB,QAAQ,sBAAmB;AAIrD;AACA,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAcrB;AACA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;;AAMtB;;AAmBA;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,CAAC;EACdC,cAAc,GAA8C,CAAC,CAAC;;EAEtE;AACF;AACA;AACA;AACA;EACEC,EAAEA,CAACC,QAAoB,EAAEC,QAAuB,EAAQ;IACtD,IAAI,CAAC,IAAI,CAACH,cAAc,CAACE,QAAQ,CAAC,EAAE;MAClC,IAAI,CAACF,cAAc,CAACE,QAAQ,CAAC,GAAG,EAAE;IACpC;IACA,IAAI,CAACF,cAAc,CAACE,QAAQ,CAAC,EAAEE,IAAI,CAACD,QAAQ,CAAC;EAC/C;;EAEA;AACF;AACA;AACA;AACA;EACEE,GAAGA,CAACH,QAAoB,EAAEC,QAAuB,EAAQ;IACvD,IAAI,CAAC,IAAI,CAACH,cAAc,CAACE,QAAQ,CAAC,EAAE;IAEpC,MAAMI,KAAK,GAAG,IAAI,CAACN,cAAc,CAACE,QAAQ,CAAC,EAAEK,OAAO,CAACJ,QAAQ,CAAC;IAC9D,IAAIG,KAAK,KAAKE,SAAS,IAAIF,KAAK,GAAG,CAAC,CAAC,EAAE;MACrC,IAAI,CAACN,cAAc,CAACE,QAAQ,CAAC,EAAEO,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC;IACjD;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMI,IAAIA,CAACR,QAAoB,EAAES,IAAS,EAAiB;IACzD;IACA,IAAI,CAACX,cAAc,CAACE,QAAQ,CAAC,EAAEU,OAAO,CAAET,QAAQ,IAAK;MACnD,IAAI;QACFA,QAAQ,CAACQ,IAAI,CAAC;MAChB,CAAC,CAAC,OAAOE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,qCAAqCX,QAAQ,GAAG,EAAEW,KAAK,CAAC;MACxE;IACF,CAAC,CAAC;;IAEF;IACA,MAAM,IAAI,CAACE,aAAa,CAACb,QAAQ,EAAES,IAAI,CAAC;EAC1C;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAcI,aAAaA,CAACb,QAAoB,EAAES,IAAS,EAAiB;IAC1E,IAAI;MACF;MACA,MAAMK,YAAY,GAAG,MAAMvB,YAAY,CAACI,SAAS,CAACoB,SAAS,CAAC;MAC5D,IAAI,CAACD,YAAY,EAAEE,WAAW,EAAE;QAC9BJ,OAAO,CAACK,IAAI,CACV,4BAA4BjB,QAAQ,sCACtC,CAAC;QACD;MACF;;MAEA;MACA,MAAMkB,OAAO,GAAG;QACd,GAAGT,IAAI;QACPO,WAAW,EAAEF,YAAY,CAACE,WAAW;QACrChB,QAAQ,EAAEA,QAAQ;QAClBmB,SAAS,EAAE;MACb,CAAC;;MAED;MACA,MAAMC,UAAU,GAAG3B,UAAU,CAAC4B,WAAW,CAAC,CAAC;MAC3C,MAAMC,UAAU,GAAG5B,iBAAiB,CAACwB,OAAO,CAAC;MAC7C,MAAMK,QAAQ,GAAG,MAAMH,UAAU,CAACI,cAAc,CAACF,UAAU,CAAC;MAE5D,IAAI,CAACC,QAAQ,CAACE,OAAO,EAAE;QACrBb,OAAO,CAACD,KAAK,CACX,+BAA+BX,QAAQ,cAAc,EACrDuB,QAAQ,CAACZ,KACX,CAAC;MACH;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CACX,8BAA8BX,QAAQ,cAAc,EACpDW,KACF,CAAC;MACD;IACF;EACF;;EAEA;AACF;AACA;AACA;EACEe,kBAAkBA,CAAC1B,QAAqB,EAAQ;IAC9C,IAAIA,QAAQ,EAAE;MACZ,OAAO,IAAI,CAACF,cAAc,CAACE,QAAQ,CAAC;IACtC,CAAC,MAAM;MACL,IAAI,CAACF,cAAc,GAAG,CAAC,CAAC;IAC1B;EACF;AACF;AAEA,MAAM6B,KAAK,CAAC;EACFC,MAAM,GAA6C,CAAC,CAAC;;EAE7D;;EAGAC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,KAAK,GAAG,IAAIjC,iBAAiB,CAAC,CAAC;EACtC;;EAEA;EACQkC,qBAAqBA,CAAC/B,QAAmB,EAAE;IACjD,IAAI,CAAC,IAAI,CAAC4B,MAAM,CAAC5B,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAAC4B,MAAM,CAAC5B,QAAQ,CAAC,GAAG,CACrBS,IAAS,IAAK;QACb;QACAG,OAAO,CAACoB,IAAI,CAAC,oBAAoB,EAAEvB,IAAI,CAAC;MAC1C,CAAC,CACF;IACH;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMwB,KAAKA,CAACjC,QAAgB,EAAES,IAAS,EAAE;IACvC,IAAI,CAACyB,MAAM,CAACC,MAAM,CAACxC,SAAS,CAAC,CAACyC,QAAQ,CAACpC,QAAqB,CAAC,EAAE;MAC7D;MACA,MAAM,IAAIqC,KAAK,CACb,sBAAsBrC,QAAQ,qBAAqBkC,MAAM,CAACC,MAAM,CAACxC,SAAS,CAAC,CAAC2C,IAAI,CAAC,IAAI,CAAC,EACxF,CAAC;IACH;IAEA,MAAMC,GAAG,GAAGvC,QAAqB;IAEjC,IAAIuC,GAAG,KAAK5C,SAAS,CAACoB,SAAS,EAAE;MAC/B,MAAMD,YAAY,GAAG,MAAMvB,YAAY,CAACI,SAAS,CAACoB,SAAS,CAAC;MAC5D,IAAID,YAAY,EAAE;QAChBL,IAAI,CAACO,WAAW,GAAGF,YAAY,CAACE,WAAW;MAC7C,CAAC,MAAM;QACL,MAAM,IAAIqB,KAAK,CAAC,yBAAyB,CAAC;MAC5C;IACF;;IAEA;IACA,IAAI,CAACN,qBAAqB,CAACQ,GAAG,CAAC;;IAE/B;IACA,IAAI;MACF,MAAMnB,UAAU,GAAG3B,UAAU,CAAC4B,WAAW,CAAC,CAAC;MAC3C,MAAMC,UAAU,GAAG5B,iBAAiB,CAAC;QAAE,GAAGe,IAAI;QAAET,QAAQ,EAAEuC;MAAI,CAAC,CAAC;MAChE,MAAMhB,QAAQ,GAAG,MAAMH,UAAU,CAACI,cAAc,CAAC;QAC/C,GAAGF;MACL,CAAC,CAAC;MAEF,IAAI,CAACC,QAAQ,CAACE,OAAO,EAAE;QACrB,MAAM,IAAIY,KAAK,CAAC,oCAAoCrC,QAAQ,EAAE,CAAC;MACjE;MACAR,YAAY,CAACiB,IAAI,EAAE8B,GAAG,CAAC;IACzB,CAAC,CAAC,OAAO5B,KAAK,EAAE;MACd,MAAM,IAAI0B,KAAK,CAAC,oCAAoCrC,QAAQ,EAAE,CAAC;MAC/D;IACF;;IAEA;IACA,IAAI,CAAC4B,MAAM,CAACW,GAAG,CAAC,EAAE7B,OAAO,CAAET,QAAQ,IAAKA,QAAQ,CAACQ,IAAI,CAAC,CAAC;EACzD;;EAEA;AACF;AACA;AACA;EACEV,EAAEA,CAACC,QAAmB,EAAEC,QAAuB,EAAE;IAC/C,IAAI,CAAC,IAAI,CAAC2B,MAAM,CAAC5B,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAAC4B,MAAM,CAAC5B,QAAQ,CAAC,GAAG,EAAE;IAC5B;IACA,IAAI,CAAC4B,MAAM,CAAC5B,QAAQ,CAAC,EAAEE,IAAI,CAACD,QAAQ,CAAC;EACvC;AACF;AAEA,MAAMuC,KAAK,GAAG,IAAIb,KAAK,CAAC,CAAC;AACzB,eAAea,KAAK","ignoreList":[]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file EmbedButton.animations.ts
|
|
5
|
+
* @description Animation logic and hooks for the EmbedButton component
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useEffect } from 'react';
|
|
9
|
+
import { Gesture } from 'react-native-gesture-handler';
|
|
10
|
+
import { getReanimatedAPI, showReanimatedSetupError } from "../utils/reanimated.helper.js";
|
|
11
|
+
import { BUTTON_DIMENSIONS, calculateMaxX, calculateMaxY, clamp, SCREEN_WIDTH } from "./EmbedButton.helpers.js";
|
|
12
|
+
|
|
13
|
+
// Get reanimated API with fallbacks
|
|
14
|
+
const {
|
|
15
|
+
useSharedValue,
|
|
16
|
+
useAnimatedStyle,
|
|
17
|
+
withTiming,
|
|
18
|
+
withSpring,
|
|
19
|
+
withRepeat,
|
|
20
|
+
withSequence,
|
|
21
|
+
runOnJS,
|
|
22
|
+
Easing,
|
|
23
|
+
Animated,
|
|
24
|
+
isAvailable: isReanimatedAvailable
|
|
25
|
+
} = getReanimatedAPI();
|
|
26
|
+
|
|
27
|
+
// Show warning if reanimated is not available
|
|
28
|
+
if (!isReanimatedAvailable) {
|
|
29
|
+
showReanimatedSetupError();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Export the Animated component for use in the main component
|
|
33
|
+
export { Animated };
|
|
34
|
+
|
|
35
|
+
// ==================== ANIMATION VALUES HOOK ====================
|
|
36
|
+
/**
|
|
37
|
+
* Hook to initialize and manage all animation shared values
|
|
38
|
+
*/
|
|
39
|
+
export const useAnimationValues = () => {
|
|
40
|
+
const isPressed = useSharedValue(false);
|
|
41
|
+
const offset = useSharedValue({
|
|
42
|
+
x: 0,
|
|
43
|
+
y: 0
|
|
44
|
+
});
|
|
45
|
+
const start = useSharedValue({
|
|
46
|
+
x: 0,
|
|
47
|
+
y: 0
|
|
48
|
+
});
|
|
49
|
+
const menuAnimation = useSharedValue(0);
|
|
50
|
+
const buttonWidth = useSharedValue(BUTTON_DIMENSIONS.WIDTH);
|
|
51
|
+
const buttonScale = useSharedValue(1);
|
|
52
|
+
return {
|
|
53
|
+
isPressed,
|
|
54
|
+
offset,
|
|
55
|
+
start,
|
|
56
|
+
menuAnimation,
|
|
57
|
+
buttonWidth,
|
|
58
|
+
buttonScale
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// ==================== BUTTON ANIMATIONS ====================
|
|
63
|
+
/**
|
|
64
|
+
* Hook to handle button expand/collapse animations
|
|
65
|
+
*/
|
|
66
|
+
export const useButtonAnimations = (isOpen, menuAnimation, buttonWidth) => {
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
menuAnimation.value = withTiming(isOpen ? 0.8 : 0, {
|
|
69
|
+
duration: 300
|
|
70
|
+
});
|
|
71
|
+
buttonWidth.value = withTiming(isOpen ? BUTTON_DIMENSIONS.EXPANDED_WIDTH : BUTTON_DIMENSIONS.WIDTH);
|
|
72
|
+
}, [isOpen, menuAnimation, buttonWidth]);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// ==================== BREATHING ANIMATION ====================
|
|
76
|
+
/**
|
|
77
|
+
* Hook to handle breathing animation when auto-popup is shown
|
|
78
|
+
*/
|
|
79
|
+
export const useBreathingAnimation = (isOpen, isAutoOpen, buttonScale) => {
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
if (!isOpen && isAutoOpen) {
|
|
82
|
+
// Start breathing animation
|
|
83
|
+
buttonScale.value = withRepeat(withSequence(withTiming(1.1, {
|
|
84
|
+
duration: 1500,
|
|
85
|
+
easing: Easing.inOut(Easing.ease)
|
|
86
|
+
}), withTiming(1, {
|
|
87
|
+
duration: 1500,
|
|
88
|
+
easing: Easing.inOut(Easing.ease)
|
|
89
|
+
})), -1,
|
|
90
|
+
// Infinite repeat
|
|
91
|
+
false);
|
|
92
|
+
} else {
|
|
93
|
+
// Reset animation
|
|
94
|
+
buttonScale.value = withTiming(1, {
|
|
95
|
+
duration: 300
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}, [buttonScale, isAutoOpen, isOpen]);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// ==================== ANIMATED STYLES ====================
|
|
102
|
+
/**
|
|
103
|
+
* Hook to create animated styles for the button
|
|
104
|
+
*/
|
|
105
|
+
export const useButtonAnimatedStyles = (isOpen, offset, buttonWidth, isPressed, buttonScale) => {
|
|
106
|
+
return useAnimatedStyle(() => {
|
|
107
|
+
const maxX = calculateMaxX(isOpen);
|
|
108
|
+
const clampedX = clamp(offset.value.x, -maxX, 0);
|
|
109
|
+
return {
|
|
110
|
+
width: buttonWidth.value,
|
|
111
|
+
height: BUTTON_DIMENSIONS.HEIGHT,
|
|
112
|
+
transform: [{
|
|
113
|
+
translateX: clampedX
|
|
114
|
+
}, {
|
|
115
|
+
translateY: offset.value.y
|
|
116
|
+
}, {
|
|
117
|
+
scale: withSpring(isPressed.value ? 0.95 : buttonScale.value)
|
|
118
|
+
}],
|
|
119
|
+
justifyContent: isOpen ? 'space-between' : 'flex-start',
|
|
120
|
+
overflow: 'hidden'
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Hook to create animated styles for the popup text
|
|
127
|
+
*/
|
|
128
|
+
export const usePopupAnimatedStyles = (offset, isPressed) => {
|
|
129
|
+
return useAnimatedStyle(() => {
|
|
130
|
+
const maxX = SCREEN_WIDTH;
|
|
131
|
+
const clampedX = clamp(offset.value.x, -maxX, 0);
|
|
132
|
+
return {
|
|
133
|
+
transform: [{
|
|
134
|
+
translateX: clampedX
|
|
135
|
+
}, {
|
|
136
|
+
translateY: offset.value.y
|
|
137
|
+
}, {
|
|
138
|
+
scale: withSpring(isPressed.value ? 1 : 1)
|
|
139
|
+
}]
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// ==================== GESTURE HANDLER ====================
|
|
145
|
+
/**
|
|
146
|
+
* Create pan gesture for drag functionality
|
|
147
|
+
*/
|
|
148
|
+
export const createPanGesture = (isPressed, offset, start, isOpen, setIsAutoOpen) => {
|
|
149
|
+
return Gesture.Pan().onBegin(() => {
|
|
150
|
+
isPressed.value = true;
|
|
151
|
+
if (setIsAutoOpen) {
|
|
152
|
+
runOnJS(setIsAutoOpen)(false);
|
|
153
|
+
}
|
|
154
|
+
}).onUpdate(e => {
|
|
155
|
+
const maxX = calculateMaxX(isOpen);
|
|
156
|
+
const maxY = calculateMaxY();
|
|
157
|
+
const newX = clamp(e.translationX + start.value.x, -maxX, 0);
|
|
158
|
+
const newY = clamp(e.translationY + start.value.y, -maxY, 0);
|
|
159
|
+
offset.value = {
|
|
160
|
+
x: newX,
|
|
161
|
+
y: newY
|
|
162
|
+
};
|
|
163
|
+
}).onEnd(() => {
|
|
164
|
+
start.value = {
|
|
165
|
+
x: offset.value.x,
|
|
166
|
+
y: offset.value.y
|
|
167
|
+
};
|
|
168
|
+
}).onFinalize(() => {
|
|
169
|
+
isPressed.value = false;
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=EmbedButton.animations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","Gesture","getReanimatedAPI","showReanimatedSetupError","BUTTON_DIMENSIONS","calculateMaxX","calculateMaxY","clamp","SCREEN_WIDTH","useSharedValue","useAnimatedStyle","withTiming","withSpring","withRepeat","withSequence","runOnJS","Easing","Animated","isAvailable","isReanimatedAvailable","useAnimationValues","isPressed","offset","x","y","start","menuAnimation","buttonWidth","WIDTH","buttonScale","useButtonAnimations","isOpen","value","duration","EXPANDED_WIDTH","useBreathingAnimation","isAutoOpen","easing","inOut","ease","useButtonAnimatedStyles","maxX","clampedX","width","height","HEIGHT","transform","translateX","translateY","scale","justifyContent","overflow","usePopupAnimatedStyles","createPanGesture","setIsAutoOpen","Pan","onBegin","onUpdate","e","maxY","newX","translationX","newY","translationY","onEnd","onFinalize"],"sourceRoot":"../../../src","sources":["hooks/EmbedButton.animations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file EmbedButton.helpers.ts
|
|
5
|
+
* @description Helper functions and utilities for the EmbedButton component
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Dimensions } from 'react-native';
|
|
9
|
+
|
|
10
|
+
// ==================== CONSTANTS ====================
|
|
11
|
+
export const {
|
|
12
|
+
width: SCREEN_WIDTH,
|
|
13
|
+
height: SCREEN_HEIGHT
|
|
14
|
+
} = Dimensions.get('window');
|
|
15
|
+
export const BUTTON_DIMENSIONS = {
|
|
16
|
+
WIDTH: 60,
|
|
17
|
+
HEIGHT: 60,
|
|
18
|
+
EXPANDED_WIDTH: SCREEN_WIDTH * 0.9
|
|
19
|
+
};
|
|
20
|
+
export const ICON_URLS = {
|
|
21
|
+
MIC_ON: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/Mute+button.png',
|
|
22
|
+
MIC_OFF: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/unmute.png',
|
|
23
|
+
END_CALL: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/end+button.png',
|
|
24
|
+
AMPLIFY_ANIMATION: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/amplify.json'
|
|
25
|
+
};
|
|
26
|
+
export const DEFAULT_GRADIENT_COLORS = ['#1E0844', '#B391F3'];
|
|
27
|
+
export const DEFAULT_POPUP_DELAY_MS = 15000;
|
|
28
|
+
|
|
29
|
+
// ==================== TYPES ====================
|
|
30
|
+
|
|
31
|
+
// ==================== HELPER FUNCTIONS ====================
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Safely parse delay value to ensure it's a valid number
|
|
35
|
+
*/
|
|
36
|
+
export const parseDelayMs = delay => {
|
|
37
|
+
if (typeof delay === 'number') {
|
|
38
|
+
return delay;
|
|
39
|
+
}
|
|
40
|
+
const parsed = Number(delay);
|
|
41
|
+
return Number.isFinite(parsed) ? parsed : DEFAULT_POPUP_DELAY_MS;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Format seconds to MM:SS format
|
|
46
|
+
*/
|
|
47
|
+
export const formatDuration = seconds => {
|
|
48
|
+
const minutes = Math.floor(seconds / 60);
|
|
49
|
+
const remainingSeconds = seconds % 60;
|
|
50
|
+
return `${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Calculate the max X position for button drag constraints
|
|
55
|
+
*/
|
|
56
|
+
export const calculateMaxX = isOpen => {
|
|
57
|
+
'worklet';
|
|
58
|
+
|
|
59
|
+
const width = isOpen ? BUTTON_DIMENSIONS.EXPANDED_WIDTH : BUTTON_DIMENSIONS.WIDTH;
|
|
60
|
+
return SCREEN_WIDTH - width - 35;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Calculate the max Y position for button drag constraints
|
|
65
|
+
*/
|
|
66
|
+
export const calculateMaxY = () => {
|
|
67
|
+
'worklet';
|
|
68
|
+
|
|
69
|
+
return SCREEN_HEIGHT - 150;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Clamp a value between a min and max
|
|
74
|
+
*/
|
|
75
|
+
export const clamp = (value, min, max) => {
|
|
76
|
+
'worklet';
|
|
77
|
+
|
|
78
|
+
return Math.min(Math.max(value, min), max);
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=EmbedButton.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Dimensions","width","SCREEN_WIDTH","height","SCREEN_HEIGHT","get","BUTTON_DIMENSIONS","WIDTH","HEIGHT","EXPANDED_WIDTH","ICON_URLS","MIC_ON","MIC_OFF","END_CALL","AMPLIFY_ANIMATION","DEFAULT_GRADIENT_COLORS","DEFAULT_POPUP_DELAY_MS","parseDelayMs","delay","parsed","Number","isFinite","formatDuration","seconds","minutes","Math","floor","remainingSeconds","toString","padStart","calculateMaxX","isOpen","calculateMaxY","clamp","value","min","max"],"sourceRoot":"../../../src","sources":["hooks/EmbedButton.helpers.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,cAAc;;AAEzC;AACA,OAAO,MAAM;EAAEC,KAAK,EAAEC,YAAY;EAAEC,MAAM,EAAEC;AAAc,CAAC,GACzDJ,UAAU,CAACK,GAAG,CAAC,QAAQ,CAAC;AAE1B,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,KAAK,EAAE,EAAE;EACTC,MAAM,EAAE,EAAE;EACVC,cAAc,EAAEP,YAAY,GAAG;AACjC,CAAU;AAEV,OAAO,MAAMQ,SAAS,GAAG;EACvBC,MAAM,EACJ,wEAAwE;EAC1EC,OAAO,EAAE,mEAAmE;EAC5EC,QAAQ,EACN,uEAAuE;EACzEC,iBAAiB,EACf;AACJ,CAAU;AAEV,OAAO,MAAMC,uBAAuB,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AAE7D,OAAO,MAAMC,sBAAsB,GAAG,KAAK;;AAE3C;;AAYA;;AAEA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAIC,KAAkC,IAAa;EAC1E,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOA,KAAK;EACd;EAEA,MAAMC,MAAM,GAAGC,MAAM,CAACF,KAAK,CAAC;EAC5B,OAAOE,MAAM,CAACC,QAAQ,CAACF,MAAM,CAAC,GAAGA,MAAM,GAAGH,sBAAsB;AAClE,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMM,cAAc,GAAIC,OAAe,IAAa;EACzD,MAAMC,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACH,OAAO,GAAG,EAAE,CAAC;EACxC,MAAMI,gBAAgB,GAAGJ,OAAO,GAAG,EAAE;EACrC,OAAO,GAAGC,OAAO,CAACI,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAIF,gBAAgB,CAC9DC,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACvB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAIC,MAAe,IAAa;EACxD,SAAS;;EACT,MAAM9B,KAAK,GAAG8B,MAAM,GAChBzB,iBAAiB,CAACG,cAAc,GAChCH,iBAAiB,CAACC,KAAK;EAC3B,OAAOL,YAAY,GAAGD,KAAK,GAAG,EAAE;AAClC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM+B,aAAa,GAAGA,CAAA,KAAc;EACzC,SAAS;;EACT,OAAO5B,aAAa,GAAG,GAAG;AAC5B,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM6B,KAAK,GAAGA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,KAAa;EACxE,SAAS;;EACT,OAAOX,IAAI,CAACU,GAAG,CAACV,IAAI,CAACW,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file EmbedButton.hooks.ts
|
|
5
|
+
* @description Custom hooks for the EmbedButton component
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
9
|
+
import { getAgentData } from "../store/store.key.js";
|
|
10
|
+
import { checkPermissions } from "../utils/permision.js";
|
|
11
|
+
import { parseDelayMs } from "./EmbedButton.helpers.js";
|
|
12
|
+
|
|
13
|
+
// ==================== CONFIG DATA HOOK ====================
|
|
14
|
+
/**
|
|
15
|
+
* Hook to fetch and manage agent configuration data
|
|
16
|
+
*/
|
|
17
|
+
export const useConfigData = () => {
|
|
18
|
+
const [configData, setConfigData] = useState(null);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
const fetchConfig = async () => {
|
|
21
|
+
try {
|
|
22
|
+
const data = await getAgentData('@config_data');
|
|
23
|
+
setConfigData(data?.ui_config || null);
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.error('Failed to fetch config data:', error);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
fetchConfig();
|
|
29
|
+
}, []);
|
|
30
|
+
return configData;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// ==================== CALL DURATION HOOK ====================
|
|
34
|
+
/**
|
|
35
|
+
* Hook to track call duration when connected
|
|
36
|
+
*/
|
|
37
|
+
export const useCallDuration = connectionState => {
|
|
38
|
+
const [callDuration, setCallDuration] = useState(0);
|
|
39
|
+
const timerRef = useRef(null);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (connectionState === 'connected' && !timerRef.current) {
|
|
42
|
+
// Start timer
|
|
43
|
+
timerRef.current = setInterval(() => {
|
|
44
|
+
setCallDuration(prev => prev + 1);
|
|
45
|
+
}, 1000);
|
|
46
|
+
} else if (connectionState !== 'connected' && timerRef.current) {
|
|
47
|
+
// Stop timer
|
|
48
|
+
clearInterval(timerRef.current);
|
|
49
|
+
timerRef.current = null;
|
|
50
|
+
}
|
|
51
|
+
return () => {
|
|
52
|
+
if (timerRef.current) {
|
|
53
|
+
clearInterval(timerRef.current);
|
|
54
|
+
timerRef.current = null;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}, [connectionState]);
|
|
58
|
+
const resetDuration = useCallback(() => {
|
|
59
|
+
setCallDuration(0);
|
|
60
|
+
if (timerRef.current) {
|
|
61
|
+
clearInterval(timerRef.current);
|
|
62
|
+
timerRef.current = null;
|
|
63
|
+
}
|
|
64
|
+
}, []);
|
|
65
|
+
return {
|
|
66
|
+
callDuration,
|
|
67
|
+
resetDuration
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// ==================== INACTIVITY BEHAVIOR HOOK ====================
|
|
72
|
+
/**
|
|
73
|
+
* Hook to handle inactivity behavior (show_popup or auto_trigger)
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
export const useInactivityBehavior = ({
|
|
77
|
+
configData,
|
|
78
|
+
isOpen,
|
|
79
|
+
isLoading,
|
|
80
|
+
hasActiveToken,
|
|
81
|
+
onStartCall
|
|
82
|
+
}) => {
|
|
83
|
+
const [isAutoOpen, setIsAutoOpen] = useState(false);
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
const behavior = configData?.inactivity_behaviour;
|
|
86
|
+
|
|
87
|
+
// Only act when explicitly configured
|
|
88
|
+
if (behavior !== 'show_popup' && behavior !== 'auto_trigger') {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Parse delay with fallback
|
|
93
|
+
const delayMs = parseDelayMs(configData?.popup_delay_ms);
|
|
94
|
+
const timer = setTimeout(async () => {
|
|
95
|
+
if (isOpen) return;
|
|
96
|
+
if (behavior === 'show_popup') {
|
|
97
|
+
// Show popup notification
|
|
98
|
+
if (configData?.popup_description) {
|
|
99
|
+
setIsAutoOpen(true);
|
|
100
|
+
} else {
|
|
101
|
+
console.warn('Popup behavior configured but no description provided');
|
|
102
|
+
}
|
|
103
|
+
} else if (behavior === 'auto_trigger') {
|
|
104
|
+
// Auto-start the call
|
|
105
|
+
setIsAutoOpen(false);
|
|
106
|
+
if (!hasActiveToken && !isLoading) {
|
|
107
|
+
try {
|
|
108
|
+
await onStartCall();
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error('Auto-trigger call failed:', error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}, delayMs);
|
|
115
|
+
return () => clearTimeout(timer);
|
|
116
|
+
}, [configData?.inactivity_behaviour, configData?.popup_delay_ms, configData?.popup_description, isOpen, isLoading, hasActiveToken, onStartCall]);
|
|
117
|
+
return {
|
|
118
|
+
isAutoOpen,
|
|
119
|
+
setIsAutoOpen
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
// ==================== CALL MANAGEMENT HOOK ====================
|
|
124
|
+
/**
|
|
125
|
+
* Hook to manage call lifecycle (start, end, mute)
|
|
126
|
+
*/
|
|
127
|
+
|
|
128
|
+
export const useCallManagement = ({
|
|
129
|
+
initializeVoiceAgent,
|
|
130
|
+
endCall,
|
|
131
|
+
muteMic,
|
|
132
|
+
unmuteMic,
|
|
133
|
+
isMicMuted,
|
|
134
|
+
resetDuration,
|
|
135
|
+
setIsOpen
|
|
136
|
+
}) => {
|
|
137
|
+
const handleStartCall = useCallback(async () => {
|
|
138
|
+
await checkPermissions();
|
|
139
|
+
resetDuration();
|
|
140
|
+
await initializeVoiceAgent();
|
|
141
|
+
}, [initializeVoiceAgent, resetDuration]);
|
|
142
|
+
const handleEndCall = useCallback(async () => {
|
|
143
|
+
setIsOpen(false);
|
|
144
|
+
resetDuration();
|
|
145
|
+
await endCall();
|
|
146
|
+
}, [endCall, resetDuration, setIsOpen]);
|
|
147
|
+
const handleMicToggle = useCallback(() => {
|
|
148
|
+
if (isMicMuted) {
|
|
149
|
+
unmuteMic();
|
|
150
|
+
} else {
|
|
151
|
+
muteMic();
|
|
152
|
+
}
|
|
153
|
+
}, [isMicMuted, muteMic, unmuteMic]);
|
|
154
|
+
return {
|
|
155
|
+
handleStartCall,
|
|
156
|
+
handleEndCall,
|
|
157
|
+
handleMicToggle
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=EmbedButton.hooks.js.map
|