'use client'; import fileDownload from 'js-file-download'; import { toast } from 'react-toastify'; import { IconCSV } from '@/components/Icons'; import MiniButton from '@/components/ui/MiniButton'; import Overlay from '@/components/ui/Overlay'; import DataLoader from '@/components/wrap/DataLoader'; import { useLibrary } from '@/context/LibraryContext'; import { IRenameLocationData } from '@/models/library'; import { useAppLayoutStore } from '@/stores/appLayout'; import { useDialogsStore } from '@/stores/dialogs'; import { useLibraryFilter, useLibrarySearchStore } from '@/stores/librarySearch'; import { information } from '@/utils/labels'; import { convertToCSV } from '@/utils/utils'; import TableLibraryItems from './TableLibraryItems'; import ToolbarSearch from './ToolbarSearch'; import ViewSideLocation from './ViewSideLocation'; function LibraryPage() { const library = useLibrary(); const noNavigation = useAppLayoutStore(state => state.noNavigation); const folderMode = useLibrarySearchStore(state => state.folderMode); const location = useLibrarySearchStore(state => state.location); const setLocation = useLibrarySearchStore(state => state.setLocation); const filter = useLibraryFilter(); const items = library.applyFilter(filter); const showChangeLocation = useDialogsStore(state => state.showChangeLocation); function handleRenameLocation(newLocation: string) { const data: IRenameLocationData = { target: location, new_location: newLocation }; library.renameLocation(data, () => { setLocation(newLocation); toast.success(information.locationRenamed); }); } function handleDownloadCSV() { if (items.length === 0) { toast.error(information.noDataToExport); return; } const blob = convertToCSV(items); try { fileDownload(blob, 'library.csv', 'text/csv;charset=utf-8;'); } catch (error) { console.error(error); } } return ( } onClick={handleDownloadCSV} />
showChangeLocation({ initial: location, onChangeLocation: handleRenameLocation })} />
); } export default LibraryPage;