Skip to content

Commit 5903a47

Browse files
committed
add bulk actions to user's rooms tab
1 parent 82dca1b commit 5903a47

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

src/components/DeleteRoomButton.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import {
1313
useDeleteMany,
1414
Identifier,
1515
useUnselectAll,
16+
useRecordContext,
17+
useResourceContext,
1618
} from "react-admin";
1719

1820
interface 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 (

src/resources/rooms.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ export const RoomShow = (props: ShowProps) => {
427427
);
428428
};
429429

430-
const RoomBulkActionButtons = () => {
430+
export const RoomBulkActionButtons = () => {
431431
const record = useListContext();
432432
return (
433433
<>

src/resources/users.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ import {
7272
import { useFormContext } from "react-hook-form";
7373
import { Link } from "react-router-dom";
7474

75-
import { MakeAdminBtn } from "./rooms";
75+
import { MakeAdminBtn, RoomBulkActionButtons } from "./rooms";
7676
import AvatarField from "../components/AvatarField";
7777
import DeleteUserButton from "../components/DeleteUserButton";
7878
import DeviceRemoveButton from "../components/DeviceRemoveButton";
@@ -695,7 +695,11 @@ export const UserEdit = (props: EditProps) => {
695695
perPage={10}
696696
pagination={<Pagination />}
697697
>
698-
<Datagrid sx={{ width: "100%" }} rowClick={id => "/rooms/" + id + "/show"} bulkActionButtons={false}>
698+
<Datagrid
699+
sx={{ width: "100%" }}
700+
rowClick={id => "/rooms/" + id + "/show"}
701+
bulkActionButtons={<RoomBulkActionButtons />}
702+
>
699703
<ReferenceField reference="rooms" source="id" label={false} link={false} sortable={false}>
700704
<AvatarField source="avatar" sx={{ height: "40px", width: "40px" }} />
701705
</ReferenceField>

0 commit comments

Comments
 (0)