{
"data": {
"magicbuild.near": {
"widget": {
"save-client-button": {
"": "State.init({\r\n clientName: props.contractAddress,\r\n clientContract: props.clientContract ? props.clientContract : \"\",\r\n clientList: [],\r\n abi: props.abi ? props.abi : null,\r\n displayModal: false,\r\n error,\r\n});\r\nconst onInputChangeClientName = ({ target }) => {\r\n State.update({ clientName: target.value });\r\n};\r\nconst onInputChangeClientContract = ({ target }) => {\r\n State.update({ error: null });\r\n State.update({ clientContract: target.value });\r\n};\r\nconst showModal = (e, type) => {\r\n console.log(\"hello\", state.clientList);\r\n\r\n console.log(\"check\", props);\r\n if (type == \"show\") {\r\n State.update({ displayModal: true });\r\n }\r\n if (type == \"close\") {\r\n State.update({ displayModal: false });\r\n }\r\n};\r\nconst loadData = () => {\r\n const clientList = Social.get(`${context.accountId}/magicbuild/clientList`);\r\n if (clientList) {\r\n const clientListData = JSON.parse(clientList);\r\n State.update({ clientList: clientListData });\r\n }\r\n};\r\nloadData();\r\nconst saveClient = () => {\r\n if (state.clientName.length < 5) {\r\n State.update({\r\n error: \"Name requires more than 5 characters\",\r\n });\r\n } else {\r\n asyncFetch(\"https://rpc.near.org/\", {\r\n body: JSON.stringify({\r\n method: \"query\",\r\n params: {\r\n request_type: \"view_code\",\r\n account_id: state.clientContract,\r\n finality: \"final\",\r\n },\r\n id: 154,\r\n jsonrpc: \"2.0\",\r\n }),\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n method: \"POST\",\r\n }).then((res) => {\r\n if (res.body.result.code_base64) {\r\n const data = state.clientList;\r\n const id = Date.now();\r\n const clientData = {\r\n id: id,\r\n name: state.clientName,\r\n address: state.clientContract,\r\n archived: false,\r\n abi: state.abi,\r\n };\r\n data.push(clientData);\r\n const saveData = {\r\n magicbuild: {\r\n clientList: data,\r\n },\r\n };\r\n Social.set(saveData, {\r\n force: true,\r\n onCommit: () => {\r\n State.update({ displayModal: false });\r\n },\r\n onCancel: () => {},\r\n });\r\n } else {\r\n State.update({\r\n error:\r\n \"Unable to save Account ID because the contract has not been deployed yet!\",\r\n });\r\n }\r\n });\r\n }\r\n};\r\n\r\nreturn (\r\n <div>\r\n <label></label>\r\n <button\r\n class=\"btn btn-dark form-control \"\r\n onClick={(e) => showModal(e, \"show\")}\r\n >\r\n Save Client\r\n </button>\r\n <div\r\n style={{ display: state.displayModal ? \"block\" : \"none\" }}\r\n className={`modal fade ${state.displayModal ? \" show\" : \"\"}`}\r\n id=\"createClient\"\r\n tabindex=\"-1\"\r\n aria-labelledby=\"createClientLabel\"\r\n >\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h1 class=\"modal-title fs-5\" id=\"createClientLabel\">\r\n Create Client\r\n </h1>\r\n <button\r\n type=\"button\"\r\n class=\"btn-close\"\r\n onClick={(e) => showModal(e, \"close\")}\r\n ></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"form-group\">\r\n <label>Name</label>\r\n <input\r\n class=\"form-control\"\r\n onChange={(e) => onInputChangeClientName(e)}\r\n />\r\n </div>\r\n <div class=\"form-group\">\r\n <label>Address</label>\r\n <input\r\n class=\"form-control\"\r\n value={state.clientContract}\r\n onChange={(e) => onInputChangeClientContract(e)}\r\n />\r\n </div>\r\n <div class=\"form-group\">\r\n <label>Chain</label>\r\n <select class=\"form-control\">\r\n <option selected>Near Chain</option>\r\n <option disabled>Ethereum Chain</option>\r\n <option disabled>AVAX Chain</option>\r\n </select>\r\n </div>\r\n {!state.error && (\r\n <small class=\"form-text text-muted\">\r\n A new Client will be created.\r\n </small>\r\n )}\r\n\r\n {state.error && (\r\n <p class=\"text-danger\" role=\"alert\">\r\n {state.error}\r\n </p>\r\n )}\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary\"\r\n onClick={(e) => showModal(e, \"close\")}\r\n >\r\n Close\r\n </button>\r\n <button type=\"button\" onClick={saveClient} class=\"btn btn-primary\">\r\n Create\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {state.displayModal && (\r\n <>\r\n <div class=\"modal-backdrop fade show\"></div>\r\n </>\r\n )}\r\n </div>\r\n);\r\n"
}
}
}
}
}