@revrag-ai/embed-react-native 1.0.24 → 1.0.26

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.
Files changed (49) hide show
  1. package/README.md +14 -0
  2. package/dist/commonjs/api/api.js +1 -3
  3. package/dist/commonjs/api/api.js.map +1 -1
  4. package/dist/commonjs/components/Embed/EmbedButton.js +2 -2
  5. package/dist/commonjs/components/Embed/EmbedButton.js.map +1 -1
  6. package/dist/commonjs/components/Embed/EmbedVoice.js +1 -2
  7. package/dist/commonjs/components/Embed/EmbedVoice.js.map +1 -1
  8. package/dist/commonjs/context/EmbedProvider.js +16 -12
  9. package/dist/commonjs/context/EmbedProvider.js.map +1 -1
  10. package/dist/commonjs/events/agent-event-emitter.js +0 -1
  11. package/dist/commonjs/events/agent-event-emitter.js.map +1 -1
  12. package/dist/commonjs/events/embed.event.js +11 -3
  13. package/dist/commonjs/events/embed.event.js.map +1 -1
  14. package/dist/commonjs/hooks/voiceagent.js +213 -78
  15. package/dist/commonjs/hooks/voiceagent.js.map +1 -1
  16. package/dist/commonjs/utils/constant.js +1 -1
  17. package/dist/commonjs/utils/permision.js +0 -2
  18. package/dist/commonjs/utils/permision.js.map +1 -1
  19. package/dist/commonjs/utils/reanimated.helper.js +0 -3
  20. package/dist/commonjs/utils/reanimated.helper.js.map +1 -1
  21. package/dist/module/api/api.js +1 -3
  22. package/dist/module/api/api.js.map +1 -1
  23. package/dist/module/components/Embed/EmbedButton.js +3 -3
  24. package/dist/module/components/Embed/EmbedButton.js.map +1 -1
  25. package/dist/module/components/Embed/EmbedVoice.js +1 -2
  26. package/dist/module/components/Embed/EmbedVoice.js.map +1 -1
  27. package/dist/module/context/EmbedProvider.js +16 -12
  28. package/dist/module/context/EmbedProvider.js.map +1 -1
  29. package/dist/module/events/agent-event-emitter.js +0 -1
  30. package/dist/module/events/agent-event-emitter.js.map +1 -1
  31. package/dist/module/events/embed.event.js +13 -4
  32. package/dist/module/events/embed.event.js.map +1 -1
  33. package/dist/module/hooks/voiceagent.js +214 -79
  34. package/dist/module/hooks/voiceagent.js.map +1 -1
  35. package/dist/module/utils/constant.js +1 -1
  36. package/dist/module/utils/permision.js +0 -2
  37. package/dist/module/utils/permision.js.map +1 -1
  38. package/dist/module/utils/reanimated.helper.js +0 -3
  39. package/dist/module/utils/reanimated.helper.js.map +1 -1
  40. package/dist/typescript/src/components/Embed/EmbedVoice.d.ts.map +1 -1
  41. package/dist/typescript/src/context/EmbedProvider.d.ts.map +1 -1
  42. package/dist/typescript/src/events/agent-event-emitter.d.ts.map +1 -1
  43. package/dist/typescript/src/events/embed.event.d.ts +4 -3
  44. package/dist/typescript/src/events/embed.event.d.ts.map +1 -1
  45. package/dist/typescript/src/hooks/voiceagent.d.ts.map +1 -1
  46. package/dist/typescript/src/utils/constant.d.ts +1 -1
  47. package/dist/typescript/src/utils/permision.d.ts.map +1 -1
  48. package/dist/typescript/src/utils/reanimated.helper.d.ts.map +1 -1
  49. package/package.json +4 -4
@@ -32,7 +32,7 @@ const Voice = props => {
32
32
  // Start audio session safely - prevent multiple simultaneous starts
33
33
  const startAudioSession = async () => {
34
34
  if (audioSessionActive || audioSessionStarting) {
35
- console.log('Audio session already active or starting');
35
+ // Avoid repeated logs; just skip if already active/starting
36
36
  return;
37
37
  }
38
38
  try {
@@ -104,7 +104,6 @@ const Voice = props => {
104
104
 
105
105
  // Safety check - don't render if we don't have valid props
106
106
  if (!url || !token) {
107
- console.warn('Voice component missing url or token');
108
107
  return null;
109
108
  }
110
109
 
@@ -1 +1 @@
1
- {"version":3,"names":["AudioSession","LiveKitRoom","useEffect","useRef","useState","jsx","_jsx","audioSessionActive","audioSessionStarting","audioSessionStopping","activeConnectionToken","Voice","props","url","token","onDisconnected","onConnected","roomRef","audioSessionStarted","setAudioSessionStarted","mountedRef","connectedRef","startAudioSession","console","log","current","err","error","stopAudioSession","room","state","warn","serverUrl","screen","audio","undefined"],"sourceRoot":"../../../../src","sources":["components/Embed/EmbedVoice.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AudioSession","LiveKitRoom","useEffect","useRef","useState","jsx","_jsx","audioSessionActive","audioSessionStarting","audioSessionStopping","activeConnectionToken","Voice","props","url","token","onDisconnected","onConnected","roomRef","audioSessionStarted","setAudioSessionStarted","mountedRef","connectedRef","startAudioSession","current","err","console","error","stopAudioSession","room","state","serverUrl","screen","audio","undefined"],"sourceRoot":"../../../../src","sources":["components/Embed/EmbedVoice.tsx"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@
16
16
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
17
17
  import { EmbedButton } from "../components/Embed/EmbedButton.js";
18
18
  import Embed, { EventKeys } from "../events/embed.event.js";
19
+ import { setAgentData } from "../store/store.key.js";
19
20
 
20
21
  /* ============================================================================
21
22
  * TYPE DEFINITIONS
@@ -528,20 +529,20 @@ export const EmbedProvider = ({
528
529
  setShowEmbedButton(shouldShowButton);
529
530
  }
530
531
 
531
- // Track screen view event (if route info is available)
532
+ // Persist screen context locally for later event enrichment
532
533
  if (routeInfo) {
533
534
  try {
534
- // TODO: Uncomment when ready to enable screen view tracking
535
- Embed.Event(EventKeys.FORM_STATE, {
536
- type: 'screen_view',
537
- ...routeInfo,
538
- screen: routeInfo.currentScreen,
539
- // allAvailableRoutes: allRoutes,
535
+ await setAgentData({
536
+ screen: routeInfo.currentScreen ?? screenName ?? 'default',
537
+ fullPath: routeInfo.fullPath,
538
+ allRoutes: routeInfo.allRoutes,
539
+ depth: routeInfo.depth,
540
+ parentRoute: routeInfo.parentRoute,
540
541
  app_version: _appVersion,
541
542
  timestamp: new Date().toISOString()
542
- });
543
+ }, EventKeys.SCREEN_STATE);
543
544
  } catch (error) {
544
- // Silently fail - analytics should not break the app
545
+ // Silently fail - storage should not break the app
545
546
  }
546
547
  }
547
548
  } catch (error) {
@@ -565,14 +566,16 @@ export const EmbedProvider = ({
565
566
  }
566
567
  let unsubscribe;
567
568
  let delayTimer;
569
+ let isListenerActive = false;
568
570
 
569
571
  /**
570
572
  * Set up navigation state listener
571
573
  */
572
574
  const setupListener = () => {
573
- // Only set up if navigation ref is ready
574
- if (navRef.current) {
575
+ // Only set up if navigation ref is ready and listener not already active
576
+ if (navRef.current && !isListenerActive) {
575
577
  unsubscribe = navRef.current.addListener('state', trackScreen);
578
+ isListenerActive = true;
576
579
  trackScreen(); // Track initial screen immediately
577
580
  }
578
581
  };
@@ -582,7 +585,7 @@ export const EmbedProvider = ({
582
585
 
583
586
  // Also set up after delay in case navigation wasn't ready
584
587
  delayTimer = setTimeout(() => {
585
- if (!unsubscribe && navRef.current) {
588
+ if (!isListenerActive && navRef.current) {
586
589
  setupListener();
587
590
  }
588
591
  }, NAVIGATION_LISTENER_DELAY);
@@ -594,6 +597,7 @@ export const EmbedProvider = ({
594
597
  }
595
598
  if (unsubscribe) {
596
599
  unsubscribe();
600
+ isListenerActive = false;
597
601
  }
598
602
  };
599
603
  }, [navRef, trackScreen]);
@@ -1 +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":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","EmbedButton","Embed","EventKeys","setAgentData","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","SCREEN_STATE","unsubscribe","delayTimer","isListenerActive","setupListener","addListener","setTimeout","clearTimeout"],"sourceRoot":"../../../src","sources":["context/EmbedProvider.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,WAAW,QAAQ,oCAAiC;AAC7D,OAAOC,KAAK,IAAIC,SAAS,QAAQ,0BAAuB;AACxD,SAASC,YAAY,QAAQ,uBAAoB;;AAEjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAyBA;AACA;AACA;AACA;;AAkBA;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAeA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAkC,GAAG,EAAE;;AAE7C;AACA;AACA;AACA;AACA,MAAMC,yBAAyB,GAAG,IAAI;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAIC,KAAU,IAA4B;EACtE,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;EAEvB,IAAI;IACF,MAAMC,SAAmB,GAAG,EAAE;IAC9B,MAAMC,aAAqC,GAAG,CAAC,CAAC;IAChD,IAAIC,kBAAmD;;IAEvD;AACJ;AACA;AACA;AACA;IACI,MAAMC,QAAQ,GAAGA,CAACC,YAAiB,EAAEC,KAAa,GAAG,CAAC,KAAW;MAC/D,IAAI,CAACD,YAAY,IAAI,OAAOA,YAAY,CAACE,KAAK,KAAK,QAAQ,EAAE;MAE7D,MAAMC,KAAK,GAAGH,YAAY,CAACI,MAAM,GAAGJ,YAAY,CAACE,KAAK,CAAC;MACvD,IAAI,CAACC,KAAK,IAAI,CAACA,KAAK,CAACE,IAAI,EAAE;MAE3B,MAAMC,SAAS,GAAGH,KAAK,CAACE,IAAI;MAC5BT,SAAS,CAACW,IAAI,CAACD,SAAS,CAAC;MACzBT,aAAa,CAACI,KAAK,CAAC,GAAGK,SAAS;;MAEhC;MACA,IAAI,CAACH,KAAK,CAACR,KAAK,IAAIQ,KAAK,CAACK,MAAM,EAAE;QAChCV,kBAAkB,GAAGK,KAAK,CAACK,MAAM;MACnC;;MAEA;MACA,IAAIL,KAAK,CAACR,KAAK,EAAE;QACfI,QAAQ,CAACI,KAAK,CAACR,KAAK,EAAEM,KAAK,GAAG,CAAC,CAAC;MAClC;IACF,CAAC;;IAED;IACAF,QAAQ,CAACJ,KAAK,CAAC;;IAEf;IACA,IAAIC,SAAS,CAACa,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;;IAEvC;IACA,MAAMC,aAAa,GAAGd,SAAS,CAACA,SAAS,CAACa,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS;IAClE,MAAME,WAAW,GACff,SAAS,CAACa,MAAM,GAAG,CAAC,GAAGb,SAAS,CAACA,SAAS,CAACa,MAAM,GAAG,CAAC,CAAC,GAAGG,SAAS;IACpE,MAAMC,KAAK,GAAGjB,SAAS,CAACa,MAAM;IAC9B,MAAMK,QAAQ,GAAGlB,SAAS,CAACmB,IAAI,CAAC,KAAK,CAAC;IAEtC,OAAO;MACLL,aAAa;MACbI,QAAQ;MACRlB,SAAS;MACTiB,KAAK;MACLhB,aAAa;MACbc,WAAW;MACXK,WAAW,EAAElB;IACf,CAAC;EACH,CAAC,CAAC,OAAOmB,KAAK,EAAE;IACd;IACA,OAAO,IAAI;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAIvB,KAAU,IAAe;EACpD,IAAI,CAACA,KAAK,EAAE,OAAO,EAAE;;EAErB;EACA,MAAMwB,gBAAgB,GAAG,IAAIC,GAAG,CAAS,CAAC;;EAE1C;AACF;AACA;AACA;EACE,MAAMC,aAAa,GAAIrB,YAAiB,IAAW;IACjD,IAAI,CAACA,YAAY,EAAE;;IAEnB;IACA,IAAIA,YAAY,EAAEsB,UAAU,IAAIC,KAAK,CAACC,OAAO,CAACxB,YAAY,CAACsB,UAAU,CAAC,EAAE;MACtEtB,YAAY,CAACsB,UAAU,CAACG,OAAO,CAAEnB,SAAiB,IAAK;QACrD,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;UAC9Ca,gBAAgB,CAACO,GAAG,CAACpB,SAAS,CAAC;QACjC;MACF,CAAC,CAAC;IACJ;;IAEA;IACA,IAAI,CAACN,YAAY,EAAEI,MAAM,IAAI,CAACmB,KAAK,CAACC,OAAO,CAACxB,YAAY,CAACI,MAAM,CAAC,EAAE;IAElEJ,YAAY,CAACI,MAAM,CAACqB,OAAO,CAAEtB,KAAU,IAAK;MAC1C,IAAIA,KAAK,EAAEE,IAAI,IAAI,OAAOF,KAAK,CAACE,IAAI,KAAK,QAAQ,EAAE;QACjDc,gBAAgB,CAACO,GAAG,CAACvB,KAAK,CAACE,IAAI,CAAC;MAClC;;MAEA;MACA,IAAIF,KAAK,EAAER,KAAK,EAAE;QAChB0B,aAAa,CAAClB,KAAK,CAACR,KAAK,CAAC;MAC5B;IACF,CAAC,CAAC;EACJ,CAAC;EAED,IAAI;IACF0B,aAAa,CAAC1B,KAAK,CAAC;EACtB,CAAC,CAAC,OAAOsB,KAAK,EAAE;IACd;IACA,OAAO,EAAE;EACX;EAEA,OAAOM,KAAK,CAACI,IAAI,CAACR,gBAAgB,CAAC;AACrC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,iBAAiB,GAAIjC,KAAU,IAA2B;EACrE,IAAI,CAACA,KAAK,EAAE,OAAO,EAAE;;EAErB;AACF;AACA;AACA;AACA;AACA;EACE,MAAMkC,SAAS,GAAGA,CAChB7B,YAAiB,EACjBC,KAAa,GAAG,CAAC,KACQ;IACzB,IAAI,CAACD,YAAY,EAAEI,MAAM,IAAI,CAACmB,KAAK,CAACC,OAAO,CAACxB,YAAY,CAACI,MAAM,CAAC,EAAE;MAChE,OAAO,EAAE;IACX;IAEA,OAAOJ,YAAY,CAACI,MAAM,CACvB0B,MAAM,CAAE3B,KAAU,IAAKA,KAAK,IAAIA,KAAK,CAACE,IAAI,CAAC,CAC3C0B,GAAG,CAAE5B,KAAU,IAAK;MACnB,MAAM6B,IAAwB,GAAG;QAC/B3B,IAAI,EAAEF,KAAK,CAACE,IAAI;QAChBJ,KAAK;QACLO,MAAM,EAAEL,KAAK,CAACK;MAChB,CAAC;;MAED;MACA,IAAIL,KAAK,CAACR,KAAK,EAAE;QACfqC,IAAI,CAACC,QAAQ,GAAGJ,SAAS,CAAC1B,KAAK,CAACR,KAAK,EAAEM,KAAK,GAAG,CAAC,CAAC;MACnD;MAEA,OAAO+B,IAAI;IACb,CAAC,CAAC;EACN,CAAC;EAED,IAAI;IACF,OAAOH,SAAS,CAAClC,KAAK,CAAC;EACzB,CAAC,CAAC,OAAOsB,KAAK,EAAE;IACd;IACA,OAAO,EAAE;EACX;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMiB,mBAAmB,GAAIvC,KAAU,IAAe;EAC3D,OAAOuB,YAAY,CAACvB,KAAK,CAAC;AAC5B,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMwC,eAAe,GAAGA,CAC7BC,SAAiB,EACjBC,UAA+B,GAAG,CAAC,CAAC,KAC3B;EACT,IAAI;IACFtD,KAAK,CAACuD,KAAK,CAACtD,SAAS,CAACuD,UAAU,EAAE;MAChCC,IAAI,EAAE,cAAc;MACpBJ,SAAS;MACTC,UAAU;MACVI,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;IACpC,CAAC,CAAC;EACJ,CAAC,CAAC,OAAO1B,KAAK,EAAE;IACd;IACA;EAAA;AAEJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM2B,cAAc,GAAGA,CAC5BC,SAAiB,EACjBC,WAAmB,EACnBC,WAAqC,EACrCC,UAAkB,KACT;EACT,IAAI;IACF,MAAMC,SAAS,GAAG;MAChBT,IAAI,EAAE,YAAY;MAClBK,SAAS;MACTC,WAAW;MACXC,WAAW;MACXC,UAAU;MACVP,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;IACpC,CAAC;IAED5D,KAAK,CAACuD,KAAK,CAACtD,SAAS,CAACuD,UAAU,EAAEU,SAAS,CAAC;EAC9C,CAAC,CAAC,OAAOhC,KAAK,EAAE;IACd;EAAA;AAEJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMiC,cAAc,GAAGA,CAC5BC,MAAc,EACdC,SAAuD,EACvDC,QAA6B,GAAG,CAAC,CAAC,KACzB;EACT,IAAI;IACF,MAAMJ,SAAS,GAAG;MAChBT,IAAI,EAAEY,SAAS;MACfD,MAAM;MACNE,QAAQ;MACRZ,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;IACpC,CAAC;IAED5D,KAAK,CAACuD,KAAK,CAACtD,SAAS,CAACuD,UAAU,EAAEU,SAAS,CAAC;EAC9C,CAAC,CAAC,OAAOhC,KAAK,EAAE;IACd;EAAA;AAEJ,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMqC,aAA2C,GAAGA,CAAC;EAC1DrB,QAAQ;EACRsB,aAAa;EACbC,cAAc,GAAGhE,wBAAwB;EACzCiE,UAAU,EAAEC;AACd,CAAC,KAAK;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMC,aAAa,GAAG/E,MAAM,CAA8B,IAAI,CAAC;EAC/D,MAAMgF,MAAM,GAAGL,aAAa,IAAII,aAAa;;EAE7C;AACF;AACA;EACE,MAAME,YAAY,GAAGjF,MAAM,CAAC,IAAI,CAAC;;EAEjC;;EAEA;EACA,MAAM,CAACkF,eAAe,EAAEC,kBAAkB,CAAC,GAAGlF,QAAQ,CAAU,KAAK,CAAC;;EAEtE;;EAEA;AACF;AACA;AACA;EACE,MAAMmF,kBAAkB,GAAGrF,OAAO,CAAC,MAAM;IACvC,OAAO4C,KAAK,CAACI,IAAI,CAAC,IAAIP,GAAG,CAACoC,cAAc,CAAC1B,MAAM,CAACmC,OAAO,CAAC,CAAC,CAAC;EAC5D,CAAC,EAAE,CAACT,cAAc,CAAC,CAAC;;EAEpB;;EAEA;AACF;AACA;AACA;EACE,MAAMU,WAAW,GAAGzF,WAAW,CAAC,YAA2B;IACzD,IAAI;MACF;MACA,IAAI,CAACmF,MAAM,CAACO,OAAO,EAAE;QACnB;MACF;MAEA,MAAMxE,KAAK,GAAGiE,MAAM,CAACO,OAAO,CAACC,YAAY,CAAC,CAAC;MAC3C,IAAI,CAACzE,KAAK,EAAE;QACV;MACF;MAEA,MAAM0E,SAAS,GAAG3E,iBAAiB,CAACC,KAAK,CAAC;MAC1C;MACA,MAAM2E,UAAU,GACdD,SAAS,EAAE3D,aAAa,IACxBkD,MAAM,CAACO,OAAO,CAACI,eAAe,CAAC,CAAC,EAAElE,IAAI,IACtC,EAAE;;MAEJ;MACA;MACA,MAAMmE,gBAAgB,GAAGR,kBAAkB,CAACvD,MAAM,GAAG,CAAC;MACtD,MAAMgE,UAAU,GAAGT,kBAAkB,CAACU,QAAQ,CAACJ,UAAU,CAAC;MAC1D,MAAMK,gBAAgB,GACpBL,UAAU,KAAK,EAAE,KAAK,CAACE,gBAAgB,IAAIC,UAAU,CAAC;MACxD;MACA,IAAIZ,YAAY,CAACM,OAAO,EAAE;QACxBJ,kBAAkB,CAACY,gBAAgB,CAAC;MACtC;;MAEA;MACA,IAAIN,SAAS,EAAE;QACb,IAAI;UACF,MAAMpF,YAAY,CAChB;YACE2F,MAAM,EAAEP,SAAS,CAAC3D,aAAa,IAAI4D,UAAU,IAAI,SAAS;YAC1DxD,QAAQ,EAAEuD,SAAS,CAACvD,QAAQ;YAC5BlB,SAAS,EAAEyE,SAAS,CAACzE,SAAS;YAC9BiB,KAAK,EAAEwD,SAAS,CAACxD,KAAK;YACtBF,WAAW,EAAE0D,SAAS,CAAC1D,WAAW;YAClCkE,WAAW,EAAEnB,WAAW;YACxBjB,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;UACpC,CAAC,EACD3D,SAAS,CAAC8F,YACZ,CAAC;QACH,CAAC,CAAC,OAAO7D,KAAK,EAAE;UACd;QAAA;MAEJ;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MACd;IAAA;EAEJ,CAAC,EAAE,CAAC2C,MAAM,EAAEI,kBAAkB,EAAEN,WAAW,CAAC,CAAC;;EAE7C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEhF,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACkF,MAAM,EAAE;MACX;IACF;IAEA,IAAImB,WAAqC;IACzC,IAAIC,UAAsC;IAC1C,IAAIC,gBAAgB,GAAG,KAAK;;IAE5B;AACJ;AACA;IACI,MAAMC,aAAa,GAAGA,CAAA,KAAM;MAC1B;MACA,IAAItB,MAAM,CAACO,OAAO,IAAI,CAACc,gBAAgB,EAAE;QACvCF,WAAW,GAAGnB,MAAM,CAACO,OAAO,CAACgB,WAAW,CAAC,OAAO,EAAEjB,WAAW,CAAC;QAC9De,gBAAgB,GAAG,IAAI;QACvBf,WAAW,CAAC,CAAC,CAAC,CAAC;MACjB;IACF,CAAC;;IAED;IACAgB,aAAa,CAAC,CAAC;;IAEf;IACAF,UAAU,GAAGI,UAAU,CAAC,MAAM;MAC5B,IAAI,CAACH,gBAAgB,IAAIrB,MAAM,CAACO,OAAO,EAAE;QACvCe,aAAa,CAAC,CAAC;MACjB;IACF,CAAC,EAAEzF,yBAAyB,CAAC;;IAE7B;IACA,OAAO,MAAM;MACX,IAAIuF,UAAU,EAAE;QACdK,YAAY,CAACL,UAAU,CAAC;MAC1B;MACA,IAAID,WAAW,EAAE;QACfA,WAAW,CAAC,CAAC;QACbE,gBAAgB,GAAG,KAAK;MAC1B;IACF,CAAC;EACH,CAAC,EAAE,CAACrB,MAAM,EAAEM,WAAW,CAAC,CAAC;;EAEzB;AACF;AACA;AACA;AACA;EACExF,SAAS,CAAC,MAAM;IACdmF,YAAY,CAACM,OAAO,GAAG,IAAI;IAE3B,OAAO,MAAM;MACXN,YAAY,CAACM,OAAO,GAAG,KAAK;IAC9B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;;EAEA,oBACE5E,KAAA,CAAAF,SAAA;IAAA4C,QAAA,GACGA,QAAQ,EACR6B,eAAe,iBAAI3E,IAAA,CAACL,WAAW,IAAE,CAAC;EAAA,CACnC,CAAC;AAEP,CAAC;;AAED;AACA;AACA;;AAEA;AACA,eAAewE,aAAa","ignoreList":[]}
@@ -69,7 +69,6 @@ export class AgentEventEmitter {
69
69
  // Get user identity to include app_user_id
70
70
  const userIdentity = await getAgentData(EventKeys.USER_DATA);
71
71
  if (!userIdentity?.app_user_id) {
72
- console.warn(`[AgentEvent] Cannot send ${eventKey} to backend: User identity not found`);
73
72
  return;
74
73
  }
75
74
 
@@ -1 +1 @@
1
- {"version":3,"names":["getAgentData","APIService","buildEventPayload","EventKeys","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"],"sourceRoot":"../../../src","sources":["events/agent-event-emitter.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,QAAQ,uBAAoB;AACjD,SAASC,UAAU,QAAQ,eAAY;AACvC,SAASC,iBAAiB,QAAQ,sBAAmB;AAErD,SAASC,SAAS,QAAQ,kBAAe;AAEzC,OAAO,MAAMC,iBAAiB,CAAC;EACrBC,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,MAAMrB,YAAY,CAACG,SAAS,CAACmB,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,GAAG1B,UAAU,CAAC2B,WAAW,CAAC,CAAC;MAC3C,MAAMC,UAAU,GAAG3B,iBAAiB,CAACuB,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","ignoreList":[]}
1
+ {"version":3,"names":["getAgentData","APIService","buildEventPayload","EventKeys","AgentEventEmitter","agentListeners","on","eventKey","callback","push","off","index","indexOf","undefined","splice","emit","data","forEach","error","console","sendToBackend","userIdentity","USER_DATA","app_user_id","payload","eventType","apiService","getInstance","paramsData","response","updateUserData","success","removeAllListeners"],"sourceRoot":"../../../src","sources":["events/agent-event-emitter.ts"],"mappings":"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","ignoreList":[]}
@@ -5,11 +5,12 @@
5
5
  * Main class for managing embed events and agent communication
6
6
  */
7
7
 
8
- import { getAgentData, setAgentData } from "../store/store.key.js";
9
8
  import { APIService } from "../api/api.js";
9
+ import { getAgentData, setAgentData } from "../store/store.key.js";
10
10
  import { buildEventPayload } from "../utils/constant.js";
11
11
  import { AgentEventEmitter } from "./agent-event-emitter.js";
12
- import { validateEventKey, validateAnalyticsEvent } from "./embed.validators.js";
12
+ import { EventKeys } from "./embed.types.js";
13
+ import { validateAnalyticsEvent, validateEventKey } from "./embed.validators.js";
13
14
  class Embed {
14
15
  events = {};
15
16
 
@@ -54,9 +55,17 @@ class Embed {
54
55
  async sendEventToAPI(eventKey, data, key) {
55
56
  try {
56
57
  const apiService = APIService.getInstance();
58
+
59
+ // Get current screen name and app version from stored data
60
+ const screenData = await getAgentData(EventKeys.SCREEN_STATE);
61
+ const userData = await getAgentData(EventKeys.USER_DATA);
62
+ const currentScreen = screenData?.screen || data?.screen || 'default';
63
+ const appVersion = userData?.app_version || data?.app_version || '1.0.0';
57
64
  const paramsData = buildEventPayload({
58
65
  ...data,
59
- eventKey: key
66
+ eventKey: key,
67
+ screen: currentScreen,
68
+ app_version: appVersion
60
69
  });
61
70
 
62
71
  // Validate analytics events have event_name
@@ -119,5 +128,5 @@ const embed = new Embed();
119
128
  export default embed;
120
129
 
121
130
  // Re-export types and enums for convenience
122
- export { EventKeys, AgentEvent } from "./embed.types.js";
131
+ export { AgentEvent, EventKeys } from "./embed.types.js";
123
132
  //# sourceMappingURL=embed.event.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getAgentData","setAgentData","APIService","buildEventPayload","AgentEventEmitter","validateEventKey","validateAnalyticsEvent","Embed","events","constructor","event","ensureDefaultListener","eventKey","_data","enrichEventData","data","userIdentity","app_user_id","Error","sendEventToAPI","key","apiService","getInstance","paramsData","response","updateUserData","success","error","triggerEventListeners","forEach","callback","Event","on","push","embed","EventKeys","AgentEvent"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["APIService","getAgentData","setAgentData","buildEventPayload","AgentEventEmitter","EventKeys","validateAnalyticsEvent","validateEventKey","Embed","events","constructor","event","ensureDefaultListener","eventKey","_data","enrichEventData","data","userIdentity","app_user_id","Error","sendEventToAPI","key","apiService","getInstance","screenData","SCREEN_STATE","userData","USER_DATA","currentScreen","screen","appVersion","app_version","paramsData","response","updateUserData","success","error","triggerEventListeners","forEach","callback","Event","on","push","embed","AgentEvent"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  import { ConnectionState, Room } from 'livekit-client';
4
- import { useEffect, useState } from 'react';
5
- import { EventKeys } from "../events/embed.event.js";
4
+ import { useEffect, useRef, useState } from 'react';
6
5
  import { APIService } from "../api/api.js";
6
+ import { EventKeys } from "../events/embed.event.js";
7
7
  import { getAgentData } from "../store/store.key.js";
8
+ // Store original console.warn before patching
9
+ const originalWarn = console.warn;
10
+
11
+ // Patch console.warn to filter duplicate listener warnings from WebRTC/LiveKit
12
+ // This catches warnings that are emitted directly by react-native-webrtc and event-target-shim
13
+ console.warn = (...args) => {
14
+ // Check if this is the duplicate listener warning from WebRTC or event-target-shim
15
+ const message = String(args[0] || '');
16
+ if (message.includes('event listener wasn') && message.includes('added already')) {
17
+ // Silently ignore this warning in both dev and prod
18
+ return;
19
+ }
20
+
21
+ // Pass all other warnings through to original handler
22
+ originalWarn.apply(console, args);
23
+ };
24
+
8
25
  // Create a singleton instance of Room that persists across hook instances
9
26
  // This ensures we don't create multiple Room instances that could conflict
10
27
  let roomInstance = null;
@@ -13,7 +30,16 @@ let isDisconnecting = false;
13
30
  let hasListeners = false;
14
31
  let connectionAttempts = 0;
15
32
  let stableConnectionTimerId = null;
33
+ let reconnectTimerId = null;
16
34
  const MAX_CONNECTION_ATTEMPTS = 3;
35
+
36
+ // Store listener references for cleanup
37
+ let connectionChangeHandler = null;
38
+ let trackSubscribedHandler = null;
39
+ let participantDisconnectedHandler = null;
40
+ let mediaDevicesErrorHandler = null;
41
+ let connectionQualityChangedHandler = null;
42
+ let reconnectingHandler = null;
17
43
  // Create getters for the room instance
18
44
  const getRoomInstance = () => {
19
45
  if (!roomInstance) {
@@ -25,6 +51,10 @@ const getRoomInstance = () => {
25
51
  publishDefaults: {
26
52
  simulcast: false // Disable simulcast to reduce SDP complexity
27
53
  }
54
+ // Note: LiveKit uses internal ping/pong mechanism for connection health
55
+ // Ping timeout warnings are normal for temporary network issues and
56
+ // LiveKit will automatically handle reconnection when network recovers
57
+ // These warnings are now suppressed (see setWarningHandler above)
28
58
  });
29
59
  }
30
60
  return roomInstance;
@@ -39,12 +69,56 @@ const resetConnectionAttempts = () => {
39
69
  clearTimeout(stableConnectionTimerId);
40
70
  stableConnectionTimerId = null;
41
71
  }
72
+
73
+ // Clear any pending reconnect timer
74
+ if (reconnectTimerId) {
75
+ clearTimeout(reconnectTimerId);
76
+ reconnectTimerId = null;
77
+ }
78
+ };
79
+
80
+ // Remove all event listeners from the room
81
+ const removeRoomListeners = () => {
82
+ if (roomInstance && hasListeners) {
83
+ try {
84
+ if (connectionChangeHandler) {
85
+ roomInstance.off('connectionStateChanged', connectionChangeHandler);
86
+ connectionChangeHandler = null;
87
+ }
88
+ if (trackSubscribedHandler) {
89
+ roomInstance.off('trackSubscribed', trackSubscribedHandler);
90
+ trackSubscribedHandler = null;
91
+ }
92
+ if (participantDisconnectedHandler) {
93
+ roomInstance.off('participantDisconnected', participantDisconnectedHandler);
94
+ participantDisconnectedHandler = null;
95
+ }
96
+ if (mediaDevicesErrorHandler) {
97
+ roomInstance.off('mediaDevicesError', mediaDevicesErrorHandler);
98
+ mediaDevicesErrorHandler = null;
99
+ }
100
+ if (connectionQualityChangedHandler) {
101
+ roomInstance.off('connectionQualityChanged', connectionQualityChangedHandler);
102
+ connectionQualityChangedHandler = null;
103
+ }
104
+ if (reconnectingHandler) {
105
+ roomInstance.off('reconnecting', reconnectingHandler);
106
+ reconnectingHandler = null;
107
+ }
108
+ hasListeners = false;
109
+ } catch (e) {
110
+ // Silently handle cleanup errors
111
+ }
112
+ }
42
113
  };
43
114
 
44
115
  // Cleanup function to reset the room state
45
116
  const resetRoomState = () => {
46
117
  if (roomInstance) {
47
118
  try {
119
+ // Remove event listeners first
120
+ removeRoomListeners();
121
+
48
122
  // Only disconnect if currently connected
49
123
  if (roomInstance.state !== ConnectionState.Disconnected && !isDisconnecting) {
50
124
  isDisconnecting = true;
@@ -52,9 +126,6 @@ const resetRoomState = () => {
52
126
  isDisconnecting = false;
53
127
  });
54
128
  }
55
-
56
- // Don't destroy the room instance, just reset its state
57
- hasListeners = false;
58
129
  resetConnectionAttempts();
59
130
  } catch (e) {
60
131
  // todo: handle error resetting room state
@@ -71,11 +142,76 @@ export const useVoiceAgent = () => {
71
142
  const room = getRoomInstance();
72
143
  return room ? room.state : ConnectionState.Disconnected;
73
144
  });
145
+ const roomRef = useRef(getRoomInstance());
146
+ // Guard against React 18 Strict Mode double initialization
147
+ const initializedRef = useRef(false);
148
+ const connectRoomWithToken = useRef();
149
+
150
+ // Initialize connection helper (stable ref to avoid re-definition)
151
+ connectRoomWithToken.current = async details => {
152
+ const room = getRoomInstance();
153
+
154
+ // Prevent multiple connection attempts
155
+ if (isConnecting) return;
156
+
157
+ // Limit connection attempts to prevent infinite loops
158
+ if (connectionAttempts >= MAX_CONNECTION_ATTEMPTS) {
159
+ setError(`Failed to connect after ${MAX_CONNECTION_ATTEMPTS} attempts`);
160
+ return;
161
+ }
162
+ connectionAttempts++;
163
+ try {
164
+ isConnecting = true;
165
+
166
+ // Clear any pending reconnect timer since we're attempting now
167
+ if (reconnectTimerId) {
168
+ clearTimeout(reconnectTimerId);
169
+ reconnectTimerId = null;
170
+ }
171
+
172
+ // Only attempt to connect if we're disconnected
173
+ if (room.state === ConnectionState.Disconnected) {
174
+ // Update state before connection attempt
175
+ setConnectionState(ConnectionState.Connecting);
176
+ await room.connect(details.server_url, details.token, {
177
+ autoSubscribe: true // Ensure we subscribe to tracks automatically
178
+ });
179
+
180
+ // Explicitly set to connected if connection was successful
181
+ setConnectionState(room.state);
182
+ } else if (room.state === ConnectionState.Connected) {
183
+ // Ensure our state matches
184
+ setConnectionState(ConnectionState.Connected);
185
+ } else {
186
+ // Sync our state with the room's current state
187
+ setConnectionState(room.state);
188
+ }
189
+ } catch (err) {
190
+ const message = err instanceof Error ? err.message : 'Failed to connect to room';
191
+ setError(message);
192
+
193
+ // Sync state to disconnected if we failed to connect
194
+ setConnectionState(room.state);
195
+
196
+ // Don't keep retrying if we hit an SDP error
197
+ if (message.includes('SDP') || message.includes('sdp')) {
198
+ // Stop further retries by exhausting attempts
199
+ connectionAttempts = MAX_CONNECTION_ATTEMPTS;
200
+ }
201
+ } finally {
202
+ isConnecting = false;
203
+ }
204
+ };
74
205
 
75
206
  // Setup event listeners for the room
76
207
  const setupRoomListeners = () => {
77
- if (hasListeners || !roomInstance) return;
78
- const handleConnectionChange = state => {
208
+ if (!roomInstance) return;
209
+
210
+ // Always clear previous listeners before re-registering to avoid duplicates
211
+ removeRoomListeners();
212
+
213
+ // Define all handlers as stable references
214
+ connectionChangeHandler = state => {
79
215
  // Use a function to ensure we're setting with the latest state
80
216
  setConnectionState(() => state);
81
217
 
@@ -105,29 +241,58 @@ export const useVoiceAgent = () => {
105
241
  }
106
242
  }
107
243
  };
108
- const handleTrackSubscribed = track => {
244
+ trackSubscribedHandler = track => {
109
245
  if (track.kind === 'audio') {
110
246
  track.setVolume(1.0);
111
247
  }
112
248
  };
113
-
114
- // Handle participant disconnected - this could be helpful to detect server-side kicks
115
- roomInstance.on('participantDisconnected', () => {
249
+ participantDisconnectedHandler = () => {
116
250
  // todo: handle participant disconnected
117
- });
118
- roomInstance.on('connectionStateChanged', handleConnectionChange);
119
- roomInstance.on('trackSubscribed', handleTrackSubscribed);
120
-
121
- // Listen for SDP negotiation errors to handle them better
122
- roomInstance.on('mediaDevicesError', e => {
251
+ };
252
+ mediaDevicesErrorHandler = e => {
123
253
  throw new Error(`Media devices error: ${e.message}`);
124
254
  // todo: handle media devices error
125
- });
126
- hasListeners = true;
255
+ };
256
+ connectionQualityChangedHandler = quality => {
257
+ // Monitor connection quality to detect network issues
258
+ // This helps understand when ping timeouts might occur
259
+ if (__DEV__) {
260
+ console.log('[LiveKit] Connection quality changed:', quality);
261
+ }
262
+ // If quality is poor, ping timeouts are more likely
263
+ // The connection will self-heal when network improves
264
+ };
265
+ reconnectingHandler = () => {
266
+ // Called when LiveKit detects connection issues and attempts to reconnect
267
+ if (__DEV__) {
268
+ console.log('[LiveKit] Attempting to reconnect...');
269
+ }
270
+ // This is expected behavior when ping timeouts occur
271
+ // LiveKit will automatically handle reconnection
272
+ };
273
+
274
+ // Add listeners with stored references - only if not already added
275
+ if (!hasListeners) {
276
+ roomInstance.on('participantDisconnected', participantDisconnectedHandler);
277
+ roomInstance.on('connectionStateChanged', connectionChangeHandler);
278
+ roomInstance.on('trackSubscribed', trackSubscribedHandler);
279
+ roomInstance.on('mediaDevicesError', mediaDevicesErrorHandler);
280
+ roomInstance.on('connectionQualityChanged', connectionQualityChangedHandler);
281
+ roomInstance.on('reconnecting', reconnectingHandler);
282
+ hasListeners = true;
283
+ }
127
284
  };
128
285
 
129
286
  // Initialize room and listeners
130
287
  useEffect(() => {
288
+ // Guard against React 18 Strict Mode double initialization
289
+ if (initializedRef.current) {
290
+ // Already initialized, just sync state
291
+ const room = getRoomInstance();
292
+ setConnectionState(room.state);
293
+ return;
294
+ }
295
+ initializedRef.current = true;
131
296
  const room = getRoomInstance();
132
297
  setupRoomListeners();
133
298
 
@@ -151,53 +316,31 @@ export const useVoiceAgent = () => {
151
316
 
152
317
  // Always sync our state with the room's current state
153
318
  setConnectionState(room.state);
154
- const connectToRoom = async () => {
155
- // Prevent multiple connection attempts
156
- if (isConnecting) return;
157
-
158
- // Limit connection attempts to prevent infinite loops
159
- if (connectionAttempts >= MAX_CONNECTION_ATTEMPTS) {
160
- setError(`Failed to connect after ${MAX_CONNECTION_ATTEMPTS} attempts`);
161
- return;
162
- }
163
- connectionAttempts++;
164
- try {
165
- isConnecting = true;
166
-
167
- // Only attempt to connect if we're disconnected
168
- if (room.state === ConnectionState.Disconnected) {
169
- // Update state before connection attempt
170
- setConnectionState(ConnectionState.Connecting);
171
- await room.connect(tokenDetails.server_url, tokenDetails.token, {
172
- autoSubscribe: true // Ensure we subscribe to tracks automatically
173
- });
174
-
175
- // Explicitly set to connected if connection was successful
176
- setConnectionState(room.state);
177
- } else if (room.state === ConnectionState.Connected) {
178
- // Ensure our state matches
179
- setConnectionState(ConnectionState.Connected);
180
- } else {
181
- // Sync our state with the room's current state
182
- setConnectionState(room.state);
183
- }
184
- } catch (err) {
185
- const message = err instanceof Error ? err.message : 'Failed to connect to room';
186
- setError(message);
319
+ connectRoomWithToken.current?.(tokenDetails);
187
320
 
188
- // Sync state to disconnected if we failed to connect
189
- setConnectionState(room.state);
321
+ // No cleanup here - we don't want to disconnect when token changes or component unmounts
322
+ }, [tokenDetails]);
190
323
 
191
- // Don't keep retrying if we hit an SDP error
192
- if (message.includes('SDP') || message.includes('sdp')) {}
193
- } finally {
194
- isConnecting = false;
324
+ // Attempt reconnect if disconnected while a token is present
325
+ useEffect(() => {
326
+ if (connectionState === ConnectionState.Disconnected && tokenDetails && !isDisconnecting && !isConnecting) {
327
+ // Schedule a reconnect with small backoff to avoid tight loops
328
+ if (reconnectTimerId) {
329
+ clearTimeout(reconnectTimerId);
195
330
  }
196
- };
197
- connectToRoom();
331
+ reconnectTimerId = setTimeout(() => {
332
+ connectRoomWithToken.current?.(tokenDetails);
333
+ }, 1000);
334
+ }
198
335
 
199
- // No cleanup here - we don't want to disconnect when token changes or component unmounts
200
- }, [tokenDetails]);
336
+ // Clear timer when state changes away from Disconnected
337
+ return () => {
338
+ if (reconnectTimerId && connectionState !== ConnectionState.Disconnected) {
339
+ clearTimeout(reconnectTimerId);
340
+ reconnectTimerId = null;
341
+ }
342
+ };
343
+ }, [connectionState, tokenDetails]);
201
344
 
202
345
  // Generate token and connect
203
346
  const generateVoiceToken = async () => {
@@ -265,23 +408,17 @@ export const useVoiceAgent = () => {
265
408
  isDisconnecting = false;
266
409
  }
267
410
  };
268
-
269
- // Mute microphone
270
- const muteMic = () => {
411
+ const unmuteMic = async () => {
412
+ if (!isMicMuted) return; // 👈 important
271
413
  const room = getRoomInstance();
272
- if (room.localParticipant) {
273
- room.localParticipant.setMicrophoneEnabled(false);
274
- setIsMicMuted(true);
275
- }
414
+ await room.localParticipant.setMicrophoneEnabled(true);
415
+ setIsMicMuted(false);
276
416
  };
277
-
278
- // Unmute microphone
279
- const unmuteMic = () => {
417
+ const muteMic = async () => {
418
+ if (isMicMuted) return; // 👈 important
280
419
  const room = getRoomInstance();
281
- if (room.localParticipant) {
282
- room.localParticipant.setMicrophoneEnabled(true);
283
- setIsMicMuted(false);
284
- }
420
+ await room.localParticipant.setMicrophoneEnabled(false);
421
+ setIsMicMuted(true);
285
422
  };
286
423
 
287
424
  // Clean up everything (use only when the app is shutting down)
@@ -309,9 +446,7 @@ export const useVoiceAgent = () => {
309
446
  tokenDetails,
310
447
  isLoading,
311
448
  error,
312
- roomRef: {
313
- current: getRoomInstance()
314
- },
449
+ roomRef,
315
450
  cleanup,
316
451
  getPopupDescription
317
452
  };