1
- import React , { useState , useEffect , useMemo } from "react" ;
1
+ import React , { useState , useEffect , useMemo } from "react" ;
2
2
import pad from "../assets/images/pad.svg" ;
3
3
import { useNavigate } from "react-router-dom" ;
4
4
import axios from "axios" ;
@@ -25,13 +25,14 @@ const ReportTable = ({
25
25
const [ currentPage , setCurrentPage ] = useState ( 1 ) ;
26
26
const [ actLoader , setActLoader ] = useState ( { } ) ;
27
27
const [ isAlert , setIsAlert ] = useState ( false ) ;
28
- const [ isErr , setIsErr ] = useState ( false ) ;
29
28
const [ isDocErr , setIsDocErr ] = useState ( false ) ;
30
29
const [ isContactform , setIsContactform ] = useState ( false ) ;
31
30
const [ isDeleteModal , setIsDeleteModal ] = useState ( { } ) ;
31
+ const [ isRevoke , setIsRevoke ] = useState ( { } ) ;
32
32
const [ isShare , setIsShare ] = useState ( { } ) ;
33
33
const [ shareUrls , setShareUrls ] = useState ( [ ] ) ;
34
34
const [ copied , setCopied ] = useState ( false ) ;
35
+ const [ alertMsg , setAlertMsg ] = useState ( { type : "success" , message : "" } ) ;
35
36
const startIndex = ( currentPage - 1 ) * docPerPage ;
36
37
37
38
// For loop is used to calculate page numbers visible below table
@@ -164,7 +165,10 @@ const ReportTable = ({
164
165
} catch ( err ) {
165
166
console . log ( "Err" , err ) ;
166
167
setIsAlert ( true ) ;
167
- setIsErr ( true ) ;
168
+ setAlertMsg ( {
169
+ type : "danger" ,
170
+ message : "Something went wrong, Please try again later!"
171
+ } ) ;
168
172
setTimeout ( ( ) => setIsAlert ( false ) , 1500 ) ;
169
173
setActLoader ( { } ) ;
170
174
}
@@ -174,14 +178,20 @@ const ReportTable = ({
174
178
}
175
179
} else {
176
180
setIsAlert ( true ) ;
177
- setIsErr ( true ) ;
181
+ setAlertMsg ( {
182
+ type : "danger" ,
183
+ message : "Something went wrong, Please try again later!"
184
+ } ) ;
178
185
setTimeout ( ( ) => setIsAlert ( false ) , 1500 ) ;
179
186
setActLoader ( { } ) ;
180
187
}
181
188
} catch ( err ) {
182
189
console . log ( "err" , err ) ;
183
190
setIsAlert ( true ) ;
184
- setIsErr ( true ) ;
191
+ setAlertMsg ( {
192
+ type : "danger" ,
193
+ message : "Something went wrong, Please try again later!"
194
+ } ) ;
185
195
setTimeout ( ( ) => setIsAlert ( false ) , 1500 ) ;
186
196
setActLoader ( { } ) ;
187
197
}
@@ -200,6 +210,8 @@ const ReportTable = ({
200
210
setIsDeleteModal ( { [ item . objectId ] : true } ) ;
201
211
} else if ( act . action === "share" ) {
202
212
handleShare ( item ) ;
213
+ } else if ( act . action === "revoke" ) {
214
+ setIsRevoke ( { [ item . objectId ] : true } ) ;
203
215
}
204
216
} ;
205
217
// Get current list
@@ -248,19 +260,29 @@ const ReportTable = ({
248
260
if ( res . data && res . data . updatedAt ) {
249
261
setActLoader ( { } ) ;
250
262
setIsAlert ( true ) ;
263
+ setAlertMsg ( {
264
+ type : "success" ,
265
+ message : "Record deleted successfully!"
266
+ } ) ;
251
267
setTimeout ( ( ) => setIsAlert ( false ) , 1500 ) ;
252
268
const upldatedList = List . filter ( ( x ) => x . objectId !== item . objectId ) ;
253
269
setList ( upldatedList ) ;
254
270
}
255
271
} catch ( err ) {
256
272
console . log ( "err" , err ) ;
257
273
setIsAlert ( true ) ;
258
- setIsErr ( true ) ;
274
+ setAlertMsg ( {
275
+ type : "danger" ,
276
+ message : "Something went wrong, Please try again later!"
277
+ } ) ;
259
278
setTimeout ( ( ) => setIsAlert ( false ) , 1500 ) ;
260
279
setActLoader ( { } ) ;
261
280
}
262
281
} ;
263
- const handleCloseDeleteModal = ( ) => setIsDeleteModal ( { } ) ;
282
+ const handleClose = ( ) => {
283
+ setIsRevoke ( { } ) ;
284
+ setIsDeleteModal ( { } ) ;
285
+ } ;
264
286
265
287
const handleShare = ( item ) => {
266
288
setActLoader ( { [ item . objectId ] : true } ) ;
@@ -281,6 +303,53 @@ const ReportTable = ({
281
303
navigator . clipboard . writeText ( share . url ) ;
282
304
setCopied ( { ...copied , [ share . email ] : true } ) ;
283
305
} ;
306
+ //function to handle revoke/decline docment
307
+ const handleRevoke = async ( item ) => {
308
+ setIsRevoke ( { } ) ;
309
+ setActLoader ( { [ `${ item . objectId } ` ] : true } ) ;
310
+ const data = {
311
+ IsDeclined : true
312
+ } ;
313
+
314
+ await axios
315
+ . put (
316
+ `${ localStorage . getItem ( "baseUrl" ) } classes/${ localStorage . getItem (
317
+ "_appName"
318
+ ) } _Document/${ item . objectId } `,
319
+ data ,
320
+ {
321
+ headers : {
322
+ "Content-Type" : "application/json" ,
323
+ "X-Parse-Application-Id" : localStorage . getItem ( "parseAppId" ) ,
324
+ "X-Parse-Session-Token" : localStorage . getItem ( "accesstoken" )
325
+ }
326
+ }
327
+ )
328
+ . then ( async ( result ) => {
329
+ const res = result . data ;
330
+ if ( res ) {
331
+ setActLoader ( { } ) ;
332
+ setIsAlert ( true ) ;
333
+ setAlertMsg ( {
334
+ type : "success" ,
335
+ message : "Record revoked successfully!"
336
+ } ) ;
337
+ setTimeout ( ( ) => setIsAlert ( false ) , 1500 ) ;
338
+ const upldatedList = List . filter ( ( x ) => x . objectId !== item . objectId ) ;
339
+ setList ( upldatedList ) ;
340
+ }
341
+ } )
342
+ . catch ( ( err ) => {
343
+ console . log ( "err" , err ) ;
344
+ setIsAlert ( true ) ;
345
+ setAlertMsg ( {
346
+ type : "danger" ,
347
+ message : "Something went wrong, Please try again later!"
348
+ } ) ;
349
+ setTimeout ( ( ) => setIsAlert ( false ) , 1500 ) ;
350
+ setActLoader ( { } ) ;
351
+ } ) ;
352
+ } ;
284
353
return (
285
354
< div className = "relative" >
286
355
{ Object . keys ( actLoader ) ?. length > 0 && (
@@ -292,13 +361,7 @@ const ReportTable = ({
292
361
</ div >
293
362
) }
294
363
< div className = "p-2 overflow-x-scroll w-full bg-white rounded-md" >
295
- { isAlert && (
296
- < Alert type = { isErr ? "danger" : "success" } >
297
- { isErr
298
- ? "Something went wrong, Please try again later!"
299
- : "Record deleted successfully!" }
300
- </ Alert >
301
- ) }
364
+ { isAlert && < Alert type = { alertMsg . type } > { alertMsg . message } </ Alert > }
302
365
< div className = "flex flex-row items-center justify-between my-2 mx-3 text-[20px] md:text-[23px]" >
303
366
< div className = "font-light" >
304
367
{ ReportName } { " " }
@@ -370,7 +433,7 @@ const ReportTable = ({
370
433
< ModalUi
371
434
isOpen
372
435
title = { "Delete Contact" }
373
- handleClose = { handleCloseDeleteModal }
436
+ handleClose = { handleClose }
374
437
>
375
438
< div className = "m-[20px]" >
376
439
< div className = "text-lg font-normal text-black" >
@@ -388,7 +451,7 @@ const ReportTable = ({
388
451
Yes
389
452
</ button >
390
453
< button
391
- onClick = { handleCloseDeleteModal }
454
+ onClick = { handleClose }
392
455
className = "px-4 py-1.5 text-black border-[1px] border-[#ccc] shadow-md rounded focus:outline-none"
393
456
style = { {
394
457
backgroundColor : modalCancelBtnColor
@@ -459,7 +522,7 @@ const ReportTable = ({
459
522
< ModalUi
460
523
isOpen
461
524
title = { "Delete Document" }
462
- handleClose = { handleCloseDeleteModal }
525
+ handleClose = { handleClose }
463
526
>
464
527
< div className = "m-[20px]" >
465
528
< div className = "text-lg font-normal text-black" >
@@ -477,7 +540,7 @@ const ReportTable = ({
477
540
Yes
478
541
</ button >
479
542
< button
480
- onClick = { handleCloseDeleteModal }
543
+ onClick = { handleClose }
481
544
className = "px-4 py-1.5 text-black border-[1px] border-[#ccc] shadow-md rounded focus:outline-none"
482
545
style = { {
483
546
backgroundColor : modalCancelBtnColor
@@ -531,6 +594,40 @@ const ReportTable = ({
531
594
</ div >
532
595
</ ModalUi >
533
596
) }
597
+ { isRevoke [ item . objectId ] && (
598
+ < ModalUi
599
+ isOpen
600
+ title = { "Revoke document" }
601
+ handleClose = { handleClose }
602
+ >
603
+ < div className = "m-[20px]" >
604
+ < div className = "text-lg font-normal text-black" >
605
+ Are you sure you want to revoke this document?
606
+ </ div >
607
+ < hr className = "bg-[#ccc] mt-4 " />
608
+ < div className = "flex items-center mt-3 gap-2 text-white" >
609
+ < button
610
+ onClick = { ( ) => handleRevoke ( item ) }
611
+ className = "px-4 py-1.5 text-white rounded shadow-md text-center focus:outline-none "
612
+ style = { {
613
+ backgroundColor : modalSubmitBtnColor
614
+ } }
615
+ >
616
+ Yes
617
+ </ button >
618
+ < button
619
+ onClick = { handleClose }
620
+ className = "px-4 py-1.5 text-black border-[1px] border-[#ccc] shadow-md rounded focus:outline-none"
621
+ style = { {
622
+ backgroundColor : modalCancelBtnColor
623
+ } }
624
+ >
625
+ No
626
+ </ button >
627
+ </ div >
628
+ </ div >
629
+ </ ModalUi >
630
+ ) }
534
631
</ td >
535
632
</ tr >
536
633
)
0 commit comments