From a3535bb5c50031ee110462cee3a79506f82241ab Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Tue, 11 Apr 2023 15:19:21 +0530 Subject: [PATCH] extension code updated --- extension/content.ts | 2 + extension/package.json | 3 +- extension/pnpm-lock.yaml | 19 +++++++ extension/popup.tsx | 4 +- extension/routes/chat.tsx | 106 ++++++++++++++++++++++++++++++------- extension/routes/login.tsx | 7 ++- 6 files changed, 119 insertions(+), 22 deletions(-) diff --git a/extension/content.ts b/extension/content.ts index ebd74eb..f6db3e1 100644 --- a/extension/content.ts +++ b/extension/content.ts @@ -88,10 +88,12 @@ const main = async () => { } else if (event.data === "pageassist-html") { console.log("pageassist-html"); let html = document.documentElement.outerHTML; + let url = window.location.href; iframe.contentWindow.postMessage({ type: "pageassist-html", html: html, + url: url, }, "*"); } }); diff --git a/extension/package.json b/extension/package.json index b21f199..cf97286 100644 --- a/extension/package.json +++ b/extension/package.json @@ -21,7 +21,8 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-markdown": "^8.0.6", - "react-router-dom": "^6.10.0" + "react-router-dom": "^6.10.0", + "react-toastify": "^9.1.2" }, "devDependencies": { "@plasmohq/prettier-plugin-sort-imports": "3.6.3", diff --git a/extension/pnpm-lock.yaml b/extension/pnpm-lock.yaml index 8cc4161..626a4a3 100644 --- a/extension/pnpm-lock.yaml +++ b/extension/pnpm-lock.yaml @@ -37,6 +37,9 @@ dependencies: react-router-dom: specifier: ^6.10.0 version: 6.10.0(react-dom@18.2.0)(react@18.2.0) + react-toastify: + specifier: ^9.1.2 + version: 9.1.2(react-dom@18.2.0)(react@18.2.0) devDependencies: '@plasmohq/prettier-plugin-sort-imports': @@ -2903,6 +2906,11 @@ packages: engines: {node: '>=0.8'} dev: false + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -5122,6 +5130,17 @@ packages: react: 18.2.0 dev: false + /react-toastify@9.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PBfzXO5jMGEtdYR5jxrORlNZZe/EuOkwvwKijMatsZZm8IZwLj01YvobeJYNjFcA6uy6CVrx2fzL9GWbhWPTDA==} + peerDependencies: + react: '>=16' + react-dom: '>=16' + dependencies: + clsx: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} diff --git a/extension/popup.tsx b/extension/popup.tsx index 4a73e35..72b76d5 100644 --- a/extension/popup.tsx +++ b/extension/popup.tsx @@ -1,7 +1,8 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query" import { MemoryRouter } from "react-router-dom" import { Routing } from "~routes" - +import { ToastContainer } from 'react-toastify'; +import 'react-toastify/dist/ReactToastify.css'; const queryClient = new QueryClient() @@ -10,6 +11,7 @@ function IndexPopup() { + ) diff --git a/extension/routes/chat.tsx b/extension/routes/chat.tsx index 2b87d88..394197b 100644 --- a/extension/routes/chat.tsx +++ b/extension/routes/chat.tsx @@ -13,6 +13,9 @@ import axios from "axios" import logoImage from "data-base64:~assets/icon.png" import ReactMarkdown from "react-markdown" import { Link, useNavigate } from "react-router-dom" +import { toast } from "react-toastify" + +import { useStorage } from "@plasmohq/storage/hook" function Chat() { type Message = { @@ -33,6 +36,7 @@ function Chat() { ]) const [history, setHistory] = useState([]) + const [userToken] = useStorage("pa-token", null) const route = useNavigate() @@ -53,25 +57,55 @@ function Chat() { return new Promise((resolve, reject) => { window.addEventListener("message", (event) => { if (event.data.type === "pageassist-html") { - resolve(event.data.html) + resolve(event.data) } else { reject("Error") } }) }) } - const sendToBot = async (message: string) => { - const html = await getHtmlFromParent() - const response = await axios.post(process.env.PLASMO_PUBLIC_API_URL!, { - user_message: message, - html: html, - history: history - }) + const sendToBot = async (message: string) => { + // @ts-ignore + const { html } = await getHtmlFromParent() + + const response = await axios.post( + `${process.env.PLASMO_PUBLIC_API_URL}/chat/chrome`, + { + user_message: message, + html: html, + history: history + } + ) return response.data } + const onSave = async () => { + const data = await getHtmlFromParent() + const response = await axios.post( + `${process.env.PLASMO_PUBLIC_API_URL}/user/save`, + data, + { + headers: { + "x-auth-token": userToken + } + } + ) + + return response.data + } + + const { mutateAsync: saveAsync, isLoading: isSaving } = useMutation(onSave, { + onSuccess: (data) => { + toast.success("Saved Successfully") + }, + onError: (er) => { + console.log(er) + toast.error("Error in saving") + } + }) + const { mutateAsync: sendToBotAsync, isLoading: isSending } = useMutation( sendToBot, { @@ -125,14 +159,15 @@ function Chat() { + +
+ +
+ + diff --git a/extension/routes/login.tsx b/extension/routes/login.tsx index 8d62482..fda79aa 100644 --- a/extension/routes/login.tsx +++ b/extension/routes/login.tsx @@ -21,7 +21,7 @@ export default function Login() { const onSubmit = async (token: string) => { const response = await axios.post( - `${process.env.PLASMO_PUBLIC_CLIENT_URL}/api/verify`, + `${process.env.PLASMO_PUBLIC_API_URL}/user/validate`, { token } @@ -39,7 +39,7 @@ export default function Login() { }, onError: (e:any) => { if (axios.isAxiosError(e)) { - setErr(e.response?.data.error) + setErr(e.response?.data.detail) } else { setErr(e?.message) } @@ -47,6 +47,9 @@ export default function Login() { } ) + + + return (