@robylon/react-native-sdk 2.0.29-staging.8 → 2.0.32-staging.4

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 (48) hide show
  1. package/lib/commonjs/Chatbotsdk.js +4 -3
  2. package/lib/commonjs/Chatbotsdk.js.map +1 -1
  3. package/lib/commonjs/FloatingButton/launchers/ImageLauncher.js +1 -1
  4. package/lib/commonjs/FloatingButton/launchers/ImageLauncher.js.map +1 -1
  5. package/lib/commonjs/FloatingButton/launchers/TextLauncher.js +1 -1
  6. package/lib/commonjs/FloatingButton/launchers/TextLauncher.js.map +1 -1
  7. package/lib/commonjs/FloatingButton/launchers/TextualImageLauncher.js +1 -1
  8. package/lib/commonjs/FloatingButton/launchers/TextualImageLauncher.js.map +1 -1
  9. package/lib/commonjs/FloatingButton.js +1 -1
  10. package/lib/commonjs/FloatingButton.js.map +1 -1
  11. package/lib/commonjs/LoadingIndicator.js +1 -1
  12. package/lib/commonjs/LoadingIndicator.js.map +1 -1
  13. package/lib/commonjs/Toast.js +1 -1
  14. package/lib/commonjs/Toast.js.map +1 -1
  15. package/lib/commonjs/components/DebugButton.js +1 -1
  16. package/lib/commonjs/components/DebugButton.js.map +1 -1
  17. package/lib/commonjs/types/events.js +1 -1
  18. package/lib/commonjs/types/events.js.map +1 -1
  19. package/lib/commonjs/versions/version.staging.js +1 -1
  20. package/lib/module/Chatbotsdk.js +4 -3
  21. package/lib/module/Chatbotsdk.js.map +1 -1
  22. package/lib/module/FloatingButton/launchers/ImageLauncher.js +1 -1
  23. package/lib/module/FloatingButton/launchers/ImageLauncher.js.map +1 -1
  24. package/lib/module/FloatingButton/launchers/TextLauncher.js +1 -1
  25. package/lib/module/FloatingButton/launchers/TextLauncher.js.map +1 -1
  26. package/lib/module/FloatingButton/launchers/TextualImageLauncher.js +1 -1
  27. package/lib/module/FloatingButton/launchers/TextualImageLauncher.js.map +1 -1
  28. package/lib/module/FloatingButton.js +1 -1
  29. package/lib/module/FloatingButton.js.map +1 -1
  30. package/lib/module/LoadingIndicator.js +1 -1
  31. package/lib/module/LoadingIndicator.js.map +1 -1
  32. package/lib/module/Toast.js +1 -1
  33. package/lib/module/Toast.js.map +1 -1
  34. package/lib/module/components/DebugButton.js +1 -1
  35. package/lib/module/components/DebugButton.js.map +1 -1
  36. package/lib/module/openChatbot.js +2 -1
  37. package/lib/module/openChatbot.js.map +1 -1
  38. package/lib/module/types/events.js +1 -1
  39. package/lib/module/types/events.js.map +1 -1
  40. package/lib/module/versions/version.staging.js +1 -1
  41. package/lib/typescript/Chatbotsdk.d.ts.map +1 -1
  42. package/lib/typescript/types/events.d.ts +4 -1
  43. package/lib/typescript/types/events.d.ts.map +1 -1
  44. package/lib/typescript/versions/version.staging.d.ts +1 -1
  45. package/package.json +1 -1
  46. package/src/Chatbotsdk.tsx +67 -15
  47. package/src/types/events.ts +3 -0
  48. package/src/versions/version.staging.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Chatbotsdk.d.ts","sourceRoot":"","sources":["../../src/Chatbotsdk.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAkBf,OAAO,EAAoB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAsBvE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;KAC7B,CAAC;IACF,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB;AAED,UAAU,oBAAqB,SAAQ,YAAY;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAUD,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE;QACtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;IACjD,aAAa,EAAE,YAAY,CAAC;IAC5B,mBAAmB,EAAE;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,kBAAkB,CAAC,EAAE;YACnB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,OAAO,yFA+uBZ,CAAC;AA0CF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Chatbotsdk.d.ts","sourceRoot":"","sources":["../../src/Chatbotsdk.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAkBf,OAAO,EAEL,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAsBxB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;KAC7B,CAAC;IACF,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB;AAED,UAAU,oBAAqB,SAAQ,YAAY;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAgCD,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE;QACtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;IACjD,aAAa,EAAE,YAAY,CAAC;IAC5B,mBAAmB,EAAE;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,kBAAkB,CAAC,EAAE;YACnB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,OAAO,yFAywBZ,CAAC;AA0CF,eAAe,OAAO,CAAC"}
@@ -7,7 +7,10 @@ export declare enum ChatbotEventType {
7
7
  CHATBOT_LOADED = "CHATBOT_LOADED",
8
8
  CHAT_INITIALIZED = "CHAT_INITIALIZED",
9
9
  SESSION_REFRESHED = "SESSION_REFRESHED",
10
- CHAT_INITIALIZATION_FAILED = "CHAT_INITIALIZATION_FAILED"
10
+ CHAT_INITIALIZATION_FAILED = "CHAT_INITIALIZATION_FAILED",
11
+ REQUEST_MIC_PERMISSION = "REQUEST_MIC_PERMISSION",
12
+ MIC_PERMISSION_GRANTED = "MIC_PERMISSION_GRANTED",
13
+ MIC_PERMISSION_DENIED = "MIC_PERMISSION_DENIED"
11
14
  }
12
15
  export declare enum InternalEventType {
13
16
  CHAT_MOVED = "CHAT_MOVED"
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/types/events.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,qBAAqB,0BAA0B;IAC/C,sBAAsB,2BAA2B;IACjD,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,0BAA0B,+BAA+B;CAC1D;AAED,oBAAY,iBAAiB;IAC3B,UAAU,eAAe;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/types/events.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,qBAAqB,0BAA0B;IAC/C,sBAAsB,2BAA2B;IACjD,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,0BAA0B,+BAA+B;IACzD,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,qBAAqB,0BAA0B;CAChD;AAED,oBAAY,iBAAiB;IAC3B,UAAU,eAAe;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const SDK_VERSION = "2.0.29-staging.8";
1
+ export declare const SDK_VERSION = "2.0.32-staging.4";
2
2
  //# sourceMappingURL=version.staging.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robylon/react-native-sdk",
3
- "version": "2.0.29-staging.8",
3
+ "version": "2.0.32-staging.4",
4
4
  "description": "React Native SDK for Robylon",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -24,7 +24,11 @@ import FloatingButton from "./FloatingButton";
24
24
  import { API_URL, BASE_CHATBOT_URL, DEFAULT_LAUNCHER_IMAGE } from "./constants";
25
25
  import { getSystemInfo, getBrowserAndOSInfoScript } from "./utils/systemInfo";
26
26
  import { useChatbotEvents } from "./hooks/useChatbotEvents";
27
- import { ChatbotEventType, ChatbotEventHandler } from "./types/events";
27
+ import {
28
+ ChatbotEventType,
29
+ ChatbotEventHandler,
30
+ InternalEventType,
31
+ } from "./types/events";
28
32
  import { logger } from "./utils/logger";
29
33
  import { enableNetworkDebug, enableWebViewDebug } from "./utils/debugConfig";
30
34
  import DebugButton from "./components/DebugButton";
@@ -85,6 +89,28 @@ interface ChatbotMessage {
85
89
  filename?: string;
86
90
  }
87
91
 
92
+ const getOriginFromUrl = (url?: string): string | null => {
93
+ if (!url) return null;
94
+ try {
95
+ return new URL(url)?.origin ?? null;
96
+ } catch {
97
+ return null;
98
+ }
99
+ };
100
+
101
+ const warmupHttpOrigin = async (origin?: string | null) => {
102
+ if (!origin) return;
103
+ try {
104
+ await fetch(origin, { method: "HEAD" });
105
+ } catch {
106
+ try {
107
+ await fetch(origin, { method: "GET" });
108
+ } catch {
109
+ // Network warmup should be best-effort and non-blocking.
110
+ }
111
+ }
112
+ };
113
+
88
114
  export enum ChatbotInterfaceType {
89
115
  WIDGET = "WIDGET",
90
116
  POPOVER = "POPOVER",
@@ -244,12 +270,11 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
244
270
 
245
271
  // Handle WebView messages
246
272
  const handleMessage = useCallback(
247
- (event: WebViewMessageEvent) => {
273
+ async (event: WebViewMessageEvent) => {
248
274
  const { data } = event.nativeEvent;
249
275
 
250
276
  try {
251
277
  const parsedData: ChatbotMessage = JSON.parse(data);
252
-
253
278
  // Handle storage messages
254
279
  if (
255
280
  Object.values(StorageMessageType).includes(
@@ -369,6 +394,26 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
369
394
  parsedData?.data
370
395
  );
371
396
  break;
397
+ case "REQUEST_MIC_PERMISSION":
398
+ const granted = await requestAndroidMicPermission();
399
+ if (webViewRef.current && isWebViewVisible) {
400
+ const messageData = {
401
+ name: "requestMicPermission",
402
+ action: "requestMicPermission",
403
+ type: granted
404
+ ? "MIC_PERMISSION_GRANTED"
405
+ : "MIC_PERMISSION_DENIED",
406
+ };
407
+ logger.debug("messageData====>", JSON.stringify(messageData));
408
+ webViewRef.current?.injectJavaScript(`
409
+ window.postMessage(${JSON.stringify(messageData)}, '*');`);
410
+ }
411
+ // if (granted) {
412
+ // emitEvent(ChatbotEventType.MIC_PERMISSION_GRANTED);
413
+ // } else {
414
+ // emitEvent(ChatbotEventType.MIC_PERMISSION_DENIED);
415
+ // }
416
+ break;
372
417
  default:
373
418
  if (onMessage) onMessage(parsedData ?? {});
374
419
  }
@@ -532,6 +577,20 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
532
577
  }
533
578
  }, [api_key, effectiveUserId, user_token]);
534
579
 
580
+ useEffect(() => {
581
+ const warmupOrigins = async () => {
582
+ const apiOrigin = getOriginFromUrl(API_URL);
583
+ const chatbotOrigin = getOriginFromUrl(BASE_CHATBOT_URL);
584
+
585
+ await Promise.allSettled([
586
+ warmupHttpOrigin(apiOrigin),
587
+ warmupHttpOrigin(chatbotOrigin),
588
+ ]);
589
+ };
590
+
591
+ warmupOrigins();
592
+ }, []);
593
+
535
594
  function constructUrl(): string {
536
595
  if (!effectiveUserId) return "";
537
596
  const params = new URLSearchParams({
@@ -572,7 +631,6 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
572
631
  webViewRef.current.postMessage(
573
632
  JSON.stringify({
574
633
  name: "closeFrame",
575
- domain: "app-domain.com",
576
634
  })
577
635
  );
578
636
  }
@@ -618,11 +676,10 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
618
676
  };
619
677
 
620
678
  const requestAndroidMicPermission = useCallback(async () => {
621
- Alert.alert(
622
- "Microphone permission",
623
- "This app uses your microphone for voice features in the chatbot."
624
- );
625
679
  try {
680
+ if (Platform.OS === "ios") {
681
+ return true;
682
+ }
626
683
  // Check if already granted
627
684
  const alreadyGranted = await PermissionsAndroid.check(
628
685
  PermissionsAndroid.PERMISSIONS.RECORD_AUDIO
@@ -636,8 +693,7 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
636
693
  PermissionsAndroid.PERMISSIONS.RECORD_AUDIO,
637
694
  {
638
695
  title: "Microphone permission",
639
- message:
640
- "This app uses your microphone for voice features in the chatbot.",
696
+ message: "This app uses your microphone for voice features.",
641
697
  buttonPositive: "Allow",
642
698
  buttonNegative: "Deny",
643
699
  }
@@ -660,11 +716,6 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
660
716
  }
661
717
  }, []);
662
718
 
663
- useEffect(() => {
664
- // Fire and forget: we just want the OS dialog to show early
665
- requestAndroidMicPermission();
666
- }, [requestAndroidMicPermission]);
667
-
668
719
  const screenDimensions = getScreenDimensions();
669
720
 
670
721
  useEffect(() => {
@@ -749,6 +800,7 @@ const Chatbot = forwardRef<ChatbotRef, InternalChatbotProps>(
749
800
  >
750
801
  <ErrorBoundary componentName="ChatbotWebView">
751
802
  <WebView
803
+ mediaCapturePermissionGrantType={"grant"}
752
804
  webviewDebuggingEnabled={true}
753
805
  ref={webViewRef}
754
806
  source={{
@@ -8,6 +8,9 @@ export enum ChatbotEventType {
8
8
  CHAT_INITIALIZED = "CHAT_INITIALIZED",
9
9
  SESSION_REFRESHED = "SESSION_REFRESHED",
10
10
  CHAT_INITIALIZATION_FAILED = "CHAT_INITIALIZATION_FAILED",
11
+ REQUEST_MIC_PERMISSION = "REQUEST_MIC_PERMISSION",
12
+ MIC_PERMISSION_GRANTED = "MIC_PERMISSION_GRANTED",
13
+ MIC_PERMISSION_DENIED = "MIC_PERMISSION_DENIED",
11
14
  }
12
15
 
13
16
  export enum InternalEventType {
@@ -1,2 +1,2 @@
1
1
  // This file is auto-generated. Do not modify it manually.
2
- export const SDK_VERSION = '2.0.29-staging.8';
2
+ export const SDK_VERSION = '2.0.32-staging.4';