Skip to content

Commit 0712fe6

Browse files
author
Zhongyi
committed
Fix bug.
1 parent c8d5147 commit 0712fe6

File tree

11 files changed

+47
-162
lines changed

11 files changed

+47
-162
lines changed

.github/workflows/submit.yml

Lines changed: 0 additions & 34 deletions
This file was deleted.

background/messages/openai_summarize.ts

Lines changed: 0 additions & 98 deletions
This file was deleted.

background/messages/openai_translate.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import type { PlasmoMessaging } from "@plasmohq/messaging";
22
import { Configuration, OpenAIApi } from "openai";
33
import fetchAdapter from "@vespaiach/axios-fetch-adapter";
44

5-
const handler: PlasmoMessaging.MessageHandler<{ message: string }> = async (req, res) => {
5+
const handler: PlasmoMessaging.MessageHandler<{ text: string, openaiKey: string }> = async (req, res) => {
66
const configuration = new Configuration({
7-
apiKey: "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"
7+
apiKey: req.body.openaiKey,
88
});
99
const openai = new OpenAIApi(configuration);
1010

1111
await openai.createCompletion({
1212
model: "text-davinci-003",
13-
prompt: "Translate to Simplified Chinese, returns the HTML tags in the original text:\n\n" + req.body,
13+
prompt: "Translate to Simplified Chinese, returns the HTML tags in the original text:\n\n" + req.body.text,
1414
temperature: 0.7,
1515
max_tokens: 60,
1616
top_p: 1.0,

components/chat_article.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ function ChatArticle () {
3131

3232
return (
3333
<Rnd
34+
id="rs-chat-container"
3435
ref={e => {
3536
this.rnf = e;
3637
}}

components/chat_messgae.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useEffect, useState } from "react";
22
import { getLatestState } from "~utils/state";
33
import { ChatMessage, ChatMessageContext } from "~provider/chat";
4+
import { SettingContext } from "~provider/setting";
45

56
const ChatUserMessage = (props) => {
67
const { chatScrollRef } = React.useContext(ChatMessageContext);
@@ -25,6 +26,7 @@ const ChatUserMessage = (props) => {
2526

2627
const ChatAssistantMessage = (props) => {
2728
const [message, setMessage] = useState("");
29+
const { settingObject: { openaiKey } } = React.useContext(SettingContext);
2830
const { messages, setMessages, chatScrollRef, isLoading, setIsLoading } = React.useContext(ChatMessageContext);
2931

3032
useEffect(() => {
@@ -38,7 +40,7 @@ const ChatAssistantMessage = (props) => {
3840
function handleMessages () {
3941
const threshold = 4096 - 512;
4042

41-
let limitMessages = []
43+
let limitMessages = [];
4244
let currentLength = 0;
4345

4446
for (let i = messages.length - 1; i >= 1; i--) {
@@ -55,9 +57,10 @@ const ChatAssistantMessage = (props) => {
5557
}
5658

5759
const callOpenAI = function () {
60+
// check openaiKey
5861
const myHeaders = new Headers();
5962
myHeaders.append("Content-Type", "application/json");
60-
myHeaders.append("Authorization", "Bearer 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");
63+
myHeaders.append("Authorization", `Bearer ${openaiKey}`);
6164

6265
const raw = JSON.stringify({
6366
"model": "gpt-3.5-turbo-0301",
@@ -78,7 +81,13 @@ const ChatAssistantMessage = (props) => {
7881
const stream = response.body;
7982
const reader = stream.getReader();
8083

81-
// read from the stream
84+
if (!response.ok) {
85+
setMessage("请检查 API Key 是否正确,「Settings -> OpenAI Key`」");
86+
setIsLoading(false);
87+
88+
return
89+
}
90+
8291
function readStream () {
8392
reader.read().then(async ({ done, value }) => {
8493
if (done) {
@@ -130,11 +139,6 @@ const ChatAssistantMessage = (props) => {
130139
}
131140

132141
readStream();
133-
134-
})
135-
.catch(error => {
136-
setIsLoading(false);
137-
console.log("error", error);
138142
});
139143

140144
};

components/openai.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,18 @@ function OpenAI () {
1313

1414
const handleOpenaiButtonClick = function () {
1515
setButtonState(!buttonState);
16+
const openai = document.querySelectorAll("plasmo-csui")[0]
17+
.shadowRoot
18+
.querySelector<HTMLElement>("#rs-chat-container");
1619

17-
// const openai = document.querySelectorAll("plasmo-csui")[0]
18-
// .shadowRoot
19-
// .querySelector<HTMLElement>("#rs-openai-chat");
20-
//
21-
// openai.style.display = "block";
20+
openai.style.display = !buttonState ? "block" : "none";
2221

2322
};
2423

2524
return (
2625
<div className={"setting select-none"}>
2726
<Tooltip message={"OpenAI"}>
28-
<button className={"outline-none"}>
27+
<button className={"outline-none"} onClick={handleOpenaiButtonClick}>
2928
<IconOpenAI />
3029
</button>
3130
</Tooltip>

components/setting.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import PageWidthLeft from "data-base64:~assets/page-width-left.svg";
99
import PageWidthRight from "data-base64:~assets/page-width-right.svg";
1010
import IconSetting from "react:~/assets/setting-config.svg";
1111
import Tooltip from "~components/tooltip";
12-
import { debounce } from "~utils/debounce";
1312

1413
export enum EnumLineSpacing {
1514
Small = "1.4em",
@@ -129,14 +128,16 @@ function TranslateServiceSelect () {
129128

130129
function OpenAIKeyInput () {
131130
const { settingObject: { openaiKey }, setSetting } = useContext(SettingContext);
131+
const [value, setValue] = React.useState(openaiKey);
132132

133-
const handleOpenaiApiKeyChange = debounce(async function (e: React.ChangeEvent<HTMLInputElement>) {
134-
await setSetting({ openaiKey: e.target.value });
135-
}, 500);
133+
const handleOpenaiApiKeyChange = function (e: React.ChangeEvent<HTMLInputElement>) {
134+
setValue(e.target.value);
135+
void setSetting({ openaiKey: e.target.value });
136+
}
136137

137138
return (
138-
<input type="text" value={openaiKey} onChange={handleOpenaiApiKeyChange}
139-
className={"text-[var(--setting-foreground)] text-[16px] outline-none p-[4px] bg-[white]"} />
139+
<input type="text" value={value} onChange={handleOpenaiApiKeyChange}
140+
className={"text-[var(--setting-foreground)] text-[12px] p-[4px] bg-[white] w-full"} />
140141
);
141142
}
142143

components/tranlator.tsx

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ const TRANSLATED_TAG = "rs-translated";
1212

1313
export const TRANSLATED_RESULT = "rs-translated-result";
1414

15-
export const translateAnchor = async function (anchor: Element, translateService: string) {
16-
15+
export const translateAnchor = async function (anchor: Element, translateService: string, openaiKey?: string) {
1716
if (anchor.getAttribute(TRANSLATED_TAG)) {
1817
return;
1918
}
@@ -37,7 +36,7 @@ export const translateAnchor = async function (anchor: Element, translateService
3736
const message = await sendToBackground({
3837
// @ts-ignore
3938
name: translateService,
40-
body: translateService === EnumTranslateServices.TencentTranslate ? anchor.textContent : anchor.outerHTML
39+
body: buildRequestBody(translateService, anchor, openaiKey)
4140
});
4241
console.log(message.message);
4342
const resp = JSON.parse(message.message);
@@ -58,3 +57,16 @@ export const translateAnchor = async function (anchor: Element, translateService
5857
console.log(e);
5958
}
6059
};
60+
61+
const buildRequestBody = (translateService: string, anchor: Element, openaiKey: string) => {
62+
if (translateService === EnumTranslateServices.TencentTranslate) {
63+
return anchor.textContent;
64+
} else if (translateService === EnumTranslateServices.GoogleTranslate) {
65+
return anchor.outerHTML;
66+
} else if (translateService === EnumTranslateServices.OpenaiTranslate) {
67+
return {
68+
"openaiKey": openaiKey,
69+
"text": anchor.outerHTML
70+
};
71+
}
72+
}

components/translate.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function Translate () {
1515
entries => {
1616
for (const entry of entries) {
1717
if (entry.isIntersecting) {
18-
void translateAnchor(entry.target, settingObject.translateService);
18+
void translateAnchor(entry.target, settingObject.translateService, settingObject.openaiKey);
1919
} else {
2020
// do nothing
2121
}

content.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,11 @@ function ContainerWrap ({ children }: { children: ReactNode }) {
9999
function Title ({ title }: { title: string }) {
100100
const { translateOn } = useContext(ReaderContext);
101101
const ref = useRef<HTMLHeadingElement>(null);
102-
const { settingObject: { translateService } } = useContext(SettingContext);
102+
const { settingObject: { translateService, openaiKey } } = useContext(SettingContext);
103103

104104
useEffect(() => {
105105
if (translateOn && ref && ref.current) {
106-
void translateAnchor(ref.current, translateService);
106+
void translateAnchor(ref.current, translateService, openaiKey);
107107
}
108108
}, [translateOn, ref, ref.current]);
109109

0 commit comments

Comments
 (0)