@@ -13,6 +13,8 @@ import {
1313 useDeleteMany ,
1414 Identifier ,
1515 useUnselectAll ,
16+ useRecordContext ,
17+ useResourceContext ,
1618} from "react-admin" ;
1719
1820interface DeleteRoomButtonProps {
@@ -34,11 +36,20 @@ const DeleteRoomButton: React.FC<DeleteRoomButtonProps> = props => {
3436 const [ deleteMany , { isLoading } ] = useDeleteMany ( ) ;
3537 const unselectAll = useUnselectAll ( resourceName ) ;
3638 const recordIds = props . selectedIds ;
39+ const record = useRecordContext ( ) ;
40+ const resource = useResourceContext ( ) ;
41+
42+ let redirectTo = "/rooms" ;
43+ // If the room(-s) are being deleted from a user's joined rooms list,
44+ // redirect back to that list after deletion
45+ if ( resource === "joined_rooms" && record ?. id ) {
46+ redirectTo = `/users/${ encodeURIComponent ( record . id ) } /rooms` ;
47+ }
3748
3849 const handleDialogOpen = ( ) => setOpen ( true ) ;
3950 const handleDialogClose = ( ) => setOpen ( false ) ;
4051
41- const handleDelete = ( values : { block : boolean } ) => {
52+ const handleDelete = ( values : { block : boolean } , redirectTo : string ) => {
4253 deleteMany (
4354 resourceName ,
4455 { ids : recordIds , meta : values } ,
@@ -47,7 +58,7 @@ const DeleteRoomButton: React.FC<DeleteRoomButtonProps> = props => {
4758 notify ( "resources.rooms.action.erase.success" ) ;
4859 handleDialogClose ( ) ;
4960 unselectAll ( ) ;
50- redirect ( "/rooms" ) ;
61+ redirect ( redirectTo ) ;
5162 } ,
5263 /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
5364 onError : ( error : any ) =>
@@ -58,7 +69,7 @@ const DeleteRoomButton: React.FC<DeleteRoomButtonProps> = props => {
5869
5970 const handleConfirm = ( ) => {
6071 setOpen ( false ) ;
61- handleDelete ( { block : block } ) ;
72+ handleDelete ( { block : block } , redirectTo ) ;
6273 } ;
6374
6475 return (
0 commit comments