@@ -7,6 +7,7 @@ import { deleteTaskTimesheetLogsApi, getTaskTimesheetLogsApi, updateStatusTimesh
7
7
import moment from 'moment' ;
8
8
import { ID , TimesheetLog , TimesheetStatus , UpdateTimesheet } from '@/app/interfaces' ;
9
9
import { useTimelogFilterOptions } from './useTimelogFilterOptions' ;
10
+ import axios from 'axios' ;
10
11
11
12
interface TimesheetParams {
12
13
startDate ?: Date | string ;
@@ -25,18 +26,18 @@ const groupByDate = (items: TimesheetLog[]): GroupedTimesheet[] => {
25
26
if ( ! items ?. length ) return [ ] ;
26
27
type GroupedMap = Record < string , TimesheetLog [ ] > ;
27
28
const groupedByDate = items . reduce < GroupedMap > ( ( acc , item ) => {
28
- if ( ! item ?. timesheet ?. createdAt ) {
29
+ if ( ! item ?. createdAt ) {
29
30
console . warn ( 'Skipping item with missing timesheet or createdAt:' , item ) ;
30
31
return acc ;
31
32
}
32
33
try {
33
- const date = new Date ( item . timesheet . createdAt ) . toISOString ( ) . split ( 'T' ) [ 0 ] ;
34
+ const date = new Date ( item . createdAt ) . toISOString ( ) . split ( 'T' ) [ 0 ] ;
34
35
if ( ! acc [ date ] ) acc [ date ] = [ ] ;
35
36
acc [ date ] . push ( item ) ;
36
37
} catch ( error ) {
37
38
console . error (
38
39
`Failed to process date for timesheet ${ item . timesheet . id } :` ,
39
- { createdAt : item . timesheet . createdAt , error }
40
+ { createdAt : item . createdAt , error }
40
41
) ;
41
42
}
42
43
return acc ;
@@ -61,19 +62,19 @@ const createGroupingFunction = (getKey: GroupingKeyFunction) => (items: Timeshee
61
62
type GroupedMap = Record < string , TimesheetLog [ ] > ;
62
63
63
64
const grouped = items . reduce < GroupedMap > ( ( acc , item ) => {
64
- if ( ! item ?. timesheet ?. createdAt ) {
65
+ if ( ! item ?. createdAt ) {
65
66
console . warn ( 'Skipping item with missing timesheet or createdAt:' , item ) ;
66
67
return acc ;
67
68
}
68
69
try {
69
- const date = new Date ( item . timesheet . createdAt ) ;
70
+ const date = new Date ( item . createdAt ) ;
70
71
const key = getKey ( date ) ;
71
72
if ( ! acc [ key ] ) acc [ key ] = [ ] ;
72
73
acc [ key ] . push ( item ) ;
73
74
} catch ( error ) {
74
75
console . error (
75
76
`Failed to process date for timesheet ${ item . timesheet . id } :` ,
76
- { createdAt : item . timesheet . createdAt , error }
77
+ { createdAt : item . createdAt , error }
77
78
) ;
78
79
}
79
80
return acc ;
@@ -177,40 +178,56 @@ export function useTimesheet({
177
178
throw new Error ( "User not authenticated" ) ;
178
179
}
179
180
try {
180
- const response = await queryCreateTimesheet ( timesheetParams ) ;
181
- setTimesheet ( ( prevTimesheet ) => [
182
- response . data ,
183
- ...( prevTimesheet || [ ] )
184
- ] ) ;
181
+ const response = queryCreateTimesheet ( timesheetParams ) . then ( ( res ) => {
182
+ return res . data
183
+ } ) ;
184
+ return response
185
185
} catch ( error ) {
186
- console . error ( 'Error:' , error ) ;
186
+ if ( axios . isAxiosError ( error ) ) {
187
+ console . error ( 'Axios Error:' , {
188
+ status : error . response ?. status ,
189
+ statusText : error . response ?. statusText ,
190
+ data : error . response ?. data
191
+ } ) ;
192
+ throw new Error ( `Request failed: ${ error . message } ` ) ;
193
+ }
194
+ console . error ( 'Error:' , error instanceof Error ? error . message : error ) ;
195
+ throw error ;
187
196
}
188
197
} ,
189
198
[ queryCreateTimesheet , setTimesheet , user ]
190
199
) ;
191
200
192
-
193
-
194
- const updateTimesheet = useCallback < ( params : UpdateTimesheet ) => Promise < void > > (
195
- async ( { ...timesheet } : UpdateTimesheet ) => {
201
+ const updateTimesheet = useCallback (
202
+ async ( timesheet : UpdateTimesheet ) => {
196
203
if ( ! user ) {
197
- throw new Error ( "User not authenticated" ) ;
204
+ console . warn ( "User not authenticated!" ) ;
205
+ return ;
198
206
}
199
207
try {
200
208
const response = await queryUpdateTimesheet ( timesheet ) ;
201
- setTimesheet ( ( prevTimesheet ) => {
202
- const updatedTimesheets = prevTimesheet . map ( ( item ) =>
203
- item . id === response . data . id
204
- ? { ...item , ...response . data }
205
- : item
209
+ if ( response ?. data ?. id ) {
210
+ setTimesheet ( ( prevTimesheet ) =>
211
+ prevTimesheet . map ( ( item ) =>
212
+ item . id === response . data . id
213
+ ? { ...item , ...response . data }
214
+ : item
215
+ )
206
216
) ;
207
- return updatedTimesheets ;
208
- } ) ;
217
+ } else {
218
+ console . warn (
219
+ "Unexpected structure of the response. No update performed." ,
220
+ response
221
+ ) ;
222
+ }
209
223
} catch ( error ) {
210
- console . error ( ' Error updating timesheet:' , error ) ;
224
+ console . error ( " Error updating the timesheet:" , error ) ;
211
225
throw error ;
212
226
}
213
- } , [ queryUpdateTimesheet , setTimesheet , user ] )
227
+ } ,
228
+ [ queryUpdateTimesheet , setTimesheet , user ]
229
+ ) ;
230
+
214
231
215
232
216
233
const updateTimesheetStatus = useCallback (
0 commit comments