@@ -439,21 +439,23 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
439439 type : null , idx : null
440440 } ) ;
441441
442+ // apply sort
442443 const sortedItems = useMemo ( ( ) => (
443444 [ ...items ] . sort ( getComparator ( sortColumns [ 0 ] ) )
444445 ) , [ items , sortColumns ] ) ;
445446
446- const filteredItems = useMemo ( ( ) => {
447+ // apply filter on sorted
448+ const finalItems = useMemo ( ( ) => {
447449 return sortedItems . filter ( ( i ) => i . Filename ?. toLowerCase ( ) . includes ( search ?. toLocaleLowerCase ( ) ) ) ;
448450 } , [ items , sortColumns , search ] ) ;
449451
450452 const itemsText = useMemo ( ( ) => {
451453 let suffix = items . length == 1 ? 'item' : 'items' ;
452- if ( items . length == filteredItems . length ) {
454+ if ( items . length == finalItems . length ) {
453455 return `${ items . length } ${ suffix } ` ;
454456 }
455- return `${ filteredItems . length } of ${ items . length } ${ suffix } ` ;
456- } , [ items , filteredItems ] ) ;
457+ return `${ finalItems . length } of ${ items . length } ${ suffix } ` ;
458+ } , [ items , finalItems ] ) ;
457459
458460 const changeDir = async ( storage ) => {
459461 setSelectedSS ( storage ) ;
@@ -478,7 +480,9 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
478480 setLoaderText ( '' ) ;
479481 } ;
480482
481- const completeOperation = async ( oldRow , newRow , rowIdx , selectedSS , func ) => {
483+ const completeOperation = async ( oldRow , newRow , selectedSS , func ) => {
484+ // We need to find the index in actual items list not final items list
485+ const rowIdx = oldRow ? items . findIndex ( ( i ) => i . Filename == oldRow ?. Filename && i . Path == oldRow ?. Path ) : 0 ;
482486 setOperation ( { } ) ;
483487 if ( oldRow ?. Filename == newRow . Filename ) {
484488 setItems ( ( prev ) => [
@@ -519,7 +523,7 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
519523 const onDownload = async ( ) => {
520524 setLoaderText ( 'Downloading...' ) ;
521525 try {
522- await fmUtilsObj . downloadFile ( filteredItems [ selectedRowIdx . current ] , selectedSS ) ;
526+ await fmUtilsObj . downloadFile ( finalItems [ selectedRowIdx . current ] , selectedSS ) ;
523527 } catch ( error ) {
524528 setErrorMsg ( parseApiError ( error ) ) ;
525529 console . error ( error ) ;
@@ -534,10 +538,10 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
534538 setOperation ( {
535539 type : 'add' ,
536540 idx : 0 ,
537- onComplete : async ( row , rowIdx ) => {
541+ onComplete : async ( row ) => {
538542 setErrorMsg ( '' ) ;
539543 setLoaderText ( 'Creating folder...' ) ;
540- await completeOperation ( null , row , rowIdx , selectedSS , fmUtilsObj . addFolder . bind ( fmUtilsObj ) ) ;
544+ await completeOperation ( null , row , selectedSS , fmUtilsObj . addFolder . bind ( fmUtilsObj ) ) ;
541545 setLoaderText ( '' ) ;
542546 }
543547 } ) ;
@@ -554,8 +558,8 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
554558 onComplete : async ( row , rowIdx ) => {
555559 setErrorMsg ( '' ) ;
556560 setLoaderText ( 'Renaming...' ) ;
557- let oldRow = items [ rowIdx ] ;
558- await completeOperation ( oldRow , row , rowIdx , selectedSS , fmUtilsObj . renameItem . bind ( fmUtilsObj ) ) ;
561+ let oldRow = finalItems [ rowIdx ] ;
562+ await completeOperation ( oldRow , row , selectedSS , fmUtilsObj . renameItem . bind ( fmUtilsObj ) ) ;
559563 setLoaderText ( '' ) ;
560564 }
561565 } ) ;
@@ -570,10 +574,14 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
570574 setConfirmFile ( [ null , null ] ) ;
571575 setLoaderText ( 'Deleting...' ) ;
572576 try {
573- await fmUtilsObj . deleteItem ( items [ selectedRowIdx . current ] , selectedSS ) ;
577+ // selectedRowIdx is index in finalItems, so we need to find the index in actual items list
578+ const oldRow = finalItems [ selectedRowIdx . current ] ;
579+ const itemsRowIdx = items . findIndex ( ( i ) => i . Filename == oldRow ?. Filename && i . Path == oldRow ?. Path ) ;
580+
581+ await fmUtilsObj . deleteItem ( oldRow , selectedSS ) ;
574582 setItems ( ( prev ) => [
575- ...prev . slice ( 0 , selectedRowIdx . current ) ,
576- ...prev . slice ( selectedRowIdx . current + 1 ) ,
583+ ...prev . slice ( 0 , itemsRowIdx ) ,
584+ ...prev . slice ( itemsRowIdx + 1 ) ,
577585 ] ) ;
578586 } catch ( error ) {
579587 setErrorMsg ( parseApiError ( error ) ) ;
@@ -613,33 +621,33 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
613621 } ] ) ;
614622 return ;
615623 }
616- } else if ( selectedRowIdx ?. current >= 0 && filteredItems [ selectedRowIdx ?. current ] ) {
617- onOkPath = filteredItems [ selectedRowIdx ?. current ] [ 'Path' ] ;
624+ } else if ( selectedRowIdx ?. current >= 0 && finalItems [ selectedRowIdx ?. current ] ) {
625+ onOkPath = finalItems [ selectedRowIdx ?. current ] [ 'Path' ] ;
618626 }
619627 await fmUtilsObj . setLastVisitedDir ( fmUtilsObj . currPath , selectedSS ) ;
620628 onOK ?. ( onOkPath , selectedSS ) ;
621629 closeModal ( ) ;
622- } , [ filteredItems , saveAs , fileType ] ) ;
630+ } , [ finalItems , saveAs , fileType ] ) ;
623631 const onItemEnter = useCallback ( async ( row ) => {
624632 if ( row . file_type == 'dir' || row . file_type == 'drive' ) {
625633 await openDir ( row . Path , selectedSS ) ;
626634 } else if ( params . dialog_type == 'select_file' ) {
627635 onOkClick ( ) ;
628636 }
629- } , [ filteredItems ] ) ;
637+ } , [ finalItems ] ) ;
630638 const onItemSelect = useCallback ( ( idx ) => {
631639 selectedRowIdx . current = idx ;
632640 fewBtnDisableCheck ( ) ;
633- } , [ filteredItems ] ) ;
641+ } , [ finalItems ] ) ;
634642 const onItemClick = useCallback ( ( idx ) => {
635- let row = filteredItems [ selectedRowIdx . current ] ;
643+ let row = finalItems [ selectedRowIdx . current ] ;
636644 if ( params . dialog_type == 'create_file' && row ?. file_type != 'dir' && row ?. file_type != 'drive' ) {
637- setSaveAs ( filteredItems [ idx ] ?. Filename ) ;
645+ setSaveAs ( finalItems [ idx ] ?. Filename ) ;
638646 }
639- } , [ filteredItems ] ) ;
647+ } , [ finalItems ] ) ;
640648 const fewBtnDisableCheck = ( ) => {
641649 let disabled = true ;
642- let row = filteredItems [ selectedRowIdx . current ] ;
650+ let row = finalItems [ selectedRowIdx . current ] ;
643651 if ( params . dialog_type == 'create_file' ) {
644652 disabled = ! saveAs ?. trim ( ) ;
645653 } else if ( selectedRowIdx . current >= 0 && row ) {
@@ -688,7 +696,7 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
688696
689697 useEffect ( ( ) => {
690698 fewBtnDisableCheck ( ) ;
691- } , [ saveAs , filteredItems . length ] ) ;
699+ } , [ saveAs , finalItems . length ] ) ;
692700
693701 const isNoneSelected = _ . isUndefined ( selectedRow ) ;
694702 let okBtnText = params . btn_primary ;
@@ -812,10 +820,10 @@ export default function FileManager({params, closeModal, onOK, onCancel, sharedS
812820 }
813821 } } /> }
814822 { viewMode == 'list' &&
815- < ListView key = { fmUtilsObj . currPath } items = { filteredItems } operation = { operation } onItemEnter = { onItemEnter }
823+ < ListView key = { fmUtilsObj . currPath } items = { finalItems } operation = { operation } onItemEnter = { onItemEnter }
816824 onItemSelect = { onItemSelect } onItemClick = { onItemClick } sortColumns = { sortColumns } onSortColumnsChange = { setSortColumns } /> }
817825 { viewMode == 'grid' &&
818- < GridView key = { fmUtilsObj . currPath } items = { filteredItems } operation = { operation } onItemEnter = { onItemEnter }
826+ < GridView key = { fmUtilsObj . currPath } items = { finalItems } operation = { operation } onItemEnter = { onItemEnter }
819827 onItemSelect = { onItemSelect } /> }
820828 < FormFooterMessage type = { MESSAGE_TYPE . ERROR } message = { _ . escape ( errorMsg ) } closable onClose = { ( ) => setErrorMsg ( '' ) } />
821829 { params . dialog_type == 'create_file' &&
0 commit comments