@@ -29,6 +29,7 @@ import filterOutlineIcon from 'assets/icons/filter-outline.svg';
2929import './ReportsListPage.scss' ;
3030
3131type FilterOption = 'all' | 'bookmarked' ;
32+ type SortDirection = 'desc' | 'asc' ;
3233
3334/**
3435 * Page component for displaying a list of all medical reports.
@@ -38,6 +39,7 @@ const ReportsListPage: React.FC = () => {
3839 const history = useHistory ( ) ;
3940 const queryClient = useQueryClient ( ) ;
4041 const [ filter , setFilter ] = useState < FilterOption > ( 'all' ) ;
42+ const [ sortDirection , setSortDirection ] = useState < SortDirection > ( 'desc' ) ; // Default sort by newest first
4143 const [ showToast , setShowToast ] = useState ( false ) ;
4244 const [ toastMessage , setToastMessage ] = useState ( '' ) ;
4345
@@ -48,11 +50,18 @@ const ReportsListPage: React.FC = () => {
4850
4951 const { mutate : markAsRead } = useMarkReportAsRead ( ) ;
5052
51- // Filter reports based on selected filter
53+ // Filter and sort reports based on selected filter and sort direction
5254 const filteredReports = useMemo ( ( ) => {
53- if ( filter === 'all' ) return reports ;
54- return reports . filter ( report => report . bookmarked ) ;
55- } , [ reports , filter ] ) ;
55+ // First, filter the reports
56+ const filtered = filter === 'all' ? reports : reports . filter ( report => report . bookmarked ) ;
57+
58+ // Then, sort the filtered reports by date
59+ return [ ...filtered ] . sort ( ( a , b ) => {
60+ const dateA = new Date ( a . createdAt ) . getTime ( ) ;
61+ const dateB = new Date ( b . createdAt ) . getTime ( ) ;
62+ return sortDirection === 'desc' ? dateB - dateA : dateA - dateB ;
63+ } ) ;
64+ } , [ reports , filter , sortDirection ] ) ;
5665
5766 // Check if there are any bookmarked reports
5867 const hasBookmarkedReports = useMemo ( ( ) => {
@@ -104,8 +113,8 @@ const ReportsListPage: React.FC = () => {
104113 } ;
105114
106115 const handleSortClick = ( ) => {
107- setToastMessage ( t ( 'list.sortButton' , { ns : 'report' } ) ) ;
108- setShowToast ( true ) ;
116+ const newSortDirection = sortDirection === 'desc' ? 'asc' : 'desc' ;
117+ setSortDirection ( newSortDirection ) ;
109118 } ;
110119
111120 const handleFilterClick = ( ) => {
0 commit comments