@robylon/react-native-sdk 2.0.16-staging.2 → 2.0.16-staging.3

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 (137) hide show
  1. package/.npmignore.development +18 -0
  2. package/babel.config.js +15 -15
  3. package/ios/Podfile +12 -0
  4. package/lib/commonjs/Chatbotsdk.js +1 -1
  5. package/lib/commonjs/Chatbotsdk.js.map +1 -1
  6. package/lib/commonjs/FloatingButton.js +1 -1
  7. package/lib/commonjs/FloatingButton.js.map +1 -1
  8. package/lib/commonjs/components/DebugButton.js +2 -0
  9. package/lib/commonjs/components/DebugButton.js.map +1 -0
  10. package/lib/commonjs/components/ErrorBoundary.js +2 -0
  11. package/lib/commonjs/components/ErrorBoundary.js.map +1 -0
  12. package/lib/commonjs/constants/errorConstants.js +2 -0
  13. package/lib/commonjs/constants/errorConstants.js.map +1 -0
  14. package/lib/commonjs/constants.js +1 -1
  15. package/lib/commonjs/constants.js.map +1 -1
  16. package/lib/commonjs/hooks/useChatbotEvents.js +2 -0
  17. package/lib/commonjs/hooks/useChatbotEvents.js.map +1 -0
  18. package/lib/commonjs/index.js +1 -1
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/services/ErrorTrackingService.js +2 -0
  21. package/lib/commonjs/services/ErrorTrackingService.js.map +1 -0
  22. package/lib/commonjs/types/events.js +2 -0
  23. package/lib/commonjs/types/events.js.map +1 -0
  24. package/lib/commonjs/types/react-native-flipper-performance-plugin.d.js +2 -0
  25. package/lib/commonjs/types/react-native-flipper-performance-plugin.d.js.map +1 -0
  26. package/lib/commonjs/types/react-native-globals.d.js +2 -0
  27. package/lib/commonjs/types/react-native-globals.d.js.map +1 -0
  28. package/lib/commonjs/utils/cookieUtils.js +2 -0
  29. package/lib/commonjs/utils/cookieUtils.js.map +1 -0
  30. package/lib/commonjs/utils/debugConfig.js +2 -0
  31. package/lib/commonjs/utils/debugConfig.js.map +1 -0
  32. package/lib/commonjs/utils/debugMenu.js +2 -0
  33. package/lib/commonjs/utils/debugMenu.js.map +1 -0
  34. package/lib/commonjs/utils/errorHandler.js +2 -0
  35. package/lib/commonjs/utils/errorHandler.js.map +1 -0
  36. package/lib/commonjs/utils/logger.js +2 -0
  37. package/lib/commonjs/utils/logger.js.map +1 -0
  38. package/lib/commonjs/utils/systemInfo.js +2 -0
  39. package/lib/commonjs/utils/systemInfo.js.map +1 -0
  40. package/lib/commonjs/utils/webViewStorage.js +2 -0
  41. package/lib/commonjs/utils/webViewStorage.js.map +1 -0
  42. package/lib/commonjs/version.js +2 -0
  43. package/lib/commonjs/version.js.map +1 -0
  44. package/lib/module/Chatbotsdk.js +1 -1
  45. package/lib/module/Chatbotsdk.js.map +1 -1
  46. package/lib/module/FloatingButton.js +1 -1
  47. package/lib/module/FloatingButton.js.map +1 -1
  48. package/lib/module/components/DebugButton.js +2 -0
  49. package/lib/module/components/DebugButton.js.map +1 -0
  50. package/lib/module/components/ErrorBoundary.js +2 -0
  51. package/lib/module/components/ErrorBoundary.js.map +1 -0
  52. package/lib/module/constants/errorConstants.js +2 -0
  53. package/lib/module/constants/errorConstants.js.map +1 -0
  54. package/lib/module/constants.js +1 -1
  55. package/lib/module/constants.js.map +1 -1
  56. package/lib/module/hooks/useChatbotEvents.js +2 -0
  57. package/lib/module/hooks/useChatbotEvents.js.map +1 -0
  58. package/lib/module/index.js +1 -1
  59. package/lib/module/index.js.map +1 -1
  60. package/lib/module/services/ErrorTrackingService.js +2 -0
  61. package/lib/module/services/ErrorTrackingService.js.map +1 -0
  62. package/lib/module/types/events.js +2 -0
  63. package/lib/module/types/events.js.map +1 -0
  64. package/lib/module/types/react-native-flipper-performance-plugin.d.js +2 -0
  65. package/lib/module/types/react-native-flipper-performance-plugin.d.js.map +1 -0
  66. package/lib/module/types/react-native-globals.d.js +2 -0
  67. package/lib/module/types/react-native-globals.d.js.map +1 -0
  68. package/lib/module/utils/cookieUtils.js +2 -0
  69. package/lib/module/utils/cookieUtils.js.map +1 -0
  70. package/lib/module/utils/debugConfig.js +2 -0
  71. package/lib/module/utils/debugConfig.js.map +1 -0
  72. package/lib/module/utils/debugMenu.js +2 -0
  73. package/lib/module/utils/debugMenu.js.map +1 -0
  74. package/lib/module/utils/errorHandler.js +2 -0
  75. package/lib/module/utils/errorHandler.js.map +1 -0
  76. package/lib/module/utils/logger.js +2 -0
  77. package/lib/module/utils/logger.js.map +1 -0
  78. package/lib/module/utils/systemInfo.js +2 -0
  79. package/lib/module/utils/systemInfo.js.map +1 -0
  80. package/lib/module/utils/webViewStorage.js +2 -0
  81. package/lib/module/utils/webViewStorage.js.map +1 -0
  82. package/lib/module/version.js +2 -0
  83. package/lib/module/version.js.map +1 -0
  84. package/lib/typescript/Chatbotsdk.d.ts +9 -10
  85. package/lib/typescript/Chatbotsdk.d.ts.map +1 -1
  86. package/lib/typescript/FloatingButton.d.ts.map +1 -1
  87. package/lib/typescript/components/DebugButton.d.ts +4 -0
  88. package/lib/typescript/components/DebugButton.d.ts.map +1 -0
  89. package/lib/typescript/components/ErrorBoundary.d.ts +16 -0
  90. package/lib/typescript/components/ErrorBoundary.d.ts.map +1 -0
  91. package/lib/typescript/constants/errorConstants.d.ts +18 -0
  92. package/lib/typescript/constants/errorConstants.d.ts.map +1 -0
  93. package/lib/typescript/hooks/useChatbotEvents.d.ts +17 -0
  94. package/lib/typescript/hooks/useChatbotEvents.d.ts.map +1 -0
  95. package/lib/typescript/index.d.ts +5 -1
  96. package/lib/typescript/index.d.ts.map +1 -1
  97. package/lib/typescript/services/ErrorTrackingService.d.ts +34 -0
  98. package/lib/typescript/services/ErrorTrackingService.d.ts.map +1 -0
  99. package/lib/typescript/types/events.d.ts +22 -0
  100. package/lib/typescript/types/events.d.ts.map +1 -0
  101. package/lib/typescript/utils/cookieUtils.d.ts +2 -0
  102. package/lib/typescript/utils/cookieUtils.d.ts.map +1 -0
  103. package/lib/typescript/utils/debugConfig.d.ts +8 -0
  104. package/lib/typescript/utils/debugConfig.d.ts.map +1 -0
  105. package/lib/typescript/utils/debugMenu.d.ts +3 -0
  106. package/lib/typescript/utils/debugMenu.d.ts.map +1 -0
  107. package/lib/typescript/utils/errorHandler.d.ts +2 -0
  108. package/lib/typescript/utils/errorHandler.d.ts.map +1 -0
  109. package/lib/typescript/utils/logger.d.ts +7 -0
  110. package/lib/typescript/utils/logger.d.ts.map +1 -0
  111. package/lib/typescript/utils/systemInfo.d.ts +19 -0
  112. package/lib/typescript/utils/systemInfo.d.ts.map +1 -0
  113. package/lib/typescript/utils/webViewStorage.d.ts +16 -0
  114. package/lib/typescript/utils/webViewStorage.d.ts.map +1 -0
  115. package/lib/typescript/version.d.ts +2 -0
  116. package/lib/typescript/version.d.ts.map +1 -0
  117. package/package.json +8 -2
  118. package/scripts/generate-version.js +9 -0
  119. package/src/Chatbotsdk.tsx +426 -151
  120. package/src/FloatingButton.tsx +18 -1
  121. package/src/components/DebugButton.tsx +46 -0
  122. package/src/components/ErrorBoundary.tsx +38 -0
  123. package/src/constants/errorConstants.ts +21 -0
  124. package/src/hooks/useChatbotEvents.ts +93 -0
  125. package/src/index.tsx +9 -1
  126. package/src/services/ErrorTrackingService.ts +217 -0
  127. package/src/types/events.ts +25 -0
  128. package/src/types/react-native-flipper-performance-plugin.d.ts +3 -0
  129. package/src/types/react-native-globals.d.ts +10 -0
  130. package/src/utils/cookieUtils.ts +7 -0
  131. package/src/utils/debugConfig.ts +56 -0
  132. package/src/utils/debugMenu.ts +14 -0
  133. package/src/utils/errorHandler.ts +58 -0
  134. package/src/utils/logger.ts +14 -0
  135. package/src/utils/systemInfo.ts +84 -0
  136. package/src/utils/webViewStorage.ts +62 -0
  137. package/src/version.ts +2 -0
@@ -0,0 +1,84 @@
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
+ SDK_VERSION: string;
14
+ device: string;
15
+ screen_size: ScreenSize;
16
+ }
17
+
18
+ // Get device type based on platform and screen dimensions
19
+ const getDeviceType = (): string => {
20
+ const { width, height } = Dimensions.get("window");
21
+ const aspectRatio = height / width;
22
+
23
+ if (Platform.OS === "ios") {
24
+ return Platform.isPad ? "iPad" : "iPhone";
25
+ } else if (Platform.OS === "android") {
26
+ return aspectRatio < 1.6 ? "Android Tablet" : "Android Phone";
27
+ }
28
+ return "Desktop";
29
+ };
30
+
31
+ // Get screen dimensions with pixel ratio
32
+ const getScreenSize = (): ScreenSize => {
33
+ return {
34
+ width: Math.round(Dimensions.get("window").width * PixelRatio.get()),
35
+ height: Math.round(Dimensions.get("window").height * PixelRatio.get()),
36
+ };
37
+ };
38
+
39
+ // Get browser detection script
40
+ export const getBrowserAndOSInfoScript = (): string => {
41
+ return `
42
+ function getOSAndBrowser() {
43
+ const userAgent = navigator.userAgent;
44
+
45
+ // OS Detection
46
+ let os = "unknown";
47
+ if (userAgent.indexOf("Win") !== -1) os = "Windows";
48
+ else if (userAgent.indexOf("Mac") !== -1) os = "MacOS";
49
+ else if (userAgent.indexOf("Linux") !== -1) os = "Linux";
50
+ else if (userAgent.indexOf("Android") !== -1) os = "Android";
51
+ else if (userAgent.indexOf("like Mac") !== -1) os = "iOS";
52
+
53
+ // Browser Detection
54
+ let browser = "unknown";
55
+ if (userAgent.indexOf("Chrome") !== -1) browser = "Chrome";
56
+ else if (userAgent.indexOf("Safari") !== -1) browser = "Safari";
57
+ else if (userAgent.indexOf("Firefox") !== -1) browser = "Firefox";
58
+ else if (userAgent.indexOf("Edge") !== -1) browser = "Edge";
59
+ else if (userAgent.indexOf("MSIE") !== -1 || userAgent.indexOf("Trident/") !== -1) browser = "IE";
60
+
61
+ window.ReactNativeWebView.postMessage(JSON.stringify({
62
+ type: 'SYSTEM_INFO',
63
+ data: { os, browser }
64
+ }));
65
+ }
66
+ getOSAndBrowser();
67
+ true;
68
+ `;
69
+ };
70
+
71
+ // Get complete system information
72
+ export const getSystemInfo = (webViewSystemInfo: {
73
+ os: string;
74
+ browser: string;
75
+ }): SystemInfo => {
76
+ return {
77
+ platform: Platform.OS,
78
+ os: webViewSystemInfo.os || Platform.OS,
79
+ browser: webViewSystemInfo.browser || "WebView",
80
+ SDK_VERSION,
81
+ device: getDeviceType(),
82
+ screen_size: getScreenSize(),
83
+ };
84
+ };
@@ -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 const SDK_VERSION = '2.0.16-staging.2';