Skip to content

Commit 60e0368

Browse files
committed
fix: gpt check before send
1 parent dc6b68d commit 60e0368

File tree

2 files changed

+16
-39
lines changed

2 files changed

+16
-39
lines changed

src/pages/home/Cve/CveFooter/CveFooter.tsx

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CloseCircleFilled, CloseOutlined } from "@ant-design/icons";
22
import { Button, Layout, message } from "antd";
3-
import { FC, forwardRef, ForwardRefRenderFunction, memo, useEffect, useImperativeHandle, useRef, useState } from "react";
3+
import { FC, forwardRef, ForwardRefRenderFunction, memo, useEffect, useRef, useState } from "react";
44
import { base64toFile, contenteditableDivRange, cosUploadNomal, events, im, isSingleCve, move2end } from "../../../../utils";
55
import { ATSTATEUPDATE, FORWARDANDMERMSG, ISSETDRAFT, MUTILMSG, MUTILMSGCHANGE, REPLAYMSG } from "../../../../constants/events";
66
import CardMsgModal from "../components/CardMsgModal";
@@ -46,9 +46,8 @@ const CveFooter: ForwardRefRenderFunction<any, CveFooterProps> = ({ sendMsg, cur
4646
const appConfig = useSelector((state: RootState) => state.user.appConfig, shallowEqual);
4747
const { t, i18n } = useTranslation();
4848
const suffixRef = useRef<any>(null);
49-
const watingTimer = useRef<NodeJS.Timeout>();
5049

51-
const [watingFlag, setWatingFlag] = useState(false);
50+
const latestCurcve = useLatest(curCve);
5251

5352
useEffect(() => {
5453
events.on(REPLAYMSG, replyHandler);
@@ -87,29 +86,26 @@ const CveFooter: ForwardRefRenderFunction<any, CveFooterProps> = ({ sendMsg, cur
8786
setMsgContent("");
8887
}
8988
setMutilMsg([]);
90-
robotCheck();
9189
return () => {
9290
setDraft(curCve);
9391
};
94-
}, [curCve.conversationID, curCve.draftText,appConfig.robots]);
92+
}, [curCve.conversationID, curCve.draftText]);
9593

96-
const robotCheck = () => {
94+
const robotWaitCheck = () => {
9795
let message: MessageItem | undefined = undefined;
9896
try {
99-
message = JSON.parse(curCve.latestMsg);
97+
message = JSON.parse(latestCurcve.current.latestMsg);
10098
} catch (error) {}
10199
if (!message || TipsType.includes(message.contentType)) {
102-
updateWatingFlag(false)
103-
return;
100+
return false;
104101
}
105-
106102
const isRobotMsg = appConfig.robots.includes(message.sendID);
107103
const gapTime = Date.now() - message.sendTime;
108104
const isTimeout = gapTime >= 60000;
109105
if (!isRobotMsg && !isTimeout) {
110-
setWatingCounter(60000 - gapTime);
106+
return true;
111107
} else {
112-
updateWatingFlag(false)
108+
return false;
113109
}
114110
};
115111

@@ -397,6 +393,11 @@ const CveFooter: ForwardRefRenderFunction<any, CveFooterProps> = ({ sendMsg, cur
397393
}
398394
if (e.key === "Enter" && !e.ctrlKey) {
399395
e.preventDefault();
396+
397+
if (robotWaitCheck()) {
398+
message.info("等待回复中...");
399+
return;
400+
}
400401
if (latestContent.current && !latestFlag.current) {
401402
setFlag(true);
402403
switchMessage(replyMsg ? "quote" : atList.length > 0 ? "at" : "text");
@@ -468,24 +469,6 @@ const CveFooter: ForwardRefRenderFunction<any, CveFooterProps> = ({ sendMsg, cur
468469
typing();
469470
};
470471

471-
const setWatingCounter = (timeGap = 60000) => {
472-
if (watingTimer.current) {
473-
clearTimeout(watingTimer.current);
474-
}
475-
setWatingFlag(true);
476-
watingTimer.current = setTimeout(() => {
477-
setWatingFlag(false);
478-
}, timeGap);
479-
};
480-
481-
const updateWatingFlag = (flag: boolean) => {
482-
if (flag !== watingFlag) {
483-
setWatingFlag(flag);
484-
}
485-
};
486-
487-
useImperativeHandle(ref, () => ({ setWatingCounter, updateWatingFlag }));
488-
489472
return (
490473
<Footer className="chat_footer">
491474
{mutilSelect ? (
@@ -495,8 +478,7 @@ const CveFooter: ForwardRefRenderFunction<any, CveFooterProps> = ({ sendMsg, cur
495478
<ContentEditable
496479
className="input_div"
497480
style={{ paddingTop: replyMsg ? "32px" : "4px" }}
498-
placeholder={!watingFlag ? `${t("SendTo")} ${curCve.showName}` : "等待回复..."}
499-
disabled={watingFlag}
481+
placeholder={`${t("SendTo")} ${curCve.showName}`}
500482
ref={inputRef}
501483
html={msgContent}
502484
onChange={onChange}
@@ -512,4 +494,4 @@ const CveFooter: ForwardRefRenderFunction<any, CveFooterProps> = ({ sendMsg, cur
512494
);
513495
};
514496

515-
export default memo(forwardRef(CveFooter), (p, n) => p.curCve.conversationID === n.curCve.conversationID && p.curCve.showName === n.curCve.showName);
497+
export default memo(forwardRef(CveFooter), (p, n) => p.curCve.conversationID === n.curCve.conversationID && p.curCve.showName === n.curCve.showName && p.curCve.latestMsg === n.curCve.latestMsg);

src/pages/home/Cve/cve.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ const Home = () => {
8080
searchStatus: false,
8181
searchCve: [],
8282
});
83-
const footerRef = useRef<any>()
8483
const timer = useRef<NodeJS.Timeout | null>(null);
8584
const {
8685
loading,
@@ -204,7 +203,6 @@ const Home = () => {
204203
rs.historyMsgList = [newServerMsg, ...rs.historyMsgList.filter((ms) => ms.clientMsgID !== newServerMsg.content)];
205204
} else {
206205
rs.historyMsgList = [newServerMsg, ...rs.historyMsgList];
207-
footerRef.current.updateWatingFlag(false)
208206
}
209207
markCveHasRead(curCve, 1);
210208
}
@@ -411,9 +409,6 @@ const Home = () => {
411409
} else {
412410
im.sendMessage(sendOption, operationID)
413411
.then((res) => {
414-
if(appConfig.robots.includes(sendOption.recvID)){
415-
footerRef.current.setWatingCounter();
416-
}
417412
sendMsgCB(res, type);
418413
})
419414
.catch((err) => sendMsgCB(err, type, true));
@@ -477,7 +472,7 @@ const Home = () => {
477472
{rs.merModal && <MerModal visible={rs.merModal} close={closeMer} curCve={curCve!} imgClick={imgClick} info={rs.merData!} />}
478473
</Content>
479474

480-
{curCve && <CveFooter ref={footerRef} curCve={curCve} sendMsg={sendMsg} />}
475+
{curCve && <CveFooter curCve={curCve} sendMsg={sendMsg} />}
481476
</Layout>
482477
{curCve && <CveRightBar curCve={curCve} />}
483478
</>

0 commit comments

Comments
 (0)