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() {