Skip to content

Commit c75a1f2

Browse files
committed
fix(frontstage): store the logs
1 parent 7790152 commit c75a1f2

File tree

1 file changed

+19
-1
lines changed
  • src/frontstage/src/app/projects/[id]

1 file changed

+19
-1
lines changed

src/frontstage/src/app/projects/[id]/page.tsx

+19-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import toast from "react-hot-toast";
2828
const ProjectDetailPage: React.FC = () => {
2929
const params = useParams();
3030
const [isPolling, setIsPolling] = useState(false);
31+
const [logs, setLogs] = useState<any[]>([]);
3132

3233
const projectId = params.id as string;
3334
const {
@@ -40,14 +41,31 @@ const ProjectDetailPage: React.FC = () => {
4041
});
4142

4243
const {
43-
data: logs,
44+
data: logSet,
4445
isLoading: isLogsLoading,
4546
error: logsError,
4647
refetch: refetchLogs,
4748
} = useFetchProjectLogs<any>(projectId, {
4849
refetchInterval: isPolling ? 5000 : false, // Poll every 5 seconds if isPolling is true
4950
});
5051

52+
useEffect(() => {
53+
if (logSet.length) {
54+
const uniqueLogs = logSet.filter((newLog: { log: string; }, index: number) => {
55+
return !logs.some((existingLog, existingIndex) => {
56+
try {
57+
const parsedNewLog = JSON.parse(newLog.log);
58+
const parsedExistingLog = JSON.parse(existingLog.log);
59+
return parsedNewLog.stream === parsedExistingLog.stream && index === existingIndex;
60+
} catch {
61+
return newLog.log === existingLog.log && index === existingIndex;
62+
}
63+
});
64+
});
65+
setLogs((prevLogs) => prevLogs.concat(uniqueLogs));
66+
}
67+
}, [logSet, logs]);
68+
5169
useEffect(() => {
5270
if (project?.status === "DEPLOYING") {
5371
setIsPolling(true);

0 commit comments

Comments
 (0)