@@ -32,17 +32,19 @@ export default function ArchivedAccordion({
3232 setLocationFilter,
3333} : ArchivedAccordionProps ) {
3434 const theme = useTheme ( ) ;
35- const showToast = useCustomToast ( ) ;
36- const showToastRef = useRef ( showToast ) ;
35+ const toast = useCustomToast ( ) ;
36+ const toastRef = useRef ( toast ) ;
3737
3838 const [ isOpen , setIsOpen ] = useState ( false ) ;
3939 const [ subjects , setSubjects ] = useState < Item [ ] > ( [ ] ) ;
40- const [ selectedSubjectIds , setSelectedSubjectIds ] = useState < number [ ] > ( [ ] ) ;
4140 const [ locations , setLocations ] = useState < Item [ ] > ( [ ] ) ;
41+ const [ selectedSubjectIds , setSelectedSubjectIds ] = useState < number [ ] > ( [ ] ) ;
4242 const [ selectedLocationIds , setSelectedLocationIds ] = useState < number [ ] > ( [ ] ) ;
43+ const [ loaded , setLoaded ] = useState ( false ) ;
4344
4445 useEffect ( ( ) => {
45- async function fetchSubjects ( ) {
46+ setLoaded ( false ) ;
47+ async function fetchArchivedData ( ) {
4648 try {
4749 const response = await fetch ( '/api/filter/subjects?archived=true' ) ;
4850 if ( ! response . ok ) {
@@ -55,7 +57,7 @@ export default function ArchivedAccordion({
5557 errorMessage += response . statusText || 'Unknown error' ;
5658 }
5759 console . error ( errorMessage ) ;
58- showToastRef . current ( { description : errorMessage , status : 'error' } ) ;
60+ toastRef . current ( { description : errorMessage , status : 'error' } ) ;
5961 return ;
6062 }
6163 const data = await response . json ( ) ;
@@ -66,20 +68,15 @@ export default function ArchivedAccordion({
6668 color : subject . colorGroup . colorCodes [ 1 ] ,
6769 } ) )
6870 ) ;
69- } catch ( error : any ) {
70- const errorMessage = error ?. message
71- ? `Failed to fetch subjects: ${ error . message } `
71+ } catch ( err : any ) {
72+ const errorMessage = err ?. message
73+ ? `Failed to fetch subjects: ${ err . message } `
7274 : 'Failed to fetch subjects.' ;
73- console . error ( errorMessage , error ) ;
74- showToastRef . current ( { description : errorMessage , status : 'error' } ) ;
75+ console . error ( errorMessage , err ) ;
76+ toastRef . current ( { description : errorMessage , status : 'error' } ) ;
77+ return ;
7578 }
76- }
7779
78- fetchSubjects ( ) ;
79- } , [ ] ) ;
80-
81- useEffect ( ( ) => {
82- async function fetchLocations ( ) {
8380 try {
8481 const response = await fetch ( '/api/filter/locations?archived=true' ) ;
8582 if ( ! response . ok ) {
@@ -92,7 +89,7 @@ export default function ArchivedAccordion({
9289 errorMessage += response . statusText || 'Unknown error' ;
9390 }
9491 console . error ( errorMessage ) ;
95- showToastRef . current ( { description : errorMessage , status : 'error' } ) ;
92+ toastRef . current ( { description : errorMessage , status : 'error' } ) ;
9693 return ;
9794 }
9895 const data = await response . json ( ) ;
@@ -103,16 +100,19 @@ export default function ArchivedAccordion({
103100 color : theme . colors . primaryBlue [ 300 ] ,
104101 } ) )
105102 ) ;
106- } catch ( error : any ) {
107- const errorMessage = error ?. message
108- ? `Failed to fetch locations: ${ error . message } `
103+ } catch ( err : any ) {
104+ const errorMessage = err ?. message
105+ ? `Failed to fetch locations: ${ err . message } `
109106 : 'Failed to fetch locations.' ;
110- console . error ( errorMessage , error ) ;
111- showToastRef . current ( { description : errorMessage , status : 'error' } ) ;
107+ console . error ( errorMessage , err ) ;
108+ toastRef . current ( { description : errorMessage , status : 'error' } ) ;
109+ return ;
112110 }
113111 }
114112
115- fetchLocations ( ) ;
113+ fetchArchivedData ( ) . finally ( ( ) => {
114+ setLoaded ( true ) ;
115+ } ) ;
116116 } , [ theme . colors . primaryBlue ] ) ;
117117
118118 const toggleSubject = useCallback (
@@ -141,6 +141,10 @@ export default function ArchivedAccordion({
141141 [ setLocationFilter ]
142142 ) ;
143143
144+ if ( loaded && subjects . length === 0 && locations . length === 0 ) {
145+ return null ;
146+ }
147+
144148 const bgColor = theme . colors . white ;
145149
146150 const renderItem = (
0 commit comments