import { BooleanField, BulkDeleteButton, DateField, Datagrid, DatagridConfigurable, DeleteButton, ExportButton, FunctionField, List, ListProps, NumberField, Pagination, ReferenceField, ReferenceManyField, ResourceProps, SearchInput, SelectColumnsButton, SelectField, Show, ShowProps, Tab, TabbedShowLayout, TextField, TopToolbar, useRecordContext, useTranslate, } from "react-admin"; import { useTheme } from "@mui/material/styles"; import Box from "@mui/material/Box"; import FastForwardIcon from "@mui/icons-material/FastForward"; import HttpsIcon from "@mui/icons-material/Https"; import NoEncryptionIcon from "@mui/icons-material/NoEncryption"; import PageviewIcon from "@mui/icons-material/Pageview"; import UserIcon from "@mui/icons-material/Group"; import ViewListIcon from "@mui/icons-material/ViewList"; import VisibilityIcon from "@mui/icons-material/Visibility"; import EventIcon from "@mui/icons-material/Event"; import RoomIcon from "@mui/icons-material/ViewList"; import { RoomDirectoryBulkUnpublishButton, RoomDirectoryBulkPublishButton, RoomDirectoryUnpublishButton, RoomDirectoryPublishButton, } from "./RoomDirectory"; import { date_format } from "./date"; const RoomPagination = () => ( ); const RoomTitle = () => { const record = useRecordContext(); const translate = useTranslate(); let name = ""; if (record) { name = record.name !== "" ? record.name : record.id; } return ( {translate("resources.rooms.name", 1)} {name} ); }; const RoomShowActions = () => { const record = useRecordContext(); const publishButton = record.public ? ( ) : ( ); // FIXME: refresh after (un)publish return ( {publishButton} ); }; export const RoomShow = (props: ShowProps) => { const translate = useTranslate(); return ( } title={}> }> } path="detail" > } path="members" > "/users/" + id} bulkActionButtons={false} > } path="permission" > } path="state" > } path="forward_extremities" > {translate("resources.rooms.helper.forward_extremities")} ); }; const RoomBulkActionButtons = () => ( <> ); const roomFilters = []; const RoomListActions = () => ( ); export const RoomList = (props: ListProps) => { const theme = useTheme(); return ( } sort={{ field: "name", order: "ASC" }} filters={roomFilters} actions={} > } omit={[ "joined_local_members", "state_events", "version", "federatable", ]} > } sx={{ [`& [data-testid="true"]`]: { color: theme.palette.success.main }, [`& [data-testid="false"]`]: { color: theme.palette.error.main }, }} /> record["name"] || record["canonical_alias"] || record["id"] } /> ); }; const resource: ResourceProps = { name: "rooms", icon: RoomIcon, list: RoomList, show: RoomShow, }; export default resource;