coze-realtime/src/components/AntechamberReport/index.tsx

51 lines
1.7 KiB
TypeScript

import { useContext, useEffect } from "react";
import { ReportContext } from "../Provider/ReportResolveProvider";
import { fetchReport } from "@/apis/user";
import { useSearchParams } from "react-router-dom";
import { useAbortController } from "@/hooks/useAbortController";
import { RealtimeClientContext } from "../Provider/RealtimeClientProvider";
export default function AntechamberReport() {
const [searchParams] = useSearchParams();
const token = searchParams.get("token") || '';
const reportId = searchParams.get("reportId") || '';
const reportType = searchParams.get("reportType") || '';
const { setHasHandledReport,hasHandledReport } = useContext(ReportContext);
const { getSignal } = useAbortController();
const { handleConnect } = useContext(RealtimeClientContext);
const getReport = async () => {
try {
const { result, message } = await fetchReport({
params:{Type:reportType,Id:reportId},
options: {
signal: getSignal(),
headers: {
"Authorization": `Bearer ${encodeURIComponent(token)}`
}
}
});
if (message) {
console.log(message);
} else {
handleConnect({initMessage:result as string});
setHasHandledReport(true)
}
} catch (error: any) {
if (error.name !== 'AbortError') {
console.error('获取报告失败:', error);
}
}
}
useEffect(() => {
if(reportId && reportType && !hasHandledReport){
getReport();
}
}, [reportId, reportType,hasHandledReport]);
return <></>;
}