import { DefaultTooltip, KeenIcon, useDataGrid } from '@/components'; import { useManageNotificationContext } from '../hooks/useManageNotificationContext'; import { Button } from '@/components/ui/button'; import { useCallback, useEffect, useState } from 'react'; import { toast } from 'sonner'; import { DateRangePicker } from '@/pages/dashboards/home/blocks'; const formatDate = (date: Date): string => date.toISOString().split('T')[0]; const ListToolBar = () => { const { table, reload } = useDataGrid(); const { handleAddDialog } = useManageNotificationContext(); const [dateRange, setDateRange] = useState({ from: '', to: '' }); const [searchValue, setSearchValue] = useState( (table.getColumn('content')?.getFilterValue() as string) ?? '' ); useEffect(() => { const today = new Date(); const formatted = formatDate(today); setDateRange({ from: formatted, to: formatted }); }, []); useEffect(() => { const timer = setTimeout(() => { table.getColumn('content')?.setFilterValue(searchValue); table.setPageIndex(0); }, 200); return () => clearTimeout(timer); }, [searchValue, table]); useEffect(() => { const today = new Date(); const formatted = formatDate(today); const initialDateRange = { from: formatted, to: formatted }; setDateRange(initialDateRange); try { table.getColumn('created_at')?.setFilterValue(initialDateRange); } catch (error) { toast.error('Error applying initial date filter'); console.error('Initial date filter error:', error); } }, []); const handleClearAllFilters = () => { const today = new Date(); const resetDateRange = { from: formatDate(today), to: formatDate(today) }; setSearchValue(''); setDateRange(resetDateRange); table.getColumn('content')?.setFilterValue(''); table.getColumn('created_at')?.setFilterValue(resetDateRange); setTimeout(() => { table.setPageIndex(0); reload(); }, 0); }; useEffect(() => { try { table.getColumn('created_at')?.setFilterValue(dateRange); } catch (error) { toast.error('Error applying date filter'); console.error('Date filter error:', error); } }, [dateRange]); useEffect(() => { const checkNewDay = () => { const now = new Date(); const formattedNow = formatDate(now); if (formattedNow !== dateRange.from || formattedNow !== dateRange.to) { setDateRange({ from: formattedNow, to: formattedNow }); } }; const interval = setInterval(checkNewDay, 60 * 1000); return () => clearInterval(interval); }, [dateRange]); return (
{/* */}
); }; export { ListToolBar };