"use client";
import { useState, useEffect } from "react";
import dynamic from "next/dynamic"; // ⬅️ PENTING
import { useUploadContext } from "../_context/upload-context";
import { Button } from "@/shared/components/ui/button";
import MetadataForm, { getInitialMetadata } from "./map/MetadataForm";
import TablePreview from "./map/TablePreview";
import { log } from "node:console";
import uploadApi from "@/shared/services/map-upload";
import { useUploadLogic } from "../_hooks/use-upload";
import { toast } from "sonner";
// 🔥 IMPORT DYNAMIC UNTUK KOMPONEN PETA
const SpatialStylePreview = dynamic(() => import("./map/StylePreview"), {
ssr: false,
loading: () =>
Loading Map...
});
const StylingLayers = dynamic(() => import("./map/StylingLayers"), {
ssr: false
});
export default function StepValidate() {
const { state, setState, goToStep } = useUploadContext();
const {
loading,
handleSaveToDatabase
} = useUploadLogic();
// State lokal untuk Metadata & Style
// const [metadata, setMetadata] = useState(state.result?.data.metadata_suggest || {});
const [metadata, setMetadata] = useState(() =>
getInitialMetadata(state.result?.data.metadata_suggest || {})
);
const [styleConfig, setStyleConfig] = useState({"styleType": "sld","sldContent": "\n\n\n \n layer\n \n \n \n \n \n \n #3388ff\n 0.5\n \n \n #232323\n 1\n \n \n \n \n \n \n \n\n"});
// Ambil dummy geosStyle atau fetch dari API
const geosStyle = [{name: "Style A"}, {name: "Style B"}];
// const handleConfirm = async () => {
// const table = state.result?.data;
// const data = {
// title: metadata.title,
// columns: table.columns,
// rows: table.preview,
// author: metadata,
// style: styleConfig.sldContent
// }
// handleSaveToDatabase
// // Gabungkan metadata + style + data result -> Kirim ke API saveToDatabase
// // goToStep("SUCCESS");
// };
const handleConfirm = async () => {
// Validasi Frontend
if (!metadata.title) {
toast.warning("Judul data wajib diisi.");
return;
}
const table = state.result?.data;
const data = {
title: metadata.title,
path: state.result?.data.tmp_path,
columns: table.columns,
rows: table.preview,
author: metadata,
style: styleConfig.sldContent
}
await handleSaveToDatabase(data);
};
return (
Validasi & Styling
{/* Bagian Peta Preview */}
{/* Bagian Kontrol Style */}
{/* Bagian Metadata */}
{state.result?.data.file_name}
{/*
*/}
{/* Bagian Tabel Preview */}
{/* Bagian Info Dataset */}
Info Dataset
*AI Generate
setMetadata(updatedData)}
/>
);
}