From de44a74dde05edfd3c47d0630543682ffd843559 Mon Sep 17 00:00:00 2001 From: Mahen Date: Thu, 21 May 2026 06:32:26 +0700 Subject: [PATCH] fix: add refetch data listener --- src/hooks/useAnalyzeText.ts | 2 ++ src/hooks/useDashboard.ts | 4 ++++ src/hooks/useReviewTable.ts | 2 ++ src/hooks/useWordCloud.ts | 2 ++ 4 files changed, 10 insertions(+) diff --git a/src/hooks/useAnalyzeText.ts b/src/hooks/useAnalyzeText.ts index 2837a2b..d5535ad 100644 --- a/src/hooks/useAnalyzeText.ts +++ b/src/hooks/useAnalyzeText.ts @@ -175,6 +175,8 @@ export const useAnalyseText = () => { setResult(aiResult); setProgress({ status: "Selesai", percent: 100 }); + window.dispatchEvent(new CustomEvent("analysis-complete")); + setTimeout(() => { document .getElementById("analysis-result") diff --git a/src/hooks/useDashboard.ts b/src/hooks/useDashboard.ts index 09c2165..71e42fa 100644 --- a/src/hooks/useDashboard.ts +++ b/src/hooks/useDashboard.ts @@ -42,6 +42,8 @@ export const useDashboards = () => { } fetchStats(); + window.addEventListener("analysis-complete", fetchStats); + return () => window.removeEventListener("analysis-complete", fetchStats); }, []); useEffect(() => { @@ -57,6 +59,8 @@ export const useDashboards = () => { } fetchModelData(); + window.addEventListener("analysis-complete", fetchModelData); + return () => window.removeEventListener("analysis-complete", fetchModelData); }, []); const filteredReviews = useMemo(() => { diff --git a/src/hooks/useReviewTable.ts b/src/hooks/useReviewTable.ts index a00c7d5..80bcc77 100644 --- a/src/hooks/useReviewTable.ts +++ b/src/hooks/useReviewTable.ts @@ -40,6 +40,8 @@ export const useReviewTable = ( } }; getReviewData(); + window.addEventListener("analysis-complete", getReviewData); + return () => window.removeEventListener("analysis-complete", getReviewData); }, []); useEffect(() => { diff --git a/src/hooks/useWordCloud.ts b/src/hooks/useWordCloud.ts index d901266..af7483c 100644 --- a/src/hooks/useWordCloud.ts +++ b/src/hooks/useWordCloud.ts @@ -80,6 +80,8 @@ export const useWordCloud = () => { }; fetchWords(); + window.addEventListener("analysis-complete", fetchWords); + return () => window.removeEventListener("analysis-complete", fetchWords); }, []); const maxValue = Math.max(...words.map((w) => w.value), 1);