@ -41,11 +41,7 @@ import {
PostAdd ,
PostAdd ,
Visibility ,
Visibility ,
FolderOpen ,
FolderOpen ,
QueryStats ,
Psychology ,
Send ,
Send ,
AutoFixHigh ,
StarOutline ,
AutoAwesome ,
AutoAwesome ,
} from '@mui/icons-material' ;
} from '@mui/icons-material' ;
import type { BookmarkedItem , Collection , CollectionFilter , CollectionStats } from '../../types/collection' ;
import type { BookmarkedItem , Collection , CollectionFilter , CollectionStats } from '../../types/collection' ;
@ -67,7 +63,7 @@ const MyCollectionPage = ({}: MyCollectionPageProps) => {
const [ menuAnchor , setMenuAnchor ] = useState < { [ key : string ] : HTMLElement | null } > ( { } ) ;
const [ menuAnchor , setMenuAnchor ] = useState < { [ key : string ] : HTMLElement | null } > ( { } ) ;
const [ showQueryDialog , setShowQueryDialog ] = useState ( false ) ;
const [ showQueryDialog , setShowQueryDialog ] = useState ( false ) ;
const [ queryText , setQueryText ] = useState ( '' ) ;
const [ queryText , setQueryText ] = useState ( '' ) ;
const [ stats , setStats ] = useState < CollectionStats > ( {
const [ /* stats */ ] = useState < CollectionStats > ( {
totalItems : 0 ,
totalItems : 0 ,
unreadItems : 0 ,
unreadItems : 0 ,
favoriteItems : 0 ,
favoriteItems : 0 ,
@ -231,25 +227,25 @@ const MyCollectionPage = ({}: MyCollectionPageProps) => {
setFilteredItems ( mockItems ) ;
setFilteredItems ( mockItems ) ;
// Calculate stats
// Calculate stats
const categories = [ . . . new Set ( mockItems . map ( item = > item . category ) . filter ( Boolean ) ) ] ;
// const categories = [...new Set(mockItems.map(item => item.category).filter(Boolean))];
const types = [ . . . new Set ( mockItems . map ( item = > item . type ) ) ] ;
// const types = [...new Set(mockItems.map(item => item.type))];
const recentDate = new Date ( Date . now ( ) - 1000 * 60 * 60 * 24 * 7 ) ;
// const recentDate = new Date(Date.now() - 1000 * 60 * 60 * 24 * 7);
const newStats : CollectionStats = {
// const newStats: CollectionStats = {
totalItems : mockItems.length ,
// totalItems: mockItems.length,
unreadItems : mockItems.filter ( item = > ! item . isRead ) . length ,
// unreadItems: mockItems.filter(item => !item.isRead).length,
favoriteItems : mockItems.filter ( item = > item . isFavorite ) . length ,
// favoriteItems: mockItems.filter(item => item.isFavorite).length,
byType : types.reduce ( ( acc , type ) = > ( {
// byType: types.reduce((acc, type) => ({
. . . acc ,
// ...acc,
[ type ] : mockItems . filter ( item = > item . type === type ) . length
// [type]: mockItems.filter(item => item.type === type).length
} ) , { } ) ,
// }), {}),
byCategory : categories.reduce ( ( acc , category ) = > ( {
// byCategory: categories.reduce((acc, category) => ({
. . . acc ,
// ...acc,
[ category || 'Uncategorized' ] : mockItems . filter ( item = > item . category === category ) . length
// [category || 'Uncategorized']: mockItems.filter(item => item.category === category).length
} ) , { } ) ,
// }), {}),
recentlyAdded : mockItems.filter ( item = > item . bookmarkedAt > recentDate ) . length ,
// recentlyAdded: mockItems.filter(item => item.bookmarkedAt > recentDate).length,
} ;
// };
setStats ( newStats ) ;
// setStats(newStats);
} , [ ] ) ;
} , [ ] ) ;
// Filter and sort items
// Filter and sort items