@robylon/react-native-sdk 2.0.28 → 2.0.29-staging.0

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 (52) hide show
  1. package/lib/commonjs/Chatbotsdk.js +1 -1
  2. package/lib/commonjs/Chatbotsdk.js.map +1 -1
  3. package/lib/commonjs/config.js +1 -1
  4. package/lib/commonjs/config.js.map +1 -1
  5. package/lib/commonjs/constants.js +1 -1
  6. package/lib/commonjs/constants.js.map +1 -1
  7. package/lib/commonjs/versions/version.staging.js +1 -1
  8. package/lib/module/Chatbotsdk.js +1 -1
  9. package/lib/module/Chatbotsdk.js.map +1 -1
  10. package/lib/module/config.js +1 -1
  11. package/lib/module/config.js.map +1 -1
  12. package/lib/module/constants.js +1 -1
  13. package/lib/module/constants.js.map +1 -1
  14. package/lib/module/versions/version.staging.js +1 -1
  15. package/lib/typescript/versions/version.staging.d.ts +1 -1
  16. package/package.json +1 -1
  17. package/src/Chatbotsdk.tsx +877 -0
  18. package/src/FloatingButton/launchers/ImageLauncher.tsx +75 -0
  19. package/src/FloatingButton/launchers/TextLauncher.tsx +84 -0
  20. package/src/FloatingButton/launchers/TextualImageLauncher.tsx +133 -0
  21. package/src/FloatingButton.tsx +97 -0
  22. package/src/LoadingIndicator.tsx +11 -0
  23. package/src/Toast.tsx +65 -0
  24. package/src/components/DebugButton.tsx +46 -0
  25. package/src/components/ErrorBoundary.tsx +38 -0
  26. package/src/config.ts +4 -0
  27. package/src/constants/errorConstants.ts +21 -0
  28. package/src/constants/fontStyles.ts +3 -0
  29. package/src/constants.ts +5 -0
  30. package/src/global.d.ts +11 -0
  31. package/src/hooks/useChatbotEvents.ts +93 -0
  32. package/src/index.tsx +10 -0
  33. package/src/openChatbot.ts +11 -0
  34. package/src/openChatbot.tsx +0 -0
  35. package/src/services/ErrorTrackingService.ts +217 -0
  36. package/src/types/events.ts +25 -0
  37. package/src/types/react-native-flipper-performance-plugin.d.ts +3 -0
  38. package/src/types/react-native-globals.d.ts +10 -0
  39. package/src/utils/animations.ts +120 -0
  40. package/src/utils/colorUtils.ts +35 -0
  41. package/src/utils/cookieUtils.ts +7 -0
  42. package/src/utils/debugConfig.ts +56 -0
  43. package/src/utils/debugMenu.ts +14 -0
  44. package/src/utils/errorHandler.ts +58 -0
  45. package/src/utils/fileDownload.ts +70 -0
  46. package/src/utils/logger.ts +14 -0
  47. package/src/utils/systemInfo.ts +110 -0
  48. package/src/utils/webViewStorage.ts +62 -0
  49. package/src/version.ts +2 -0
  50. package/src/versions/version.dev.ts +2 -0
  51. package/src/versions/version.production.ts +2 -0
  52. package/src/versions/version.staging.ts +2 -0
@@ -0,0 +1,110 @@
1
+ import { Platform, Dimensions, PixelRatio } from "react-native";
2
+ import { SDK_VERSION } from "../version";
3
+
4
+ interface ScreenSize {
5
+ width: number;
6
+ height: number;
7
+ }
8
+
9
+ interface SystemInfo {
10
+ platform: string;
11
+ os: string;
12
+ browser: string;
13
+ browser_version: string | null;
14
+ browser_language: string | null;
15
+ sdk_version: string;
16
+ device: string;
17
+ screen_size: ScreenSize;
18
+ }
19
+
20
+ // Get device type based on platform and screen dimensions
21
+ const getDeviceType = (): string => {
22
+ const { width, height } = Dimensions.get("window");
23
+ const aspectRatio = height / width;
24
+
25
+ if (Platform.OS === "ios") {
26
+ return Platform.isPad ? "iPad" : "iPhone";
27
+ } else if (Platform.OS === "android") {
28
+ return aspectRatio < 1.6 ? "Android Tablet" : "Android Phone";
29
+ }
30
+ return "Desktop";
31
+ };
32
+
33
+ // Get screen dimensions with pixel ratio
34
+ const getScreenSize = (): ScreenSize => {
35
+ return {
36
+ width: Math.round(Dimensions.get("window").width * PixelRatio.get()),
37
+ height: Math.round(Dimensions.get("window").height * PixelRatio.get()),
38
+ };
39
+ };
40
+
41
+ // Get browser detection script
42
+ export const getBrowserAndOSInfoScript = (): string => {
43
+ return `
44
+ function getOSAndBrowser() {
45
+ const userAgent = navigator.userAgent;
46
+
47
+ // OS Detection
48
+ let os = "unknown";
49
+ if (userAgent.indexOf("Win") !== -1) os = "Windows";
50
+ else if (userAgent.indexOf("Mac") !== -1) os = "MacOS";
51
+ else if (userAgent.indexOf("Linux") !== -1) os = "Linux";
52
+ else if (userAgent.indexOf("Android") !== -1) os = "Android";
53
+ else if (userAgent.indexOf("like Mac") !== -1) os = "iOS";
54
+
55
+ // Browser Detection
56
+ let browser = "unknown";
57
+ let browserVersion = null;
58
+ if (userAgent.indexOf("Chrome") !== -1) {
59
+ browser = "Chrome";
60
+ const chromeMatch = userAgent.match(/Chrome\\/([0-9.]+)/);
61
+ browserVersion = chromeMatch ? chromeMatch[1] : null;
62
+ } else if (userAgent.indexOf("Safari") !== -1) {
63
+ browser = "Safari";
64
+ const safariMatch = userAgent.match(/Version\\/([0-9.]+)/);
65
+ browserVersion = safariMatch ? safariMatch[1] : null;
66
+ } else if (userAgent.indexOf("Firefox") !== -1) {
67
+ browser = "Firefox";
68
+ const firefoxMatch = userAgent.match(/Firefox\\/([0-9.]+)/);
69
+ browserVersion = firefoxMatch ? firefoxMatch[1] : null;
70
+ } else if (userAgent.indexOf("Edge") !== -1) {
71
+ browser = "Edge";
72
+ const edgeMatch = userAgent.match(/Edge\\/([0-9.]+)/);
73
+ browserVersion = edgeMatch ? edgeMatch[1] : null;
74
+ } else if (userAgent.indexOf("MSIE") !== -1 || userAgent.indexOf("Trident/") !== -1) {
75
+ browser = "IE";
76
+ const ieMatch = userAgent.match(/(?:MSIE |rv:)([0-9.]+)/);
77
+ browserVersion = ieMatch ? ieMatch[1] : null;
78
+ }
79
+
80
+ // Browser Language
81
+ const browserLanguage = navigator.language || navigator.languages?.[0] || null;
82
+
83
+ window.ReactNativeWebView.postMessage(JSON.stringify({
84
+ type: 'SYSTEM_INFO',
85
+ data: { os, browser, browser_version: browserVersion, browser_language: browserLanguage }
86
+ }));
87
+ }
88
+ getOSAndBrowser();
89
+ true;
90
+ `;
91
+ };
92
+
93
+ // Get complete system information
94
+ export const getSystemInfo = (webViewSystemInfo: {
95
+ os: string;
96
+ browser: string;
97
+ browser_version?: string | null;
98
+ browser_language?: string | null;
99
+ }): SystemInfo => {
100
+ return {
101
+ platform: Platform.OS,
102
+ os: webViewSystemInfo.os || Platform.OS,
103
+ browser: webViewSystemInfo.browser || "WebView",
104
+ browser_version: webViewSystemInfo.browser_version || null,
105
+ browser_language: webViewSystemInfo.browser_language || null,
106
+ sdk_version: SDK_VERSION,
107
+ device: getDeviceType(),
108
+ screen_size: getScreenSize(),
109
+ };
110
+ };
@@ -0,0 +1,62 @@
1
+ import { logger } from "./logger";
2
+
3
+ export enum StorageMessageType {
4
+ GET_STORAGE = "GET_STORAGE",
5
+ SET_STORAGE = "SET_STORAGE",
6
+ STORAGE_READY = "STORAGE_READY",
7
+ STORAGE_ERROR = "STORAGE_ERROR",
8
+ STORAGE_RESPONSE = "STORAGE_RESPONSE",
9
+ }
10
+
11
+ export interface StorageMessage {
12
+ type: StorageMessageType;
13
+ key?: string;
14
+ value?: string;
15
+ error?: string;
16
+ }
17
+
18
+ export const getStorageScript = () => `
19
+ window.handleStorageOperation = function(message) {
20
+ try {
21
+ switch(message.type) {
22
+ case '${StorageMessageType.GET_STORAGE}':
23
+ const value = localStorage.getItem(message.key);
24
+ window.ReactNativeWebView.postMessage(JSON.stringify({
25
+ type: '${StorageMessageType.STORAGE_RESPONSE}',
26
+ key: message.key,
27
+ value: value
28
+ }));
29
+ break;
30
+ case '${StorageMessageType.SET_STORAGE}':
31
+ localStorage.setItem(message.key, message.value);
32
+ window.ReactNativeWebView.postMessage(JSON.stringify({
33
+ type: '${StorageMessageType.STORAGE_RESPONSE}',
34
+ key: message.key,
35
+ value: message.value
36
+ }));
37
+ break;
38
+ }
39
+ } catch (error) {
40
+ window.ReactNativeWebView.postMessage(JSON.stringify({
41
+ type: '${StorageMessageType.STORAGE_ERROR}',
42
+ error: error.message
43
+ }));
44
+ }
45
+ };
46
+
47
+ window.ReactNativeWebView.postMessage(JSON.stringify({
48
+ type: '${StorageMessageType.STORAGE_READY}'
49
+ }));
50
+ `;
51
+
52
+ export const createStorageMessage = (
53
+ type: StorageMessageType,
54
+ key?: string,
55
+ value?: string
56
+ ): string => {
57
+ return `window.handleStorageOperation(${JSON.stringify({
58
+ type,
59
+ key,
60
+ value,
61
+ })});`;
62
+ };
package/src/version.ts ADDED
@@ -0,0 +1,2 @@
1
+ // This file is auto-generated. Do not modify it manually.
2
+ export { SDK_VERSION } from './versions/version.staging';
@@ -0,0 +1,2 @@
1
+ // This file is auto-generated. Do not modify it manually.
2
+ export const SDK_VERSION = '2.0.22-dev.0';
@@ -0,0 +1,2 @@
1
+ // This file is auto-generated. Do not modify it manually.
2
+ export const SDK_VERSION = "0.0.0";
@@ -0,0 +1,2 @@
1
+ // This file is auto-generated. Do not modify it manually.
2
+ export const SDK_VERSION = '2.0.29-staging.0';