@@ -55,7 +55,7 @@ import {
5555} from '../../crud' ;
5656import { localizeProjectTag } from '../../utils/localizeProjectTag' ;
5757import OfflineIcon from '@mui/icons-material/OfflinePin' ;
58- import { useHome , useJsonParams } from '../../utils' ;
58+ import { useDataChanges , useHome , useJsonParams } from '../../utils' ;
5959import { copyComplete , CopyProjectProps } from '../../store' ;
6060import { TokenContext } from '../../context/TokenProvider' ;
6161import { useSnackBar } from '../../hoc/SnackBar' ;
@@ -139,6 +139,7 @@ export const ProjectCard = (props: IProps) => {
139139 doImport,
140140 } = ctx . state ;
141141 const dispatch = useDispatch ( ) ;
142+ const forceDataChanges = useDataChanges ( ) ;
142143
143144 const copyProject = ( props : CopyProjectProps ) =>
144145 dispatch ( actions . copyProject ( props ) as any ) ;
@@ -211,8 +212,16 @@ export const ProjectCard = (props: IProps) => {
211212 if ( copyStatus . errStatus || copyStatus . complete ) {
212213 copyComplete ( ) ;
213214 setCopying ( false ) ;
214- setBusy ( false ) ;
215- showMessage ( copyStatus . errMsg ?? copyStatus . statusMsg ) ;
215+ forceDataChanges ( )
216+ . then ( ( ) => {
217+ setBusy ( false ) ;
218+ showMessage (
219+ copyStatus . errMsg ?? copyStatus . statusMsg ?? 'COPY COMPLETE'
220+ ) ;
221+ } )
222+ . catch ( ( err ) => {
223+ showMessage ( err . message ) ;
224+ } ) ;
216225 } else showMessage ( copyStatus . statusMsg ) ;
217226 }
218227 /* eslint-disable-next-line react-hooks/exhaustive-deps */
@@ -593,7 +602,11 @@ export const ProjectCard = (props: IProps) => {
593602 </ DialogContent >
594603 < DialogActions >
595604 < Button onClick = { handleCopyCancel } > { t . cancel || 'Cancel' } </ Button >
596- < Button onClick = { handleCopyConfirm } variant = "contained" >
605+ < Button
606+ onClick = { handleCopyConfirm }
607+ variant = "contained"
608+ disabled = { copying || selectedTeamId === '' }
609+ >
597610 { t . copyProject || 'Copy' }
598611 </ Button >
599612 </ DialogActions >
0 commit comments