import RoomDirectoryIcon from "@mui/icons-material/FolderShared"; import { BooleanField, BulkDeleteButton, BulkDeleteButtonProps, Button, ButtonProps, DatagridConfigurable, DeleteButtonProps, ExportButton, DeleteButton, List, NumberField, Pagination, ResourceProps, SelectColumnsButton, TextField, TopToolbar, useCreate, useDataProvider, useListContext, useNotify, useTranslate, useRecordContext, useRefresh, useUnselectAll, } from "react-admin"; import { useMutation } from "@tanstack/react-query"; import AvatarField from "../components/AvatarField"; import { MakeAdminBtn } from "./rooms"; const RoomDirectoryPagination = () => ; export const RoomDirectoryUnpublishButton = (props: DeleteButtonProps) => { const translate = useTranslate(); return ( } /> ); }; export const RoomDirectoryBulkUnpublishButton = (props: BulkDeleteButtonProps) => ( } /> ); export const RoomDirectoryBulkPublishButton = (props: ButtonProps) => { const { selectedIds } = useListContext(); const notify = useNotify(); const refresh = useRefresh(); const unselectAllRooms = useUnselectAll("rooms"); const dataProvider = useDataProvider(); const { mutate, isPending } = useMutation({ mutationFn: () => dataProvider.createMany("room_directory", { ids: selectedIds, data: {}, }), onSuccess: () => { notify("resources.room_directory.action.send_success"); unselectAllRooms(); refresh(); }, onError: () => notify("resources.room_directory.action.send_failure", { type: "error", }), }); return ( ); }; export const RoomDirectoryPublishButton = (props: ButtonProps) => { const record = useRecordContext(); const notify = useNotify(); const refresh = useRefresh(); const [create, { isLoading }] = useCreate(); if (!record) { return null; } const handleSend = () => { create( "room_directory", { data: { id: record.id } }, { onSuccess: () => { notify("resources.room_directory.action.send_success"); refresh(); }, onError: () => notify("resources.room_directory.action.send_failure", { type: "error", }), } ); }; return ( ); }; const RoomDirectoryListActions = () => ( ); export const RoomDirectoryList = () => ( } perPage={50} actions={}> "/rooms/" + id + "/show"} bulkActionButtons={} omit={["room_id", "canonical_alias", "topic"]} > ); const resource: ResourceProps = { name: "room_directory", icon: RoomDirectoryIcon, list: RoomDirectoryList, }; export default resource;