51 lines
1.7 KiB
TypeScript
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 <></>;
|
|
}
|
|
|