fix(scan): resolve empty medicine data and clean up linter warning

- Add local fallback using `diseaseCatalogSeed` to populate medicine recommendations in the diagnosis preview modal when API data is missing.
- Remove unused `diagnosesQuery` assignment to resolve SonarLint warning while preserving the background prefetching logic.
This commit is contained in:
seriouselly
2026-06-15 20:54:44 +07:00
parent 9cfbef4598
commit b18b98e1a7
+22 -4
View File
@@ -16,6 +16,7 @@ import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card"; import { Card, CardContent } from "@/components/ui/card";
import { Modal } from "@/components/ui/modal"; import { Modal } from "@/components/ui/modal";
import type { DiagnosisRecord } from "@zeavis/shared"; import type { DiagnosisRecord } from "@zeavis/shared";
import { diseaseCatalogSeed } from "@zeavis/shared"; // Import data seed lokal ditambahkan
import { apiClient } from "@/lib/api-client"; import { apiClient } from "@/lib/api-client";
import { trackScan, trackDiagnosisResult } from "@/lib/telemetry"; import { trackScan, trackDiagnosisResult } from "@/lib/telemetry";
import { DiagnosisResultView } from "../components/diagnose-result-view"; import { DiagnosisResultView } from "../components/diagnose-result-view";
@@ -76,7 +77,7 @@ export function ScanPage() {
const [diagnosisPreview, setDiagnosisPreview] = const [diagnosisPreview, setDiagnosisPreview] =
useState<DiagnosisRecord | null>(null); useState<DiagnosisRecord | null>(null);
const diagnosesQuery = useQuery({ useQuery({
queryKey: ["diagnoses"], queryKey: ["diagnoses"],
queryFn: () => apiClient.getDiagnoses(), queryFn: () => apiClient.getDiagnoses(),
enabled: previewOpen, enabled: previewOpen,
@@ -373,6 +374,23 @@ export function ScanPage() {
</div> </div>
)} )}
{/* Render DiagnosisResultView dengan Fallback Obat */}
{(() => {
// Fallback logic for scientific name and medicine recommendations
const seedData = diagnosisPreview.disease
? diseaseCatalogSeed.find(
(seed) =>
seed.commonName === diagnosisPreview.disease?.commonName,
)
: null;
// If the API doesn't return medicine recommendations, use the seed data as a fallback
const finalMedicines =
(diagnosisPreview.disease as any)?.medicineRecommendations ||
seedData?.medicineRecommendations ||
[];
return (
<DiagnosisResultView <DiagnosisResultView
imageUrl={ imageUrl={
previewUrl || previewUrl ||
@@ -392,10 +410,10 @@ export function ScanPage() {
} }
symptoms={diagnosisPreview.disease?.symptoms ?? []} symptoms={diagnosisPreview.disease?.symptoms ?? []}
preventions={diagnosisPreview.disease?.recommendations ?? []} preventions={diagnosisPreview.disease?.recommendations ?? []}
medicines={ medicines={finalMedicines} // Datanya terhubung ke sini!
(diagnosisPreview.disease as any)?.medicineRecommendations ?? []
}
/> />
);
})()}
{/* All Model Predictions */} {/* All Model Predictions */}
{diagnosisPreview.predictions && {diagnosisPreview.predictions &&