@botonic/react 0.35.0 → 0.36.0-alpha.1
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/cjs/webview-app.js +49 -9
- package/lib/cjs/webview-app.js.map +1 -1
- package/lib/esm/webview-app.js +49 -9
- package/lib/esm/webview-app.js.map +1 -1
- package/package.json +2 -2
- package/src/webview-app.tsx +54 -10
package/lib/cjs/webview-app.js
CHANGED
|
@@ -10,19 +10,60 @@ const react_1 = tslib_1.__importDefault(require("react"));
|
|
|
10
10
|
const client_1 = require("react-dom/client");
|
|
11
11
|
const react_router_dom_1 = require("react-router-dom");
|
|
12
12
|
const contexts_1 = require("./contexts");
|
|
13
|
+
var WebviewUrlParams;
|
|
14
|
+
(function (WebviewUrlParams) {
|
|
15
|
+
WebviewUrlParams["Context"] = "context";
|
|
16
|
+
WebviewUrlParams["BotId"] = "bot_id";
|
|
17
|
+
WebviewUrlParams["UserId"] = "user_id";
|
|
18
|
+
WebviewUrlParams["HubtypeApiUrl"] = "hubtype_api_url";
|
|
19
|
+
})(WebviewUrlParams || (WebviewUrlParams = {}));
|
|
13
20
|
class App extends react_1.default.Component {
|
|
14
21
|
constructor(props) {
|
|
15
22
|
super(props);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
this.url = new URL(window.location.href);
|
|
24
|
+
this.botId = this.url.searchParams.get(WebviewUrlParams.BotId);
|
|
25
|
+
this.userId = this.url.searchParams.get(WebviewUrlParams.UserId);
|
|
26
|
+
this.hubtypeApiUrl =
|
|
27
|
+
this.url.searchParams.get(WebviewUrlParams.HubtypeApiUrl) ||
|
|
28
|
+
'https://api.hubtype.com';
|
|
29
|
+
this.state = {
|
|
30
|
+
session: null,
|
|
31
|
+
params: {},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
componentDidMount() {
|
|
35
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
try {
|
|
37
|
+
const session = yield this.getSessionFromUrl();
|
|
38
|
+
const params = this.getParamsFromUrl();
|
|
39
|
+
this.setState({ session, params });
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error('Error getting bot session context from url', error);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
getSessionFromUrl() {
|
|
47
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const url = `${this.hubtypeApiUrl}/external/v2/conversational_apps/${this.botId}/users/${this.userId}/context/`;
|
|
49
|
+
const response = yield axios_1.default.get(url);
|
|
50
|
+
return response.data;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
getParamsFromUrl() {
|
|
54
|
+
const keysToExclude = [
|
|
55
|
+
WebviewUrlParams.Context,
|
|
56
|
+
WebviewUrlParams.BotId,
|
|
57
|
+
WebviewUrlParams.UserId,
|
|
58
|
+
WebviewUrlParams.HubtypeApiUrl,
|
|
59
|
+
];
|
|
60
|
+
const params = Array.from(this.url.searchParams.entries())
|
|
61
|
+
.filter(([key, _]) => !keysToExclude.includes(key))
|
|
19
62
|
.reduce((o, [key, value]) => {
|
|
20
63
|
o[key] = value;
|
|
21
64
|
return o;
|
|
22
65
|
}, {});
|
|
23
|
-
|
|
24
|
-
const session = JSON.parse(urlContext || '{}');
|
|
25
|
-
this.state = { session, params };
|
|
66
|
+
return params;
|
|
26
67
|
}
|
|
27
68
|
close(options) {
|
|
28
69
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -36,10 +77,9 @@ class App extends react_1.default.Component {
|
|
|
36
77
|
}
|
|
37
78
|
const session = this.state.session;
|
|
38
79
|
try {
|
|
39
|
-
const
|
|
40
|
-
const url = `${baseUrl}/v1/bots/${session.bot.id}/send_postback/`;
|
|
80
|
+
const url = `${this.hubtypeApiUrl}/v1/bots/${this.botId}/send_postback/`;
|
|
41
81
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
42
|
-
const data = { payload: payload, chat_id:
|
|
82
|
+
const data = { payload: payload, chat_id: this.userId };
|
|
43
83
|
yield axios_1.default.post(url, data);
|
|
44
84
|
}
|
|
45
85
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview-app.js","sourceRoot":"","sources":["../../src/webview-app.tsx"],"names":[],"mappings":";;;;;AAAA,cAAc;AACd,
|
|
1
|
+
{"version":3,"file":"webview-app.js","sourceRoot":"","sources":["../../src/webview-app.tsx"],"names":[],"mappings":"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"}
|
package/lib/esm/webview-app.js
CHANGED
|
@@ -7,19 +7,60 @@ import React from 'react';
|
|
|
7
7
|
import { createRoot } from 'react-dom/client';
|
|
8
8
|
import { BrowserRouter, Route } from 'react-router-dom';
|
|
9
9
|
import { WebviewRequestContext } from './contexts';
|
|
10
|
+
var WebviewUrlParams;
|
|
11
|
+
(function (WebviewUrlParams) {
|
|
12
|
+
WebviewUrlParams["Context"] = "context";
|
|
13
|
+
WebviewUrlParams["BotId"] = "bot_id";
|
|
14
|
+
WebviewUrlParams["UserId"] = "user_id";
|
|
15
|
+
WebviewUrlParams["HubtypeApiUrl"] = "hubtype_api_url";
|
|
16
|
+
})(WebviewUrlParams || (WebviewUrlParams = {}));
|
|
10
17
|
class App extends React.Component {
|
|
11
18
|
constructor(props) {
|
|
12
19
|
super(props);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
this.url = new URL(window.location.href);
|
|
21
|
+
this.botId = this.url.searchParams.get(WebviewUrlParams.BotId);
|
|
22
|
+
this.userId = this.url.searchParams.get(WebviewUrlParams.UserId);
|
|
23
|
+
this.hubtypeApiUrl =
|
|
24
|
+
this.url.searchParams.get(WebviewUrlParams.HubtypeApiUrl) ||
|
|
25
|
+
'https://api.hubtype.com';
|
|
26
|
+
this.state = {
|
|
27
|
+
session: null,
|
|
28
|
+
params: {},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
componentDidMount() {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
try {
|
|
34
|
+
const session = yield this.getSessionFromUrl();
|
|
35
|
+
const params = this.getParamsFromUrl();
|
|
36
|
+
this.setState({ session, params });
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error('Error getting bot session context from url', error);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
getSessionFromUrl() {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const url = `${this.hubtypeApiUrl}/external/v2/conversational_apps/${this.botId}/users/${this.userId}/context/`;
|
|
46
|
+
const response = yield axios.get(url);
|
|
47
|
+
return response.data;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
getParamsFromUrl() {
|
|
51
|
+
const keysToExclude = [
|
|
52
|
+
WebviewUrlParams.Context,
|
|
53
|
+
WebviewUrlParams.BotId,
|
|
54
|
+
WebviewUrlParams.UserId,
|
|
55
|
+
WebviewUrlParams.HubtypeApiUrl,
|
|
56
|
+
];
|
|
57
|
+
const params = Array.from(this.url.searchParams.entries())
|
|
58
|
+
.filter(([key, _]) => !keysToExclude.includes(key))
|
|
16
59
|
.reduce((o, [key, value]) => {
|
|
17
60
|
o[key] = value;
|
|
18
61
|
return o;
|
|
19
62
|
}, {});
|
|
20
|
-
|
|
21
|
-
const session = JSON.parse(urlContext || '{}');
|
|
22
|
-
this.state = { session, params };
|
|
63
|
+
return params;
|
|
23
64
|
}
|
|
24
65
|
close(options) {
|
|
25
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -33,10 +74,9 @@ class App extends React.Component {
|
|
|
33
74
|
}
|
|
34
75
|
const session = this.state.session;
|
|
35
76
|
try {
|
|
36
|
-
const
|
|
37
|
-
const url = `${baseUrl}/v1/bots/${session.bot.id}/send_postback/`;
|
|
77
|
+
const url = `${this.hubtypeApiUrl}/v1/bots/${this.botId}/send_postback/`;
|
|
38
78
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
39
|
-
const data = { payload: payload, chat_id:
|
|
79
|
+
const data = { payload: payload, chat_id: this.userId };
|
|
40
80
|
yield axios.post(url, data);
|
|
41
81
|
}
|
|
42
82
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview-app.js","sourceRoot":"","sources":["../../src/webview-app.tsx"],"names":[],"mappings":";;AAAA,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"webview-app.js","sourceRoot":"","sources":["../../src/webview-app.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0-alpha.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build Chatbots using React",
|
|
6
6
|
"main": "./lib/cjs",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"lint_core": "../../node_modules/.bin/eslint_d --cache --quiet '.*.js' '*.js' 'src/**/*.js*' --fix"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@botonic/core": "^0.
|
|
23
|
+
"@botonic/core": "^0.36.0-alpha.0",
|
|
24
24
|
"axios": "^1.9.0",
|
|
25
25
|
"emoji-picker-react": "^4.12.0",
|
|
26
26
|
"lodash.merge": "^4.6.2",
|
package/src/webview-app.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { params2queryString, PROVIDER } from '@botonic/core'
|
|
2
|
+
import { params2queryString, PROVIDER, Session } from '@botonic/core'
|
|
3
3
|
import axios from 'axios'
|
|
4
4
|
import React from 'react'
|
|
5
5
|
import { createRoot } from 'react-dom/client'
|
|
@@ -7,19 +7,64 @@ import { BrowserRouter, Route } from 'react-router-dom'
|
|
|
7
7
|
|
|
8
8
|
import { CloseWebviewOptions, WebviewRequestContext } from './contexts'
|
|
9
9
|
|
|
10
|
+
enum WebviewUrlParams {
|
|
11
|
+
Context = 'context',
|
|
12
|
+
BotId = 'bot_id',
|
|
13
|
+
UserId = 'user_id',
|
|
14
|
+
HubtypeApiUrl = 'hubtype_api_url',
|
|
15
|
+
}
|
|
16
|
+
|
|
10
17
|
class App extends React.Component {
|
|
18
|
+
private url: URL
|
|
19
|
+
private botId: string
|
|
20
|
+
private userId: string
|
|
21
|
+
private hubtypeApiUrl: string
|
|
22
|
+
private state: { session: Session; params: Record<string, string> }
|
|
23
|
+
|
|
11
24
|
constructor(props) {
|
|
12
25
|
super(props)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
26
|
+
this.url = new URL(window.location.href)
|
|
27
|
+
this.botId = this.url.searchParams.get(WebviewUrlParams.BotId)
|
|
28
|
+
this.userId = this.url.searchParams.get(WebviewUrlParams.UserId)
|
|
29
|
+
this.hubtypeApiUrl =
|
|
30
|
+
this.url.searchParams.get(WebviewUrlParams.HubtypeApiUrl) ||
|
|
31
|
+
'https://api.hubtype.com'
|
|
32
|
+
this.state = {
|
|
33
|
+
session: null,
|
|
34
|
+
params: {},
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async componentDidMount() {
|
|
39
|
+
try {
|
|
40
|
+
const session = await this.getSessionFromUrl()
|
|
41
|
+
const params = this.getParamsFromUrl()
|
|
42
|
+
this.setState({ session, params })
|
|
43
|
+
} catch (error) {
|
|
44
|
+
console.error('Error getting bot session context from url', error)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async getSessionFromUrl() {
|
|
49
|
+
const url = `${this.hubtypeApiUrl}/external/v2/conversational_apps/${this.botId}/users/${this.userId}/context/`
|
|
50
|
+
const response = await axios.get(url)
|
|
51
|
+
return response.data
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
getParamsFromUrl() {
|
|
55
|
+
const keysToExclude = [
|
|
56
|
+
WebviewUrlParams.Context,
|
|
57
|
+
WebviewUrlParams.BotId,
|
|
58
|
+
WebviewUrlParams.UserId,
|
|
59
|
+
WebviewUrlParams.HubtypeApiUrl,
|
|
60
|
+
]
|
|
61
|
+
const params = Array.from(this.url.searchParams.entries())
|
|
62
|
+
.filter(([key, _]) => !keysToExclude.includes(key))
|
|
16
63
|
.reduce((o, [key, value]) => {
|
|
17
64
|
o[key] = value
|
|
18
65
|
return o
|
|
19
66
|
}, {})
|
|
20
|
-
|
|
21
|
-
const session = JSON.parse(urlContext || '{}')
|
|
22
|
-
this.state = { session, params }
|
|
67
|
+
return params
|
|
23
68
|
}
|
|
24
69
|
|
|
25
70
|
async close(options?: CloseWebviewOptions) {
|
|
@@ -36,10 +81,9 @@ class App extends React.Component {
|
|
|
36
81
|
|
|
37
82
|
const session = this.state.session
|
|
38
83
|
try {
|
|
39
|
-
const
|
|
40
|
-
const url = `${baseUrl}/v1/bots/${session.bot.id}/send_postback/`
|
|
84
|
+
const url = `${this.hubtypeApiUrl}/v1/bots/${this.botId}/send_postback/`
|
|
41
85
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
42
|
-
const data = { payload: payload, chat_id:
|
|
86
|
+
const data = { payload: payload, chat_id: this.userId }
|
|
43
87
|
await axios.post(url, data)
|
|
44
88
|
} catch (e) {
|
|
45
89
|
console.log(e)
|