diff --git a/packages/extension/src/pages/chatbot/dropdown.tsx b/packages/extension/src/pages/chatbot/dropdown.tsx
index 48efde33..63623d1a 100644
--- a/packages/extension/src/pages/chatbot/dropdown.tsx
+++ b/packages/extension/src/pages/chatbot/dropdown.tsx
@@ -1,19 +1,19 @@
import React from 'react';
import { OptionEnum } from './enum';
+import style from './style.module.scss';
export const Dropdown = ({ chosenOption, dispatch }) => {
return (
-
-
-
+
);
};
diff --git a/packages/extension/src/pages/chatbot/index.tsx b/packages/extension/src/pages/chatbot/index.tsx
index a134b3b3..cc776a6f 100644
--- a/packages/extension/src/pages/chatbot/index.tsx
+++ b/packages/extension/src/pages/chatbot/index.tsx
@@ -16,6 +16,8 @@ const initialState = {
prompt: '',
status: StatusEnum.READY,
chosenOption: OptionEnum.ORAIDEX,
+ pairContractAddr:
+ 'orai1agqfdtyd9lr0ntmfjtzl4f6gyswpeq4z4mdnq4npdxdc99tcw35qesmr9v',
};
function reducer(state, action) {
@@ -50,6 +52,16 @@ function reducer(state, action) {
prompt: '',
status: StatusEnum.READY,
};
+ case 'on_change_pair_contract_addr':
+ return {
+ ...state,
+ pairContractAddr: payload,
+ };
+ case 'reload_messages':
+ return {
+ ...state,
+ messages: JSON.parse(localStorage.getItem('messages')),
+ };
}
throw Error('Unknown action: ' + action.type);
}
@@ -61,32 +73,20 @@ export const ChatbotPage: FunctionComponent = observer(() => {
const accountOrai = accountStore.getAccount(ChainIdEnum.Oraichain);
const client = useClientTestnet(accountOrai);
- // const [prompt, setPrompt] = useState('');
- // const [messages, setMessages] = useState([]);
-
const messagesEndRef = useRef(null);
- const [{ messages, prompt, status, choose_option }, dispatch] = useReducer(
- reducer,
- initialState
- );
+ const [
+ { messages, prompt, status, chosenOption, pairContractAddr },
+ dispatch,
+ ] = useReducer(reducer, initialState);
console.log(userAddr);
- // const testChatUI = useCallback(() => {
- // setMessages([
- // ...messages,
- // {
- // isUser: true,
- // msg: prompt,
- // },
- // {
- // isUser: false,
- // msg: 'Answer',
- // },
- // ]);
- // setPrompt('');
- // }, null);
+ useEffect(() => {
+ dispatch({
+ type: 'reload_messages',
+ });
+ }, []);
const testChatUI = () => {
dispatch({
@@ -104,19 +104,6 @@ export const ChatbotPage: FunctionComponent = observer(() => {
msg: 'Answer',
},
});
-
- // setMessages([
- // ...messages,
- // {
- // isUser: true,
- // msg: prompt,
- // },
- // {
- // isUser: false,
- // msg: 'Answer',
- // },
- // ]);
- // setPrompt('');
};
const scrollToBottom = () => {
@@ -127,19 +114,23 @@ export const ChatbotPage: FunctionComponent = observer(() => {
scrollToBottom();
}, [messages]);
- const callBot = async (userAddr, dispatch, prompt) => {
- // setMessages([
- // ...messages,
- // {
- // isUser: true,
- // msg: prompt,
- // },
- // ]);
- // setPrompt('');
-
+ const callBot = async (
+ userAddr,
+ dispatch,
+ prompt,
+ pairContractAddr,
+ chosenOption
+ ) => {
let endPoint = '';
- if (choose_option === OptionEnum.SWAP) {
+ if (chosenOption === OptionEnum.SWAP) {
endPoint = `${BACKEND_URL}/swapNative`;
+ dispatch({
+ type: 'chat',
+ payload: {
+ isUser: true,
+ msg: prompt,
+ },
+ });
try {
const resp = await fetch(endPoint, {
method: 'POST',
@@ -148,18 +139,20 @@ export const ChatbotPage: FunctionComponent = observer(() => {
},
body: JSON.stringify({
user_address: userAddr,
- user_input: 'Swap',
+ user_input: prompt,
+ pair_contract: pairContractAddr,
}),
});
const data = await resp.json();
console.log(data);
+ const { answer, msg } = data;
+ const msgObject = JSON.parse(msg);
const {
Action: action,
- Comment: botCmt,
Pair_contract: contractAddr,
inputamout: inputAmount,
Parameters: params,
- } = data;
+ } = msgObject;
const executeMsg = params.msg;
const amount = inputAmount
? [{ amount: inputAmount, denom: 'orai' }]
@@ -171,11 +164,12 @@ export const ChatbotPage: FunctionComponent = observer(() => {
executeMsg,
amount
);
+ const { transactionHash } = result;
dispatch({
type: 'chat',
payload: {
isUser: false,
- msg: botCmt,
+ msg: `${answer}. Go to here https://testnet.scan.orai.io/txs/${transactionHash} to see transaction`,
},
});
console.log(result);
@@ -354,9 +348,24 @@ export const ChatbotPage: FunctionComponent = observer(() => {
type="text"
placeholder="Ask anything..."
/>
-
+ {
+ dispatch({
+ type: 'reset',
+ });
+ }}
+ className={`fas fa-trash-alt ${style.iconTrash}`}
+ />
callBot(userAddr, dispatch, prompt)}
+ onClick={() =>
+ callBot(
+ userAddr,
+ dispatch,
+ prompt,
+ pairContractAddr,
+ chosenOption
+ )
+ }
// onClick={() => testChatUI()}
style={{ cursor: 'pointer' }}
className="arrow-up-square"
@@ -364,16 +373,23 @@ export const ChatbotPage: FunctionComponent = observer(() => {
src={require('../../public/assets/img/arrow-up-square.svg')}
/>
-
-
+
+
+
+
+
+ dispatch({
+ payload: e.target.value,
+ type: 'on_change_pair_contract_addr',
+ })
+ }
+ type="text"
+ />
+
diff --git a/packages/extension/src/pages/chatbot/style.module.scss b/packages/extension/src/pages/chatbot/style.module.scss
index 966e4f83..8c9c18ce 100644
--- a/packages/extension/src/pages/chatbot/style.module.scss
+++ b/packages/extension/src/pages/chatbot/style.module.scss
@@ -103,6 +103,7 @@
padding: 16px;
p {
+ word-break: break-all;
font-size: 12px;
color: var(--white);
font-weight: bold;
@@ -129,6 +130,7 @@
border-radius: 24px 24px 24px 0px;
padding: 16px;
p {
+ word-break: break-all;
font-size: 12px;
margin: 0;
color: #64578c;
@@ -136,3 +138,10 @@
line-height: var(--text-line-height);
}
}
+
+.iconTrash {
+ color: red;
+ font-size: 30px;
+ padding: 0 10px;
+ cursor: pointer;
+}