@robylon/react-native-sdk 2.0.19-staging.0 → 2.0.19-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.
- package/lib/commonjs/ChatbotWebview.js +1 -1
- package/lib/commonjs/ChatbotWebview.js.map +1 -1
- package/lib/commonjs/Chatbotsdk.js +75 -1
- package/lib/commonjs/Chatbotsdk.js.map +1 -1
- package/lib/commonjs/config.js +1 -1
- package/lib/commonjs/config.js.map +1 -1
- package/lib/commonjs/constants/errorConstants.js +1 -1
- package/lib/commonjs/constants/errorConstants.js.map +1 -1
- package/lib/commonjs/constants.js +1 -1
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/hooks/useChatbotEvents.js +1 -1
- package/lib/commonjs/hooks/useChatbotEvents.js.map +1 -1
- package/lib/commonjs/openChatbot.js +1 -1
- package/lib/commonjs/openChatbot.js.map +1 -1
- package/lib/commonjs/services/ErrorTrackingService.js +1 -1
- package/lib/commonjs/services/ErrorTrackingService.js.map +1 -1
- package/lib/commonjs/utils/debugConfig.js +26 -1
- package/lib/commonjs/utils/debugConfig.js.map +1 -1
- package/lib/commonjs/utils/systemInfo.js +28 -1
- package/lib/commonjs/utils/systemInfo.js.map +1 -1
- package/lib/commonjs/utils/webViewStorage.js +33 -1
- package/lib/commonjs/utils/webViewStorage.js.map +1 -1
- package/lib/module/ChatbotWebview.js +1 -1
- package/lib/module/ChatbotWebview.js.map +1 -1
- package/lib/module/Chatbotsdk.js +75 -1
- package/lib/module/Chatbotsdk.js.map +1 -1
- package/lib/module/config.js +1 -1
- package/lib/module/config.js.map +1 -1
- package/lib/module/constants/errorConstants.js +1 -1
- package/lib/module/constants/errorConstants.js.map +1 -1
- package/lib/module/constants.js +1 -1
- package/lib/module/constants.js.map +1 -1
- package/lib/module/hooks/useChatbotEvents.js +1 -1
- package/lib/module/hooks/useChatbotEvents.js.map +1 -1
- package/lib/module/openChatbot.js +1 -1
- package/lib/module/services/ErrorTrackingService.js +1 -1
- package/lib/module/services/ErrorTrackingService.js.map +1 -1
- package/lib/module/utils/debugConfig.js +26 -1
- package/lib/module/utils/debugConfig.js.map +1 -1
- package/lib/module/utils/systemInfo.js +28 -1
- package/lib/module/utils/systemInfo.js.map +1 -1
- package/lib/module/utils/webViewStorage.js +33 -1
- package/lib/module/utils/webViewStorage.js.map +1 -1
- package/package.json +5 -4
- package/scripts/update-version.js +15 -0
- package/src/ChatbotWebview.tsx +44 -0
- package/src/Chatbotsdk.tsx +679 -0
- package/src/FloatingButton.tsx +74 -0
- package/src/LoadingIndicator.tsx +11 -0
- package/src/Toast.tsx +65 -0
- package/src/components/DebugButton.tsx +46 -0
- package/src/components/ErrorBoundary.tsx +38 -0
- package/src/config.ts +4 -0
- package/src/constants/errorConstants.ts +21 -0
- package/src/constants.ts +4 -0
- package/src/global.d.ts +11 -0
- package/src/hooks/useChatbotEvents.ts +93 -0
- package/src/index.tsx +10 -0
- package/src/openChatbot.ts +11 -0
- package/src/openChatbot.tsx +0 -0
- package/src/services/ErrorTrackingService.ts +217 -0
- package/src/types/events.ts +25 -0
- package/src/types/react-native-flipper-performance-plugin.d.ts +3 -0
- package/src/types/react-native-globals.d.ts +10 -0
- package/src/utils/cookieUtils.ts +7 -0
- package/src/utils/debugConfig.ts +56 -0
- package/src/utils/debugMenu.ts +14 -0
- package/src/utils/errorHandler.ts +58 -0
- package/src/utils/logger.ts +14 -0
- package/src/utils/systemInfo.ts +84 -0
- package/src/utils/webViewStorage.ts +62 -0
- package/src/version.ts +2 -0
|
@@ -1,2 +1,29 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.getSystemInfo=exports.getBrowserAndOSInfoScript=void 0;var _reactNative=require("react-native");var _version=require("../version");var getDeviceType=function getDeviceType(){var _Dimensions$get=_reactNative.Dimensions.get("window"),width=_Dimensions$get.width,height=_Dimensions$get.height;var aspectRatio=height/width;if(_reactNative.Platform.OS==="ios"){return _reactNative.Platform.isPad?"iPad":"iPhone";}else if(_reactNative.Platform.OS==="android"){return aspectRatio<1.6?"Android Tablet":"Android Phone";}return"Desktop";};var getScreenSize=function getScreenSize(){return{width:Math.round(_reactNative.Dimensions.get("window").width*_reactNative.PixelRatio.get()),height:Math.round(_reactNative.Dimensions.get("window").height*_reactNative.PixelRatio.get())};};var getBrowserAndOSInfoScript=exports.getBrowserAndOSInfoScript=function getBrowserAndOSInfoScript(){return
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.getSystemInfo=exports.getBrowserAndOSInfoScript=void 0;var _reactNative=require("react-native");var _version=require("../version");var getDeviceType=function getDeviceType(){var _Dimensions$get=_reactNative.Dimensions.get("window"),width=_Dimensions$get.width,height=_Dimensions$get.height;var aspectRatio=height/width;if(_reactNative.Platform.OS==="ios"){return _reactNative.Platform.isPad?"iPad":"iPhone";}else if(_reactNative.Platform.OS==="android"){return aspectRatio<1.6?"Android Tablet":"Android Phone";}return"Desktop";};var getScreenSize=function getScreenSize(){return{width:Math.round(_reactNative.Dimensions.get("window").width*_reactNative.PixelRatio.get()),height:Math.round(_reactNative.Dimensions.get("window").height*_reactNative.PixelRatio.get())};};var getBrowserAndOSInfoScript=exports.getBrowserAndOSInfoScript=function getBrowserAndOSInfoScript(){return`
|
|
2
|
+
function getOSAndBrowser() {
|
|
3
|
+
const userAgent = navigator.userAgent;
|
|
4
|
+
|
|
5
|
+
// OS Detection
|
|
6
|
+
let os = "unknown";
|
|
7
|
+
if (userAgent.indexOf("Win") !== -1) os = "Windows";
|
|
8
|
+
else if (userAgent.indexOf("Mac") !== -1) os = "MacOS";
|
|
9
|
+
else if (userAgent.indexOf("Linux") !== -1) os = "Linux";
|
|
10
|
+
else if (userAgent.indexOf("Android") !== -1) os = "Android";
|
|
11
|
+
else if (userAgent.indexOf("like Mac") !== -1) os = "iOS";
|
|
12
|
+
|
|
13
|
+
// Browser Detection
|
|
14
|
+
let browser = "unknown";
|
|
15
|
+
if (userAgent.indexOf("Chrome") !== -1) browser = "Chrome";
|
|
16
|
+
else if (userAgent.indexOf("Safari") !== -1) browser = "Safari";
|
|
17
|
+
else if (userAgent.indexOf("Firefox") !== -1) browser = "Firefox";
|
|
18
|
+
else if (userAgent.indexOf("Edge") !== -1) browser = "Edge";
|
|
19
|
+
else if (userAgent.indexOf("MSIE") !== -1 || userAgent.indexOf("Trident/") !== -1) browser = "IE";
|
|
20
|
+
|
|
21
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
22
|
+
type: 'SYSTEM_INFO',
|
|
23
|
+
data: { os, browser }
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
getOSAndBrowser();
|
|
27
|
+
true;
|
|
28
|
+
`;};var getSystemInfo=exports.getSystemInfo=function getSystemInfo(webViewSystemInfo){return{platform:_reactNative.Platform.OS,os:webViewSystemInfo.os||_reactNative.Platform.OS,browser:webViewSystemInfo.browser||"WebView",SDK_VERSION:_version.SDK_VERSION,device:getDeviceType(),screen_size:getScreenSize()};};
|
|
2
29
|
//# sourceMappingURL=systemInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_version","getDeviceType","_Dimensions$get","Dimensions","get","width","height","aspectRatio","Platform","OS","isPad","getScreenSize","Math","round","PixelRatio","getBrowserAndOSInfoScript","exports","getSystemInfo","webViewSystemInfo","platform","os","browser","SDK_VERSION","device","screen_size"],"sourceRoot":"../../../src","sources":["utils/systemInfo.ts"],"mappings":"wHAAA,IAAAA,YAAA,CAAAC,OAAA,iBACA,IAAAC,QAAA,CAAAD,OAAA,eAiBA,GAAM,CAAAE,aAAa,CAAG,QAAhB,CAAAA,aAAaA,CAAA,CAAiB,CAClC,IAAAC,eAAA,CAA0BC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAA1CC,KAAK,CAAAH,eAAA,CAALG,KAAK,CAAEC,MAAM,CAAAJ,eAAA,CAANI,MAAM,CACrB,GAAM,CAAAC,WAAW,CAAGD,MAAM,CAAGD,KAAK,CAElC,GAAIG,qBAAQ,CAACC,EAAE,GAAK,KAAK,CAAE,CACzB,MAAO,CAAAD,qBAAQ,CAACE,KAAK,CAAG,MAAM,CAAG,QAAQ,CAC3C,CAAC,IAAM,IAAIF,qBAAQ,CAACC,EAAE,GAAK,SAAS,CAAE,CACpC,MAAO,CAAAF,WAAW,CAAG,GAAG,CAAG,gBAAgB,CAAG,eAAe,CAC/D,CACA,MAAO,SAAS,CAClB,CAAC,CAGD,GAAM,CAAAI,aAAa,CAAG,QAAhB,CAAAA,aAAaA,CAAA,CAAqB,CACtC,MAAO,CACLN,KAAK,CAAEO,IAAI,CAACC,KAAK,CAACV,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK,CAAGS,uBAAU,CAACV,GAAG,CAAC,CAAC,CAAC,CACpEE,MAAM,CAAEM,IAAI,CAACC,KAAK,CAACV,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACE,MAAM,CAAGQ,uBAAU,CAACV,GAAG,CAAC,CAAC,CACvE,CAAC,CACH,CAAC,CAGM,GAAM,CAAAW,yBAAyB,CAAAC,OAAA,CAAAD,yBAAA,CAAG,QAA5B,CAAAA,yBAAyBA,CAAA,CAAiB,CACrD,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_version","getDeviceType","_Dimensions$get","Dimensions","get","width","height","aspectRatio","Platform","OS","isPad","getScreenSize","Math","round","PixelRatio","getBrowserAndOSInfoScript","exports","getSystemInfo","webViewSystemInfo","platform","os","browser","SDK_VERSION","device","screen_size"],"sourceRoot":"../../../src","sources":["utils/systemInfo.ts"],"mappings":"wHAAA,IAAAA,YAAA,CAAAC,OAAA,iBACA,IAAAC,QAAA,CAAAD,OAAA,eAiBA,GAAM,CAAAE,aAAa,CAAG,QAAhB,CAAAA,aAAaA,CAAA,CAAiB,CAClC,IAAAC,eAAA,CAA0BC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAA1CC,KAAK,CAAAH,eAAA,CAALG,KAAK,CAAEC,MAAM,CAAAJ,eAAA,CAANI,MAAM,CACrB,GAAM,CAAAC,WAAW,CAAGD,MAAM,CAAGD,KAAK,CAElC,GAAIG,qBAAQ,CAACC,EAAE,GAAK,KAAK,CAAE,CACzB,MAAO,CAAAD,qBAAQ,CAACE,KAAK,CAAG,MAAM,CAAG,QAAQ,CAC3C,CAAC,IAAM,IAAIF,qBAAQ,CAACC,EAAE,GAAK,SAAS,CAAE,CACpC,MAAO,CAAAF,WAAW,CAAG,GAAG,CAAG,gBAAgB,CAAG,eAAe,CAC/D,CACA,MAAO,SAAS,CAClB,CAAC,CAGD,GAAM,CAAAI,aAAa,CAAG,QAAhB,CAAAA,aAAaA,CAAA,CAAqB,CACtC,MAAO,CACLN,KAAK,CAAEO,IAAI,CAACC,KAAK,CAACV,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK,CAAGS,uBAAU,CAACV,GAAG,CAAC,CAAC,CAAC,CACpEE,MAAM,CAAEM,IAAI,CAACC,KAAK,CAACV,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACE,MAAM,CAAGQ,uBAAU,CAACV,GAAG,CAAC,CAAC,CACvE,CAAC,CACH,CAAC,CAGM,GAAM,CAAAW,yBAAyB,CAAAC,OAAA,CAAAD,yBAAA,CAAG,QAA5B,CAAAA,yBAAyBA,CAAA,CAAiB,CACrD,MAAO;AACT;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,GAAG,CACH,CAAC,CAGM,GAAM,CAAAE,aAAa,CAAAD,OAAA,CAAAC,aAAA,CAAG,QAAhB,CAAAA,aAAaA,CAAIC,iBAG7B,CAAiB,CAChB,MAAO,CACLC,QAAQ,CAAEX,qBAAQ,CAACC,EAAE,CACrBW,EAAE,CAAEF,iBAAiB,CAACE,EAAE,EAAIZ,qBAAQ,CAACC,EAAE,CACvCY,OAAO,CAAEH,iBAAiB,CAACG,OAAO,EAAI,SAAS,CAC/CC,WAAW,CAAXA,oBAAW,CACXC,MAAM,CAAEtB,aAAa,CAAC,CAAC,CACvBuB,WAAW,CAAEb,aAAa,CAAC,CAC7B,CAAC,CACH,CAAC","ignoreList":[]}
|
|
@@ -1,2 +1,34 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.getStorageScript=exports.createStorageMessage=exports.StorageMessageType=void 0;var StorageMessageType=exports.StorageMessageType=function(StorageMessageType){StorageMessageType["GET_STORAGE"]="GET_STORAGE";StorageMessageType["SET_STORAGE"]="SET_STORAGE";StorageMessageType["STORAGE_READY"]="STORAGE_READY";StorageMessageType["STORAGE_ERROR"]="STORAGE_ERROR";StorageMessageType["STORAGE_RESPONSE"]="STORAGE_RESPONSE";return StorageMessageType;}({});var getStorageScript=exports.getStorageScript=function getStorageScript(){return
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.getStorageScript=exports.createStorageMessage=exports.StorageMessageType=void 0;var StorageMessageType=exports.StorageMessageType=function(StorageMessageType){StorageMessageType["GET_STORAGE"]="GET_STORAGE";StorageMessageType["SET_STORAGE"]="SET_STORAGE";StorageMessageType["STORAGE_READY"]="STORAGE_READY";StorageMessageType["STORAGE_ERROR"]="STORAGE_ERROR";StorageMessageType["STORAGE_RESPONSE"]="STORAGE_RESPONSE";return StorageMessageType;}({});var getStorageScript=exports.getStorageScript=function getStorageScript(){return`
|
|
2
|
+
window.handleStorageOperation = function(message) {
|
|
3
|
+
try {
|
|
4
|
+
switch(message.type) {
|
|
5
|
+
case '${StorageMessageType.GET_STORAGE}':
|
|
6
|
+
const value = localStorage.getItem(message.key);
|
|
7
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
8
|
+
type: '${StorageMessageType.STORAGE_RESPONSE}',
|
|
9
|
+
key: message.key,
|
|
10
|
+
value: value
|
|
11
|
+
}));
|
|
12
|
+
break;
|
|
13
|
+
case '${StorageMessageType.SET_STORAGE}':
|
|
14
|
+
localStorage.setItem(message.key, message.value);
|
|
15
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
16
|
+
type: '${StorageMessageType.STORAGE_RESPONSE}',
|
|
17
|
+
key: message.key,
|
|
18
|
+
value: message.value
|
|
19
|
+
}));
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
} catch (error) {
|
|
23
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
24
|
+
type: '${StorageMessageType.STORAGE_ERROR}',
|
|
25
|
+
error: error.message
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
31
|
+
type: '${StorageMessageType.STORAGE_READY}'
|
|
32
|
+
}));
|
|
33
|
+
`;};var createStorageMessage=exports.createStorageMessage=function createStorageMessage(type,key,value){return`window.handleStorageOperation(${JSON.stringify({type:type,key:key,value:value})});`;};
|
|
2
34
|
//# sourceMappingURL=webViewStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StorageMessageType","exports","getStorageScript","GET_STORAGE","STORAGE_RESPONSE","SET_STORAGE","STORAGE_ERROR","STORAGE_READY","createStorageMessage","type","key","value","JSON","stringify"],"sourceRoot":"../../../src","sources":["utils/webViewStorage.ts"],"mappings":"oJAEY,CAAAA,kBAAkB,CAAAC,OAAA,CAAAD,kBAAA,UAAlBA,kBAAkB,EAAlBA,kBAAkB,8BAAlBA,kBAAkB,8BAAlBA,kBAAkB,kCAAlBA,kBAAkB,kCAAlBA,kBAAkB,8CAAlB,CAAAA,kBAAkB,OAevB,GAAM,CAAAE,gBAAgB,CAAAD,OAAA,CAAAC,gBAAA,CAAG,QAAnB,CAAAA,gBAAgBA,CAAA,
|
|
1
|
+
{"version":3,"names":["StorageMessageType","exports","getStorageScript","GET_STORAGE","STORAGE_RESPONSE","SET_STORAGE","STORAGE_ERROR","STORAGE_READY","createStorageMessage","type","key","value","JSON","stringify"],"sourceRoot":"../../../src","sources":["utils/webViewStorage.ts"],"mappings":"oJAEY,CAAAA,kBAAkB,CAAAC,OAAA,CAAAD,kBAAA,UAAlBA,kBAAkB,EAAlBA,kBAAkB,8BAAlBA,kBAAkB,8BAAlBA,kBAAkB,kCAAlBA,kBAAkB,kCAAlBA,kBAAkB,8CAAlB,CAAAA,kBAAkB,OAevB,GAAM,CAAAE,gBAAgB,CAAAD,OAAA,CAAAC,gBAAA,CAAG,QAAnB,CAAAA,gBAAgBA,CAAA,QAAS;AACtC;AACA;AACA;AACA,gBAAgBF,kBAAkB,CAACG,WAAW;AAC9C;AACA;AACA,qBAAqBH,kBAAkB,CAACI,gBAAgB;AACxD;AACA;AACA;AACA;AACA,gBAAgBJ,kBAAkB,CAACK,WAAW;AAC9C;AACA;AACA,qBAAqBL,kBAAkB,CAACI,gBAAgB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiBJ,kBAAkB,CAACM,aAAa;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,aAAaN,kBAAkB,CAACO,aAAa;AAC7C;AACA,CAAC,GAEM,GAAM,CAAAC,oBAAoB,CAAAP,OAAA,CAAAO,oBAAA,CAAG,QAAvB,CAAAA,oBAAoBA,CAC/BC,IAAwB,CACxBC,GAAY,CACZC,KAAc,CACH,CACX,MAAO,iCAAiCC,IAAI,CAACC,SAAS,CAAC,CACrDJ,IAAI,CAAJA,IAAI,CACJC,GAAG,CAAHA,GAAG,CACHC,KAAK,CAALA,KACF,CAAC,CAAC,IAAI,CACR,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robylon/react-native-sdk",
|
|
3
|
-
"version": "2.0.19-staging.
|
|
3
|
+
"version": "2.0.19-staging.3",
|
|
4
4
|
"description": "React Native SDK for Robylon",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"source": "src/index.tsx",
|
|
10
10
|
"readme": "README.md",
|
|
11
11
|
"scripts": {
|
|
12
|
-
"prebuild": "node scripts/
|
|
12
|
+
"prebuild": "node scripts/update-version.js",
|
|
13
13
|
"build": "bob build",
|
|
14
14
|
"clean": "rimraf lib",
|
|
15
15
|
"prebuild:dev": "cp .npmignore.development .npmignore",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"version:staging": "npm version prerelease --preid staging",
|
|
23
23
|
"version:production": "npm version patch",
|
|
24
24
|
"publish:dev": "npm run clean && npm run prebuild:dev && npm run version:dev && npm run build:dev && npm publish --tag dev",
|
|
25
|
-
"publish:staging": "node scripts/validate-publish.js staging && npm version $(node scripts/get-next-version.js staging) && npm publish --tag staging",
|
|
25
|
+
"publish:staging": "node scripts/validate-publish.js staging && npm version $(node scripts/get-next-version.js staging) && npm run build:staging && npm publish --tag staging",
|
|
26
26
|
"publish:production": "node scripts/validate-publish.js production && npm version $(node scripts/get-next-version.js production) && npm publish",
|
|
27
27
|
"publish:hotfix": "node scripts/validate-publish.js hotfix && npm version $(node scripts/get-next-version.js hotfix) && npm publish --tag hotfix",
|
|
28
28
|
"postinstall": "node scripts/setup-git-hooks.js",
|
|
@@ -47,7 +47,8 @@
|
|
|
47
47
|
"react-native-builder-bob": "^0.20.0",
|
|
48
48
|
"rimraf": "^6.0.1",
|
|
49
49
|
"semver": "^7.5.4",
|
|
50
|
-
"typescript": "^4.5.2"
|
|
50
|
+
"typescript": "^4.5.2",
|
|
51
|
+
"metro-react-native-babel-preset": "^0.76.5"
|
|
51
52
|
},
|
|
52
53
|
"react-native-builder-bob": {
|
|
53
54
|
"source": "src",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
|
|
4
|
+
// Read version from package.json
|
|
5
|
+
const packageJson = require("../package.json");
|
|
6
|
+
const version = packageJson.version;
|
|
7
|
+
|
|
8
|
+
// Create version.ts content
|
|
9
|
+
const content = `// This file is auto-generated. Do not modify it manually.
|
|
10
|
+
export const SDK_VERSION = '${version}';\n`;
|
|
11
|
+
|
|
12
|
+
// Write to version.ts
|
|
13
|
+
fs.writeFileSync(path.join(__dirname, "../src/version.ts"), content);
|
|
14
|
+
|
|
15
|
+
console.log(`Updated SDK_VERSION to ${version}`);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// File: src/ChatbotWebview.tsx
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import { View } from "react-native";
|
|
4
|
+
import { WebView } from "react-native-webview";
|
|
5
|
+
import { BASE_CHATBOT_URL } from "./constants";
|
|
6
|
+
import LoadingIndicator from "./LoadingIndicator";
|
|
7
|
+
|
|
8
|
+
interface ChatbotWebviewProps {
|
|
9
|
+
chatbotId: string;
|
|
10
|
+
additionalParams?: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const constructUrl = (
|
|
14
|
+
chatbotId: string,
|
|
15
|
+
additionalParams: Record<string, string> = {}
|
|
16
|
+
): string => {
|
|
17
|
+
const params = new URLSearchParams({ id: chatbotId, ...additionalParams });
|
|
18
|
+
return `${BASE_CHATBOT_URL}?${params.toString()}`;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const ChatbotWebview: React.FC<ChatbotWebviewProps> = ({
|
|
22
|
+
chatbotId,
|
|
23
|
+
additionalParams,
|
|
24
|
+
}) => {
|
|
25
|
+
const [url, setUrl] = useState<string>("");
|
|
26
|
+
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
setUrl(constructUrl(chatbotId, additionalParams));
|
|
29
|
+
}, [chatbotId, additionalParams]);
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<View style={{ flex: 1 }}>
|
|
33
|
+
{url ? (
|
|
34
|
+
<WebView
|
|
35
|
+
source={{ uri: url }}
|
|
36
|
+
startInLoadingState={true}
|
|
37
|
+
renderLoading={() => <LoadingIndicator />}
|
|
38
|
+
/>
|
|
39
|
+
) : (
|
|
40
|
+
<LoadingIndicator />
|
|
41
|
+
)}
|
|
42
|
+
</View>
|
|
43
|
+
);
|
|
44
|
+
};
|