@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.
@@ -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
- const url = new URL(window.location.href);
17
- const params = Array.from(url.searchParams.entries())
18
- .filter(([key, value]) => key !== 'context')
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
- const urlContext = url.searchParams.get('context');
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 baseUrl = session._hubtype_api || 'https://api.hubtype.com';
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: session.user.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":"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"}
1
+ {"version":3,"file":"webview-app.js","sourceRoot":"","sources":["../../src/webview-app.tsx"],"names":[],"mappings":"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"}
@@ -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
- const url = new URL(window.location.href);
14
- const params = Array.from(url.searchParams.entries())
15
- .filter(([key, value]) => key !== 'context')
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
- const urlContext = url.searchParams.get('context');
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 baseUrl = session._hubtype_api || 'https://api.hubtype.com';
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: session.user.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,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAuB,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,GAAI,SAAQ,KAAK,CAAC,SAAS;IAC/B,YAAY,KAAK;QACf,KAAK,CAAC,KAAK,CAAC,CAAA;QACZ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC1B,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACd,OAAO,CAAC,CAAA;QACV,CAAC,EAAE,EAAE,CAAC,CAAA;QACR,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IAClC,CAAC;IAEK,KAAK,CAAC,OAA6B;;YACvC,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;YAE9C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE;gBACjB,OAAO,GAAG,mBAAmB,OAAO,CAAC,IAAI,EAAE,CAAA;aAC5C;YAED,IAAI,OAAO,EAAE;gBACX,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;oBACnB,OAAO,GAAG,GAAG,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAA;iBAC7D;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;gBAClC,IAAI;oBACF,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAI,yBAAyB,CAAA;oBACjE,MAAM,GAAG,GAAG,GAAG,OAAO,YAAY,OAAO,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAA;oBACjE,gEAAgE;oBAChE,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAA;oBAC3D,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;iBAC5B;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;iBACf;aACF;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;YAC5C,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;gBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAA;gBACrE,QAAQ,CAAC,IAAI,GAAG,gBAAgB,GAAG,YAAY,CAAA;aAChD;YACD,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;gBAClC,QAAQ,CAAC,IAAI,GAAG,eAAe,GAAG,KAAK,CAAA;aACxC;YACD,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE;gBAC/B,QAAQ,CAAC,IAAI,GAAG,iCAAiC,GAAG,KAAK,CAAA;aAC1D;YACD,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE;gBACjC,QAAQ,CAAC,IAAI;oBACX,oDAAoD,GAAG,KAAK,CAAA;aAC/D;YACD,IAAI,QAAQ,KAAK,QAAQ,CAAC,SAAS,EAAE;gBACnC,MAAM,CAAC,KAAK,EAAE,CAAA;aACf;YACD,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;gBAClC,IAAI;oBACF,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAC5C,SAAS,OAAO,KAAI,CAAC,EACrB,SAAS,KAAK,CAAC,GAAG;wBAChB,MAAM,CAAC,KAAK,EAAE,CAAA;oBAChB,CAAC,CACF,CAAA;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,CAAC,KAAK,EAAE,CAAA;iBACf;aACF;YACD,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE;gBACjC,IAAI;oBACF,MAAM,MAAM,CAAC,WAAW,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAA;iBACrD;gBAAC,OAAO,CAAC,EAAE,GAAE;aACf;QACH,CAAC;KAAA;IAED,MAAM;QACJ,MAAM,qBAAqB,GAAG;YAC5B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE;YACjC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE;YAC/B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACpC,CAAA;QAED,OAAO,CACL,KAAC,qBAAqB,CAAC,QAAQ,kBAAC,KAAK,EAAE,qBAAqB,gBACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CACvC,KAAC,KAAK,IAAS,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,IAA/C,CAAC,CAAkD,CAChE,CAAC,IAC6B,CAClC,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IACrB,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,IAAI;QACT,MAAM,SAAS,GAAG,CAChB,KAAC,aAAa,cACZ,KAAC,GAAG,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,GACzC,CACjB,CAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAA;QACtB,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;QACvC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC7B,CAAC;CACF"}
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.35.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.35.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",
@@ -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
- const url = new URL(window.location.href)
14
- const params = Array.from(url.searchParams.entries())
15
- .filter(([key, value]) => key !== 'context')
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
- const urlContext = url.searchParams.get('context')
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 baseUrl = session._hubtype_api || 'https://api.hubtype.com'
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: session.user.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)