From 6d22531ccf5ebbe833d95d26c468b5059b7a3ec9 Mon Sep 17 00:00:00 2001 From: Rutger Luyckx Date: Thu, 16 Mar 2023 15:00:48 +0100 Subject: [PATCH 1/7] Add Blockbax intergration --- assets/img/channels/community/blockbax.png | Bin 0 -> 1029 bytes .../community/flows/blockbax-dark.png | Bin 0 -> 1633 bytes .../community/intro_screens/blockbax.png | Bin 0 -> 20850 bytes .../channels/ChannelConnectionDetails.jsx | 12 ++ assets/js/components/channels/ChannelNew.jsx | 3 + .../community/blockbax/BlockbaxForm.jsx | 126 ++++++++++++++++++ .../community/blockbax/BlockbaxUpdateForm.jsx | 61 +++++++++ assets/js/util/integrationInfo.js | 18 ++- lib/console/channels/channel.ex | 3 +- lib/console/community/community_channels.ex | 15 +++ .../controllers/v1/channel_controller.ex | 10 ++ 11 files changed, 246 insertions(+), 2 deletions(-) create mode 100644 assets/img/channels/community/blockbax.png create mode 100644 assets/img/channels/community/flows/blockbax-dark.png create mode 100644 assets/img/channels/community/intro_screens/blockbax.png create mode 100644 assets/js/components/channels/community/blockbax/BlockbaxForm.jsx create mode 100644 assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx diff --git a/assets/img/channels/community/blockbax.png b/assets/img/channels/community/blockbax.png new file mode 100644 index 0000000000000000000000000000000000000000..792fc04de29e1b9a52d19d7a70230c71ba63ffdf GIT binary patch literal 1029 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4rZW;-{LxVAY~lj6XL3Wu>Al3|3H#>RJiTy zNuYMYk|4j}{|pWv4oqlJ*ic}wAmD+(g@h>o4G$O?mZYF4mPoJi|Ihf2rxTh0}D_j zVnYHanEdOrroMI4lKruBm+hR&dd=Z$S$raIh`fIUbMD&1QZF_h=n9W+7tPn+z&0z9 z*Q7M!<2SzS81671?yxzZR*j;=6VXo$yIo`hWLlXa9+SH!^IPvMyw)M^tmA=n&H~3|} z+{1d!Gy0D+cbMmL(}?u9AKm#k^!+fGi?E%`_Ie9v*d8|RxK4Y$)~yGmI6%(-_c?-l z&1SLhk>dXYT1%royIS3Q`{>1{<$UaGHuIf-@c8Y$cP-lC{?Qe?Hy^Uf=@@tTO+#>bmPc+Z9p%F8;H?}v#ZJMT8dyDDy`KfpHW;NdW zS|9an^O|tUOHm0&*B@ciuKQ8fY`Q@#t5tNrKzc;_SE+q`iBB#6{a0M0y3dh2?A~Mf zs1474%y0VYqaGR&e*XU9Q_S0!ZrJw2kvrmYcrq}$v)e`W4{}{kJgU9nk*WF8k7e=Y zhjcl^c9a!PJ7)ajOGD{PQ|&czhi}U!+`UvOdrklDVf!ME*E8)_9<;h&oN`UkW^QVi zTF`!0_GyVNh}>EHHsWQ!S;8eXbxAzCOD@#RFRgI4A_l3i=P2#$@nx^>bP0l+XkKj5gj0 literal 0 HcmV?d00001 diff --git a/assets/img/channels/community/flows/blockbax-dark.png b/assets/img/channels/community/flows/blockbax-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..13201d267ea458b19670c0f3eb547e2fd97d2c29 GIT binary patch literal 1633 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4mO}jWo=(6kYX$ja(7}_cTVOdki(Mh=KbFpQ;PTXr zZqNo24qVZH3{E6Wyed$i)=M5+SY+L#|U*x9U-nu#Z{tS%&bLtt})FT|)5*Q_$ zSW`H}CMZ&sQ&?45xicrbLBF!D{&v`JqeR+R19kNB>;0coqu;-}-ar3#*L~al`*T-s zwRAgHdc`p7P*TM8$&daqHo3M{C`PDsUZ2I%ZSydyJ;9Lo;jH-yhO!rDO;0dXy*O)f zf}w8ok)Ir5mxb3>a)@~gthMA2J1wx*?jVy9OZUfr%g5NkKYD~bEYBH zM^BY)aNQtrYF_Zvh_4)C?Yn(Ll8)Zz5Zk?z|MFkveXqX!D%_XzI<~U?_ngT;Hp*20 zzaMyf1!wotj?mc&8+kUq64qH(&O0^YtmB3mvjWb#ZkRDG;;j3I8GX7B_ONuXo$RB-} z?_iRJdu#VcpigfZ$1GdJb}*@8nQk6ScZ=D37>aQeLie`%ob`I#PB{+bV|~=+#$Bb^dG0OvajHI0`2DglB`3(+R`awcemuQ%dcBc}kb}v5<~Y4l6KK9O=>qy0iM&sj`BcrlT9y zEi{TO^xq)S7w}Q?Akc3fvXWZ24+8zPdlxt^9>LMK)#$14B6s7|KFNviO>gemRmQ*K~Bt zx`jfkcXEgY3$3!`6bm*CJ?pz+Mq9vH{|zUML)QY+-7Z(J71xv^QaVJMj!t;@SS9Gr z4?(U6xBqak9*C!U@j~6giX77ltNvQVZ!`UWaJ{_!_N#UC?%&@gy5?vL4T@5@>s)MX b|8l>TvfdVT$+#6*Eiibx`njxgN@xNAoD5={ literal 0 HcmV?d00001 diff --git a/assets/img/channels/community/intro_screens/blockbax.png b/assets/img/channels/community/intro_screens/blockbax.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc73ef3026a945ca90a0f12807521e701516bdc GIT binary patch literal 20850 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 literal 0 HcmV?d00001 diff --git a/assets/js/components/channels/ChannelConnectionDetails.jsx b/assets/js/components/channels/ChannelConnectionDetails.jsx index c7a2fd5ed..334183cfc 100644 --- a/assets/js/components/channels/ChannelConnectionDetails.jsx +++ b/assets/js/components/channels/ChannelConnectionDetails.jsx @@ -15,6 +15,7 @@ import GoogleSheetForm from "./community/google_sheets/GoogleSheetUpdateForm.jsx import MicroshareForm from "./community/microshare/MicroshareUpdateForm.jsx"; import TagoForm from "./community/tago/TagoUpdateForm.jsx"; import UbidotsForm from "./community/ubidots/UbidotsUpdateForm.jsx"; +import BlockbaxForm from "./community/blockbax/BlockbaxUpdateForm"; const { Panel } = Collapse function DetailsUpdateWrapper({ handleUpdateDetailsChange, validInput, children, mobile }) { @@ -62,6 +63,17 @@ function DetailsUpdateWrapper({ handleUpdateDetailsChange, validInput, children, export default ({ channel, handleUpdateDetailsInput, handleUpdateDetailsChange, validInput, mobile}) => { switch (channel.type) { + case "blockbax": + return ( + + + + ) case "aws": return ( diff --git a/assets/js/components/channels/ChannelNew.jsx b/assets/js/components/channels/ChannelNew.jsx index 709e39c30..cc16ec1ff 100644 --- a/assets/js/components/channels/ChannelNew.jsx +++ b/assets/js/components/channels/ChannelNew.jsx @@ -27,6 +27,7 @@ import MobileLayout from "../mobile/MobileLayout"; import ArrowLeftOutlined from "@ant-design/icons/ArrowLeftOutlined"; import { CORE_INTEGRATION_TYPES, COMMUNITY_INTEGRATION_TYPES, getAllowedIntegrations } from "../../util/integrationInfo"; import { isMobile } from "../../util/constants"; +import BlockbaxForm from "./community/blockbax/BlockbaxForm.jsx"; @connect(null, mapDispatchToProps) class ChannelNew extends Component { @@ -64,6 +65,8 @@ class ChannelNew extends Component { const { type } = this.state switch (type) { + case "blockbax": + return case "cargo": return case "my_devices": diff --git a/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx b/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx new file mode 100644 index 000000000..98d51e6f5 --- /dev/null +++ b/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx @@ -0,0 +1,126 @@ +import React, { Component } from 'react'; +import { IntegrationTypeTileSimple } from "../../IntegrationTypeTileSimple"; +import { Link } from "react-router-dom"; +import ChannelNameForm from "../../default/ChannelNameForm.jsx"; +import analyticsLogger from "../../../../util/analyticsLogger"; +import { Card, Typography, Input, Button, Row, Col } from 'antd'; +const { Text } = Typography + +class BlockbaxForm extends Component { + state = { + blockbaxAccessToken: "", + blockbaxInbdoundConnectorEndpoint: "", + validInput: true, + channelName: "", + } + + handleInputUpdate = (e) => { + this.setState({ [e.target.name]: e.target.value }, () => { + const { blockbaxAccessToken, blockbaxInbdoundConnectorEndpoint } = this.state; + + if (blockbaxAccessToken.length > 0 && blockbaxInbdoundConnectorEndpoint.length > 0) { + this.setState({ + showNextSteps: true, + validInput: true + }) + } else { + this.setState({ + validInput: false + }) + } + }) + } + + handleNameInput = (e) => { + this.setState({ channelName: e.target.value }); + }; + + onSubmit = () => { + const { blockbaxAccessToken, blockbaxInbdoundConnectorEndpoint, channelName } = this.state + + let payload = { + channel: { + name: channelName, + type: this.props.type, + credentials: { + blockbaxAccessToken, + blockbaxInbdoundConnectorEndpoint + }, + }, + }; + + this.props.createChannel(payload); + + analyticsLogger.logEvent( + this.props.mobile ? "ACTION_CREATE_CHANNEL_MOBILE" : "ACTION_CREATE_CHANNEL", + { + name: channelName, + type: this.props.type, + } + ) + } + + render() { + const { type } = this.props; + + return ( + <> + +
+ + { + e.preventDefault(); + this.props.reset() + }} + > + + +
+
+ + + + {`${type === "update" ? "Update" : "Enter"} your Blockbax details`} + + + + + Blockbax Access Token + + + + Blockbax Inbdound Connector Endpoint + + + + + + {this.state.showNextSteps && ( + {}} + mobile={this.props.mobile} + noSubmit + /> + )} + + + ); + } +} + +export default BlockbaxForm; diff --git a/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx b/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx new file mode 100644 index 000000000..4666c9155 --- /dev/null +++ b/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx @@ -0,0 +1,61 @@ +import React, { Component } from "react"; +import { Typography, Input, Row, Col } from 'antd'; +const { Text } = Typography + +class BlockbaxUpdateForm extends Component { + state = { + blockbaxAccessToken: "", + blockbaxInbdoundConnectorEndpoint: "", + }; + + handleInputUpdate = (e) => { + this.setState({ [e.target.name]: e.target.value }, () => { + const { blockbaxAccessToken, blockbaxInbdoundConnectorEndpoint } = this.state; + + if (blockbaxAccessToken.length > 0 && blockbaxInbdoundConnectorEndpoint.length > 0) { + this.props.onValidInput({ + blockbaxAccessToken: blockbaxAccessToken, + blockbaxInbdoundConnectorEndpoint: blockbaxInbdoundConnectorEndpoint + }, true) + } else { + this.props.onValidInput({ + accessToken: "", + inboundConnectorEndpoint: "", + }, false) + } + }) + } + + render() { + return ( + <> + + {`Enter your Adafruit IO Connection Details`} + + + + + Adafruit Username + + + + Adafruit IO Key + + + + + ); + } +} + +export default BlockbaxUpdateForm; diff --git a/assets/js/util/integrationInfo.js b/assets/js/util/integrationInfo.js index 0e7009237..dd7b8773d 100644 --- a/assets/js/util/integrationInfo.js +++ b/assets/js/util/integrationInfo.js @@ -31,8 +31,12 @@ import TagoDark from "../../img/channels/community/flows/tago-dark.png"; import Ubidots from "../../img/channels/community/ubidots.png"; import UbidotsDark from "../../img/channels/community/flows/ubidots-dark.png"; import UbidotsIntro from "../../img/channels/community/intro_screens/ubidots.png"; +import Blockbax from "../../img/channels/community/blockbax.png" +import BlockbaxDark from "../../img/channels/community/blockbax-dark.png" +import BlockbaxIntro from "../../img/channels/community/intro_screens/blockbax.png" export const integrationImgMap = { + blockbax: BlockbaxDark, adafruit: AdafruitDark, aws: AwsDark, azure: AzureDark, @@ -49,7 +53,7 @@ export const integrationImgMap = { akenza: AkenzaDark, }; -export const http_integrations = ["http", "cargo", "my_devices", "akenza", "datacake", "microshare", "tago", "ubidots", "google_sheets"] +export const http_integrations = ["http", "blockbax", "cargo", "my_devices", "akenza", "datacake", "microshare", "tago", "ubidots", "google_sheets"] export const mqtt_integrations = ["mqtt", "adafruit"] export const getAllowedIntegrations = () => { @@ -96,6 +100,18 @@ export const CORE_INTEGRATION_TYPES = [ ]; export const COMMUNITY_INTEGRATION_TYPES = [ + { + name: "Blockbax", + type: "blockbax", + img: `${Blockbax}`, + info: { + title: "Blockbax Low-Code IoT Platform", + desc: "Join the future of smart operations, automate your business through sensor and machine data without coding.", + docLink: "https://blockbax.com/docs/integrations/helium/", + externalLink: "https://blockbax.com/" + }, + introImg: `${BlockbaxIntro}` + }, { name: "Helium Cargo", type: "cargo", diff --git a/lib/console/channels/channel.ex b/lib/console/channels/channel.ex index 827c0aa07..747b10d81 100644 --- a/lib/console/channels/channel.ex +++ b/lib/console/channels/channel.ex @@ -6,8 +6,9 @@ defmodule Console.Channels.Channel do alias Console.Organizations.Organization alias Console.Channels.Channel - @http_types ~w(http cargo my_devices akenza datacake microshare tago ubidots google_sheets) + @http_types ~w(blockbax http cargo my_devices akenza datacake microshare tago ubidots google_sheets) @long_type_names %{ + "blockbax" => "Blockbax", "aws" => "AWS IoT", "azure" => "Azure IoT Hub", "iot_central" => "Azure IoT Central", diff --git a/lib/console/community/community_channels.ex b/lib/console/community/community_channels.ex index 90bc6ded8..ad801ac14 100644 --- a/lib/console/community/community_channels.ex +++ b/lib/console/community/community_channels.ex @@ -1,6 +1,12 @@ defmodule Console.CommunityChannels do def append_connection_details(channel) do case channel.type do + "blockbax" -> + channel + |> Map.put(:endpoint, "#{channel.credentials["inboundConnectorEndpoint"]}") + |> Map.put(:method, "post") + |> Map.put(:headers, Jason.encode!(%{ "Content-Type" => "application/json" })) + |> Map.put(:headers, Jason.encode!(%{ "Authorization" => "ApiKey #{channel.credentials["accessToken"]}" })) "cargo" -> channel |> Map.put(:endpoint, "https://cargo.helium.com/api/payloads") @@ -60,6 +66,15 @@ defmodule Console.CommunityChannels do def inject_credentials(channel, show_underlying_type \\ true) do case channel.type do + "blockbax" -> + channel + |> Map.put(:credentials, %{ + "endpoint" => "#{channel.credentials["inboundConnectorEndpoint"]}", + "headers" => %{ "Authorization" => "ApiKey #{channel.credentials["accessToken"]}" }, + "method" => "post", + "url_params" => %{} + }) + |> Map.put(:type, (if show_underlying_type, do: "http", else: channel.type)) "cargo" -> channel |> Map.put(:credentials, %{ diff --git a/lib/console_web/controllers/v1/channel_controller.ex b/lib/console_web/controllers/v1/channel_controller.ex index cf8a3fed1..e49cc92eb 100644 --- a/lib/console_web/controllers/v1/channel_controller.ex +++ b/lib/console_web/controllers/v1/channel_controller.ex @@ -77,6 +77,16 @@ defmodule ConsoleWeb.V1.ChannelController do if type in allowed_types do channel_params = case type do + "blockbax" -> + %{ + "name" => name, + "type" => type, + "organization_id" => current_organization.id, + "credentials" -> %{ + "blockbaxAccessToken" => blockbaxAccessToken, + "blockbaxInbdoundConnectorEndpoint" => blockbaxInbdoundConnectorEndpoint, + } + } "akenza" -> %{ "credentials" => %{ From 7333b3d1342a7448cd5a17672e03ef8038fe7bfb Mon Sep 17 00:00:00 2001 From: Rutger Luyckx Date: Thu, 16 Mar 2023 16:21:10 +0100 Subject: [PATCH 2/7] Fixed path to dark image --- assets/js/util/integrationInfo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/util/integrationInfo.js b/assets/js/util/integrationInfo.js index dd7b8773d..04dd19957 100644 --- a/assets/js/util/integrationInfo.js +++ b/assets/js/util/integrationInfo.js @@ -32,7 +32,7 @@ import Ubidots from "../../img/channels/community/ubidots.png"; import UbidotsDark from "../../img/channels/community/flows/ubidots-dark.png"; import UbidotsIntro from "../../img/channels/community/intro_screens/ubidots.png"; import Blockbax from "../../img/channels/community/blockbax.png" -import BlockbaxDark from "../../img/channels/community/blockbax-dark.png" +import BlockbaxDark from "../../img/channels/community/flows/blockbax-dark.png" import BlockbaxIntro from "../../img/channels/community/intro_screens/blockbax.png" export const integrationImgMap = { From c888d652d35616a9d6f71458fd5c10b962d064ff Mon Sep 17 00:00:00 2001 From: Rutger Luyckx Date: Thu, 16 Mar 2023 16:22:49 +0100 Subject: [PATCH 3/7] Fix bug in communicty channel creation --- lib/console_web/controllers/v1/channel_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/console_web/controllers/v1/channel_controller.ex b/lib/console_web/controllers/v1/channel_controller.ex index e49cc92eb..fef23fd2c 100644 --- a/lib/console_web/controllers/v1/channel_controller.ex +++ b/lib/console_web/controllers/v1/channel_controller.ex @@ -82,7 +82,7 @@ defmodule ConsoleWeb.V1.ChannelController do "name" => name, "type" => type, "organization_id" => current_organization.id, - "credentials" -> %{ + "credentials" => %{ "blockbaxAccessToken" => blockbaxAccessToken, "blockbaxInbdoundConnectorEndpoint" => blockbaxInbdoundConnectorEndpoint, } From 5ceb3fd34d444fe8beb4d989cfa80f2bc4635c12 Mon Sep 17 00:00:00 2001 From: Rutger Luyckx Date: Thu, 16 Mar 2023 16:55:35 +0100 Subject: [PATCH 4/7] Minor bug fixes --- .../js/components/channels/community/blockbax/BlockbaxForm.jsx | 3 +-- lib/console_web/controllers/v1/channel_controller.ex | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx b/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx index 98d51e6f5..1f05284e1 100644 --- a/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx +++ b/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx @@ -112,9 +112,8 @@ class BlockbaxForm extends Component { channelName={this.state.channelName} onInputUpdate={this.handleNameInput} validInput={this.state.validInput} - submit={() => {}} + submit={this.onSubmit} mobile={this.props.mobile} - noSubmit /> )} diff --git a/lib/console_web/controllers/v1/channel_controller.ex b/lib/console_web/controllers/v1/channel_controller.ex index fef23fd2c..5c3875c0c 100644 --- a/lib/console_web/controllers/v1/channel_controller.ex +++ b/lib/console_web/controllers/v1/channel_controller.ex @@ -83,8 +83,7 @@ defmodule ConsoleWeb.V1.ChannelController do "type" => type, "organization_id" => current_organization.id, "credentials" => %{ - "blockbaxAccessToken" => blockbaxAccessToken, - "blockbaxInbdoundConnectorEndpoint" => blockbaxInbdoundConnectorEndpoint, + "token" => token, } } "akenza" -> From 3590ba91ef9843cc35db2d5ccb871efa770036dd Mon Sep 17 00:00:00 2001 From: Rutger Luyckx Date: Thu, 16 Mar 2023 17:17:02 +0100 Subject: [PATCH 5/7] Fix bug where integraiton details were not propgated corectly --- .../community/blockbax/BlockbaxUpdateForm.jsx | 14 +++++++------- lib/console/community/community_channels.ex | 4 ++-- .../controllers/v1/channel_controller.ex | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx b/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx index 4666c9155..186106e66 100644 --- a/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx +++ b/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx @@ -14,13 +14,13 @@ class BlockbaxUpdateForm extends Component { if (blockbaxAccessToken.length > 0 && blockbaxInbdoundConnectorEndpoint.length > 0) { this.props.onValidInput({ - blockbaxAccessToken: blockbaxAccessToken, - blockbaxInbdoundConnectorEndpoint: blockbaxInbdoundConnectorEndpoint + blockbaxAccessToken, + blockbaxInbdoundConnectorEndpoint }, true) } else { this.props.onValidInput({ - accessToken: "", - inboundConnectorEndpoint: "", + blockbaxAccessToken: "", + blockbaxInbdoundConnectorEndpoint: "", }, false) } }) @@ -30,12 +30,12 @@ class BlockbaxUpdateForm extends Component { return ( <> - {`Enter your Adafruit IO Connection Details`} + {`Enter your Blockbax Integration Details`} - Adafruit Username + Blockbax Access Token - Adafruit IO Key + Blockbax Inbound Connector Endpoint channel - |> Map.put(:endpoint, "#{channel.credentials["inboundConnectorEndpoint"]}") + |> Map.put(:endpoint, "#{channel.credentials["blockbaxInbdoundConnectorEndpoint"]}") |> Map.put(:method, "post") |> Map.put(:headers, Jason.encode!(%{ "Content-Type" => "application/json" })) - |> Map.put(:headers, Jason.encode!(%{ "Authorization" => "ApiKey #{channel.credentials["accessToken"]}" })) + |> Map.put(:headers, Jason.encode!(%{ "Authorization" => "ApiKey #{channel.credentials["blockbaxAccessToken"]}" })) "cargo" -> channel |> Map.put(:endpoint, "https://cargo.helium.com/api/payloads") diff --git a/lib/console_web/controllers/v1/channel_controller.ex b/lib/console_web/controllers/v1/channel_controller.ex index 5c3875c0c..f67503f5f 100644 --- a/lib/console_web/controllers/v1/channel_controller.ex +++ b/lib/console_web/controllers/v1/channel_controller.ex @@ -83,7 +83,7 @@ defmodule ConsoleWeb.V1.ChannelController do "type" => type, "organization_id" => current_organization.id, "credentials" => %{ - "token" => token, + "blockbaxAccessToken" => token, } } "akenza" -> From 6bd774a6ba4a66facaf9cd996fdab68bd67657b9 Mon Sep 17 00:00:00 2001 From: Rutger Luyckx Date: Fri, 17 Mar 2023 15:24:31 +0100 Subject: [PATCH 6/7] Improve Blockbax logo --- assets/img/channels/community/blockbax.png | Bin 1029 -> 3220 bytes .../community/flows/blockbax-dark.png | Bin 1633 -> 1499 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/img/channels/community/blockbax.png b/assets/img/channels/community/blockbax.png index 792fc04de29e1b9a52d19d7a70230c71ba63ffdf..2055ed018a9ed7c72c1ef0517f15ff74b73b0c27 100644 GIT binary patch literal 3220 zcmdT{c~nzZ8V@IW9u*}}=x7D6+Gt%+1C_ee7buHFS_V-NaYT)!isJ$ZYBpIy5DF*( zEr=3X1X*1WaRZb*6hhbxikcvVAPGwd5R#CvnasoKoYT|kv}fkO`QyF!{l4#e-*$iZ zo^#{9JW2EBES!VEVCK1RbKQx-7$wg<##mJI@L-)D1?FBJK3fS0g@8~A2#tWy2?&FL zoFyRP1SEohL=uoF0>UI9(FBA=Kw=2UId^_yp0rk^=`|P(B29mul<&^J1lLBxwTW=; zc>)qkK;i;gv(!`LO-f0gwEnV$8`4(f+k7QlSnAGC>D4JOOAvSd#j<`uKx>X~^HsPu zA*8K1pf$T%Aqr@{PC$ODRtUp|W#PiR2_27{l-*_ht(PS=A#EiDB;L02h%}LgA3clht_Xi3~P*c0eZ}89ML&7?xWsImP0C33Gjbl z_Pou2wNH`xTb|q@ZCXiUD-`A$VNS3kJDX=dRfd8>l`-9iHj7vcM}u9!iM^Vgjpi2Q zHsJer$o|A^_vbD%5$gG4?cYzl&IEL^6(Lm8vc30J(1%2@`HHCW@Q13!qDqtAy1Q$V z-jg=oK|9<9`*Y@Ba4OG5_Xa`&#TC8|xF@*Y_9R?5q}F^Y%Y%c)m$82eT>T zzRQDlTb%P8kkU}?R6^7|a0f9l@E0o|-n+TCYx)Ei__YJfllwZ|@LQRk(sAXo5hG=i zO<(558mwAkr0FUL8xX9z+el$JwXX}?ln7Zm-q#RqHv+C+6ekDic-+cJ`jTNLO%?US z2j&APt(4^I+KyGrjA~n44&j=vKpOE%23ZVeSFKPmAFHD%xYI=2&FscDG5f?GoJTW0 zSD#>22GaF<^+LI637w49W`6<%yT%@Yg*~ksOb1j8f1XV$vYzsM#S&QJ6esGCC#<=k zJoEDMxclqmP6F*FWPHl{5kt=d&>O3WH3Q5621kOeXe`;-ZtYhzz`W6Kq`Xd9x&m}Q z$b-@fA?2`h2DRgohI?@=D)7nRbA}D-GiX$GK2Z>CLnp6daJ}5hk0k)VmjJH3YB6}> zI+RupoeKW6D%#AfA@{Qb$ge&vC-73CC?HyltsL6;T}O z4zW1T*X~m+#MR_#ZRTa;V zE%*IwriJ#A!r`C;sI7zbBw8Mg4(bt4=D~Qa z`}F>=u<8Ni+S7cf_Z2=8U5agQd$d;9JNH?REykJzmGUA8^U!Lcw621&a`NYL&1R4w!_o)QF=>E`QqU_e=)lw{B&%|GU@1x z$wb?4H0e}!o}W+=fc+(<}yWpkf)cM*N~D z_ot79Y+{?)c%z)rMip(3x1X{?d2|w2COY`V&>S=ZgL{P|2PSlsf3}o3c>?>`Kl!Nw zAr1u+Ie-+6UwRJP z;=tKU-l8-P)Qez)c8G4GLJf;U-3ii7a2tw(b~aScKlx{bi_fl8M={}ybRWc1x`*Q2OvfKj^Nj4y>tHN?6t&)ZYg+>1JLqTlXb z8C)tQ>c`XlC>j{0wqE&lYm1ylj%Q4tPNCk&gwn>x?e>}tQP3&Gl=m$@;8JCaVZVtY z8h^r=p6FzP3Ev@L{f?D7_mC__mkWSGvN27x~MGwgq5f>tAtA1yEK*$pCXglb&ud#`UL5`*sm+ z*}x+rSI&Gr8eEJP_1zn6SpTT#Ey^bj@6gep>v+Y?zP``!_tA2vX=iUJoEDTq??KkB zB||6cIJ8sGiN=|*iofbKE*j5{Z#+=XFq@`M%Q;V>Sp@KGV}Vl_OY*FzLD^B_Mm2+} zbGs(btUDG9Ev2z-*exEX|DFIXJ;9F8S?_Hku*NwT1B=1S4_cbnU@xea)YCi`sbwct z@69){Z^3%2$+qCzFgVYXBnf02i5GPTvTeyYy;vM>ePmv&ompDk+}S(0L4!WdCejYf zfG&UY`PHS`m`cru8w7=E9nEpI*{4e&)7#R6ZAl3|3H#>RJiTy zNuYMYk|4j}{|pWv4oqlJ*ic}wAmD+(g@h>o4G$O?mZYF4mPoJi|Ihf2rxTh0}D_j zVnYHanEdOrroMI4lKruBm+hR&dd=Z$S$raIh`fIUbMD&1QZF_h=n9W+7tPn+z&0z9 z*Q7M!<2SzS81671?yxzZR*j;=6VXo$yIo`hWLlXa9+SH!^IPvMyw)M^tmA=n&H~3|} z+{1d!Gy0D+cbMmL(}?u9AKm#k^!+fGi?E%`_Ie9v*d8|RxK4Y$)~yGmI6%(-_c?-l z&1SLhk>dXYT1%royIS3Q`{>1{<$UaGHuIf-@c8Y$cP-lC{?Qe?Hy^Uf=@@tTO+#>bmPc+Z9p%F8;H?}v#ZJMT8dyDDy`KfpHW;NdW zS|9an^O|tUOHm0&*B@ciuKQ8fY`Q@#t5tNrKzc;_SE+q`iBB#6{a0M0y3dh2?A~Mf zs1474%y0VYqaGR&e*XU9Q_S0!ZrJw2kvrmYcrq}$v)e`W4{}{kJgU9nk*WF8k7e=Y zhjcl^c9a!PJ7)ajOGD{PQ|&czhi}U!+`UvOdrklDVf!ME*E8)_9<;h&oN`UkW^QVi zTF`!0_GyVNh}>EHHsWQ!S;8eXbxAzCOD@#RFRgI4A_l3i=P2#$@nx^>bP0l+XkKj5gj0 diff --git a/assets/img/channels/community/flows/blockbax-dark.png b/assets/img/channels/community/flows/blockbax-dark.png index 13201d267ea458b19670c0f3eb547e2fd97d2c29..b26ddee58a258e6fdca148c3b5a2a9a3a6497f1a 100644 GIT binary patch literal 1499 zcmb_cX;4#F6u$4}kvze`L)nUgmlP+B;6f!LD)N8;iFI%xP()dRs09HfqG%(|V^IaJ3AW;2AND&P*Bj+)HFOi+}YXb z?(Tl##0ft?KdDrjkdUBIC^Q;PPft%>U7bp$+WjizCIChoB_c2B?(l(n1Ywe;ef_2? zL8-A}==-NN!0s41wPAt9vWeaLH#6#ty{*ts;Bcsoy1#K#dGR^>V@2&8_u!sIx>seK zL#;*6L-Si)BW5a9(nW!G$hBQdy1wHTiB55@S zKsxyB_lP@I#b#yo-#dtK?+o}BqE$o&?xlPO%|sgEfSbPso(Pu>waV?-vX7=7p&X*` z8)Aph%Jzc1>EqA*mkb^DJQ=-R0~&6x`qFzyCTK|v!vK{u`}%rI0<>lF76*d3F#h3C?)Qbtc+-hLAoRf;8=NTS`@L z*`ZruEOzPgw1WD=pokAp`OvI_gJo=(El^M(W|SVRM8p>|2Qj2Oz|1K(9ZdUkhAZ+s z!nHG{VEyJ(o?BGbaqX*Y}+fYIE#ycS9v`71- zSZPthqpCLx`vs_YhgE(tqr6_x*M+tfH+75?WVmERY(gvg(hBDjr#{Tsi8D{_So@5+ zyDzKT1yWMoiy(4evmjIiYR1AHa}XrjTtA1St#Y|tZmQgureww#hM?MsWZra0C1C^! zkVz;^Nd?`V3 zhIrC-edb0|2vnsmJSvGBIQk&2g&*(mg$vyKLa;TTrFL2KQ!;@1YKi+8P6y|NUD|2| zA8f9Xzf5Z9lR$9G_WI*lWM7`Ca(T8BLGJog2O7#5Qd$uU^1^~xLdCN-JUXxq2HN%*K^M{_Y~8;2YfP;F_Mn>x@aJl~k>giKqv qZRvKBS(OwlGgQprePi_g+GJd;QcI2aa{X4$q)*}-Agc6^O#2HT)*w#+ literal 1633 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4mO}jWo=(6kYX$ja(7}_cTVOdki(Mh=KbFpQ;PTXr zZqNo24qVZH3{E6Wyed$i)=M5+SY+L#|U*x9U-nu#Z{tS%&bLtt})FT|)5*Q_$ zSW`H}CMZ&sQ&?45xicrbLBF!D{&v`JqeR+R19kNB>;0coqu;-}-ar3#*L~al`*T-s zwRAgHdc`p7P*TM8$&daqHo3M{C`PDsUZ2I%ZSydyJ;9Lo;jH-yhO!rDO;0dXy*O)f zf}w8ok)Ir5mxb3>a)@~gthMA2J1wx*?jVy9OZUfr%g5NkKYD~bEYBH zM^BY)aNQtrYF_Zvh_4)C?Yn(Ll8)Zz5Zk?z|MFkveXqX!D%_XzI<~U?_ngT;Hp*20 zzaMyf1!wotj?mc&8+kUq64qH(&O0^YtmB3mvjWb#ZkRDG;;j3I8GX7B_ONuXo$RB-} z?_iRJdu#VcpigfZ$1GdJb}*@8nQk6ScZ=D37>aQeLie`%ob`I#PB{+bV|~=+#$Bb^dG0OvajHI0`2DglB`3(+R`awcemuQ%dcBc}kb}v5<~Y4l6KK9O=>qy0iM&sj`BcrlT9y zEi{TO^xq)S7w}Q?Akc3fvXWZ24+8zPdlxt^9>LMK)#$14B6s7|KFNviO>gemRmQ*K~Bt zx`jfkcXEgY3$3!`6bm*CJ?pz+Mq9vH{|zUML)QY+-7Z(J71xv^QaVJMj!t;@SS9Gr z4?(U6xBqak9*C!U@j~6giX77ltNvQVZ!`UWaJ{_!_N#UC?%&@gy5?vL4T@5@>s)MX b|8l>TvfdVT$+#6*Eiibx`njxgN@xNAoD5={ From 06ad883c902886093f8bfa7abd3e72fd18dce56d Mon Sep 17 00:00:00 2001 From: Rutger Luyckx Date: Fri, 17 Mar 2023 15:24:50 +0100 Subject: [PATCH 7/7] Fix typo, format jsx --- .../community/blockbax/BlockbaxForm.jsx | 99 ++++++++++--------- .../community/blockbax/BlockbaxUpdateForm.jsx | 80 ++++++++------- lib/console/community/community_channels.ex | 2 +- 3 files changed, 99 insertions(+), 82 deletions(-) diff --git a/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx b/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx index 1f05284e1..c818c33de 100644 --- a/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx +++ b/assets/js/components/channels/community/blockbax/BlockbaxForm.jsx @@ -1,64 +1,74 @@ -import React, { Component } from 'react'; +import React, { Component } from "react"; import { IntegrationTypeTileSimple } from "../../IntegrationTypeTileSimple"; import { Link } from "react-router-dom"; import ChannelNameForm from "../../default/ChannelNameForm.jsx"; import analyticsLogger from "../../../../util/analyticsLogger"; -import { Card, Typography, Input, Button, Row, Col } from 'antd'; -const { Text } = Typography +import { Card, Typography, Input, Button, Row, Col } from "antd"; +const { Text } = Typography; class BlockbaxForm extends Component { state = { + showNextSteps: false, blockbaxAccessToken: "", - blockbaxInbdoundConnectorEndpoint: "", + blockbaxInboundConnectorEndpoint: "", validInput: true, channelName: "", - } + }; handleInputUpdate = (e) => { this.setState({ [e.target.name]: e.target.value }, () => { - const { blockbaxAccessToken, blockbaxInbdoundConnectorEndpoint } = this.state; + const { blockbaxAccessToken, blockbaxInboundConnectorEndpoint } = + this.state; - if (blockbaxAccessToken.length > 0 && blockbaxInbdoundConnectorEndpoint.length > 0) { + if ( + blockbaxAccessToken.length > 0 && + blockbaxInboundConnectorEndpoint.length > 0 + ) { this.setState({ showNextSteps: true, - validInput: true - }) + validInput: true, + }); } else { this.setState({ - validInput: false - }) + validInput: false, + }); } - }) - } + }); + }; handleNameInput = (e) => { this.setState({ channelName: e.target.value }); }; onSubmit = () => { - const { blockbaxAccessToken, blockbaxInbdoundConnectorEndpoint, channelName } = this.state + const { + blockbaxAccessToken, + blockbaxInboundConnectorEndpoint, + channelName, + } = this.state; - let payload = { + const payload = { channel: { name: channelName, type: this.props.type, + blockbaxInboundConnectorEndpoint, credentials: { blockbaxAccessToken, - blockbaxInbdoundConnectorEndpoint }, }, }; this.props.createChannel(payload); - analyticsLogger.logEvent( - this.props.mobile ? "ACTION_CREATE_CHANNEL_MOBILE" : "ACTION_CREATE_CHANNEL", - { - name: channelName, - type: this.props.type, - } - ) - } + const topic = this.props.mobile + ? "ACTION_CREATE_CHANNEL_MOBILE" + : "ACTION_CREATE_CHANNEL"; + + analyticsLogger.logEvent(topic, { + name: channelName, + type: this.props.type, + }); + }; render() { const { type } = this.props; @@ -72,7 +82,7 @@ class BlockbaxForm extends Component { to="#" onClick={(e) => { e.preventDefault(); - this.props.reset() + this.props.reset(); }} > @@ -85,25 +95,25 @@ class BlockbaxForm extends Component { {`${type === "update" ? "Update" : "Enter"} your Blockbax details`} - - - Blockbax Access Token - - - - Blockbax Inbdound Connector Endpoint - - + + + Blockbax Access Token + + + + Blockbax Inbdound Connector Endpoint + + @@ -116,7 +126,6 @@ class BlockbaxForm extends Component { mobile={this.props.mobile} /> )} - ); } diff --git a/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx b/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx index 186106e66..c4c067ca6 100644 --- a/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx +++ b/assets/js/components/channels/community/blockbax/BlockbaxUpdateForm.jsx @@ -1,57 +1,65 @@ import React, { Component } from "react"; -import { Typography, Input, Row, Col } from 'antd'; -const { Text } = Typography +import { Typography, Input, Row, Col } from "antd"; +const { Text } = Typography; class BlockbaxUpdateForm extends Component { state = { blockbaxAccessToken: "", - blockbaxInbdoundConnectorEndpoint: "", + blockbaxInboundConnectorEndpoint: "", }; handleInputUpdate = (e) => { this.setState({ [e.target.name]: e.target.value }, () => { - const { blockbaxAccessToken, blockbaxInbdoundConnectorEndpoint } = this.state; + const { blockbaxAccessToken, blockbaxInboundConnectorEndpoint } = + this.state; - if (blockbaxAccessToken.length > 0 && blockbaxInbdoundConnectorEndpoint.length > 0) { - this.props.onValidInput({ - blockbaxAccessToken, - blockbaxInbdoundConnectorEndpoint - }, true) + if ( + blockbaxAccessToken.length > 0 && + blockbaxInboundConnectorEndpoint.length > 0 + ) { + this.props.onValidInput( + { + blockbaxAccessToken, + blockbaxInboundConnectorEndpoint, + }, + true + ); } else { - this.props.onValidInput({ + this.props.onValidInput( + { blockbaxAccessToken: "", - blockbaxInbdoundConnectorEndpoint: "", - }, false) + blockbaxInboundConnectorEndpoint: "", + }, + false + ); } - }) - } + }); + }; render() { return ( <> - - {`Enter your Blockbax Integration Details`} - + Enter your Blockbax Integration Details - - - Blockbax Access Token - - - - Blockbax Inbound Connector Endpoint - - + + + Blockbax Access Token + + + + Blockbax Inbound Connector Endpoint + + ); diff --git a/lib/console/community/community_channels.ex b/lib/console/community/community_channels.ex index f9e216a9f..fdda68da2 100644 --- a/lib/console/community/community_channels.ex +++ b/lib/console/community/community_channels.ex @@ -3,7 +3,7 @@ defmodule Console.CommunityChannels do case channel.type do "blockbax" -> channel - |> Map.put(:endpoint, "#{channel.credentials["blockbaxInbdoundConnectorEndpoint"]}") + |> Map.put(:endpoint, "#{channel.credentials["blockbaxInboundConnectorEndpoint"]}") |> Map.put(:method, "post") |> Map.put(:headers, Jason.encode!(%{ "Content-Type" => "application/json" })) |> Map.put(:headers, Jason.encode!(%{ "Authorization" => "ApiKey #{channel.credentials["blockbaxAccessToken"]}" }))