@@ -25,7 +25,12 @@ import Salaries from "@/components/Admin/Job/Salaries";
2525import SelectionProcedure from "@/components/Admin/Job/SelectionProcedure" ;
2626import Clashes from "@/components/Admin/Job/Clashes" ;
2727import JobAnalytics from "@/components/Admin/Job/JobAnalytics" ;
28- import { ClashesFC } from "@/dto/Clashes" ;
28+ import {
29+ ClashesFC ,
30+ EMPTY_CLASHES ,
31+ isValidClashesResponse ,
32+ normalizeClashesResponse ,
33+ } from "@/dto/Clashes" ;
2934const currentStatusOptions = [
3035 "INITIALIZED" ,
3136 "SCHEDULED" ,
@@ -42,7 +47,7 @@ const currentStatusOptions = [
4247
4348const JobDetailPage = ( { params } : { params : { jobId : string } } ) => {
4449 const [ job , setData ] = useState < JobDetailFC > ( null ) ;
45- const [ clashes , setClashes ] = useState < ClashesFC > ( null ) ;
50+ const [ clashes , setClashes ] = useState < ClashesFC > ( EMPTY_CLASHES ) ;
4651 const [ loading , setLoading ] = useState ( true ) ;
4752 const [ editMode , setEditMode ] = useState ( false ) ;
4853 const [ formData , setFormData ] = useState ( null ) ;
@@ -87,25 +92,32 @@ const JobDetailPage = ({ params }: { params: { jobId: string } }) => {
8792 useEffect ( ( ) => {
8893 const fetchData = async ( ) => {
8994 try {
90- const [
91- jobDetailData ,
92- jafDetailsData ,
93- recruiterData ,
94- facultyData ,
95- clashes ,
96- ] = await Promise . all ( [
95+ const [ jobDetailData , jafDetailsData , recruiterData , facultyData ] =
96+ await Promise . all ( [
9797 fetchJobById ( params . jobId ) ,
9898 getJafDetails ( ) ,
9999 fetchRecruiterData ( ) ,
100100 fetchFaculties ( ) ,
101- fetchClashes ( params . jobId ) ,
102101 ] ) ;
103102 setJafDetails ( jafDetailsData ) ;
104103 setData ( jobDetailData ) ;
105104 setFormData ( jobDetailData ) ;
106105 setFacultyData ( facultyData ) ;
107- setClashes ( clashes ) ;
106+ try {
107+ const clashesData = await fetchClashes ( params . jobId ) ;
108+ const normalizedClashes = normalizeClashesResponse ( clashesData ) ;
109+
110+ if ( ! isValidClashesResponse ( clashesData ) ) {
111+ toast . error ( "Could not load clashes for this job" ) ;
112+ }
113+
114+ setClashes ( normalizedClashes ) ;
115+ } catch ( _error ) {
116+ setClashes ( EMPTY_CLASHES ) ;
117+ toast . error ( "Could not load clashes for this job" ) ;
118+ }
108119 } catch ( error ) {
120+ setClashes ( EMPTY_CLASHES ) ;
109121 toast . error ( "Error fetching data" ) ;
110122 } finally {
111123 setLoading ( false ) ;
@@ -702,7 +714,7 @@ const JobDetailPage = ({ params }: { params: { jobId: string } }) => {
702714 loading = { loading }
703715 />
704716 { job && < JobAnalytics jobId = { job . id } /> }
705- { clashes ? < Clashes clashes = { clashes } /> : < Loader /> }
717+ < Clashes clashes = { clashes } />
706718 </ div >
707719 ) }
708720 </ div >
0 commit comments