"use client"; import { useEffect, useState } from "react"; import { useSearchParams } from "next/navigation"; import { useAuth } from "@/src/app/providers/auth-provider"; import { useDocumentManagementStore } from "@/features/document-management/model/store"; import { useFolderManagementStore } from "@/features/folder-management/model/store"; import { useDocumentStore } from "@/entities/document/model/store"; import { useFolderStore } from "@/entities/folder/model/store"; import { Spinner } from "@/shared/ui/spinner"; import { Header, CreateInput, FolderView, RootView } from "@/widgets/documents"; import { Button } from "@/shared/ui/button"; import { Plus, Folder } from "lucide-react"; import { DocumentsPageSkeleton } from "@/shared/ui/skeleton"; const DocumentsPage = () => { const { user } = useAuth(); const searchParams = useSearchParams(); const currentFolderId = searchParams?.get('folder'); // Use management stores for operations const documentManagement = useDocumentManagementStore(); const folderManagement = useFolderManagementStore(); // Use entity stores for state const documentStore = useDocumentStore(); const folderStore = useFolderStore(); const documents = documentStore.documents; const folders = folderStore.folders; const isLoading = documentStore.isLoading || folderStore.isLoading; // Destructure specific functions const { fetchDocuments, createDocument } = documentManagement; const { fetchFolders, createFolder } = folderManagement; const [isCreatingFolder, setIsCreatingFolder] = useState(false); const [newFolderName, setNewFolderName] = useState(''); const [refreshKey, setRefreshKey] = useState(0); // Fetch initial data useEffect(() => { fetchDocuments(); fetchFolders(); }, []); // eslint-disable-line react-hooks/exhaustive-deps const handleCreateFolder = async () => { if (!newFolderName.trim()) return; const newFolder = await createFolder(newFolderName, currentFolderId); if (newFolder) { setNewFolderName(''); setIsCreatingFolder(false); // Refresh data to show the new folder fetchFolders(); if (currentFolderId) { setRefreshKey(prev => prev + 1); } } }; const handleCreateDocumentFromHeader = async () => { await createDocument(currentFolderId); if (currentFolderId) { setRefreshKey(prev => prev + 1); } }; const handleNavigateToFolder = (folderId: string) => { window.history.pushState({}, '', `/documents?folder=${folderId}`); window.dispatchEvent(new Event('popstate')); }; const handleGoBack = () => { window.history.back(); }; const handleFolderDeleted = () => { // Refresh folders list fetchFolders(); fetchDocuments(); // Force refresh if we're in a folder view if (currentFolderId) { setRefreshKey(prev => prev + 1); } }; // Show loading skeleton while data is being fetched if (isLoading) { return (