Add button to purge rooms to room list

Add button (BulkDeleteButton) to delete rooms with no local users:
- purge rooms `POST /_synapse/admin/v1/purge_room`
(https://github.com/matrix-org/synapse/blob/master/docs/admin_api/purge_room.md)
This commit is contained in:
dklimpel 2020-05-23 19:04:06 +02:00
parent 009ce803e2
commit e27ae35e12
4 changed files with 46 additions and 3 deletions

View File

@ -1,12 +1,36 @@
import React from "react"; import React, { Fragment } from "react";
import { Datagrid, List, TextField, Pagination } from "react-admin"; import {
Datagrid,
List,
TextField,
Pagination,
BulkDeleteButton,
useTranslate,
} from "react-admin";
const RoomPagination = props => ( const RoomPagination = props => (
<Pagination {...props} rowsPerPageOptions={[10, 25, 50, 100, 500, 1000]} /> <Pagination {...props} rowsPerPageOptions={[10, 25, 50, 100, 500, 1000]} />
); );
const RoomBulkActionButtons = props => {
const translate = useTranslate();
return (
<Fragment>
<BulkDeleteButton
{...props}
label="resources.rooms.action.purge"
title={translate("resources.rooms.helper.purge")}
/>
</Fragment>
);
};
export const RoomList = props => ( export const RoomList = props => (
<List {...props} pagination={<RoomPagination />}> <List
{...props}
pagination={<RoomPagination />}
bulkActionButtons={<RoomBulkActionButtons />}
>
<Datagrid> <Datagrid>
<TextField source="room_id" /> <TextField source="room_id" />
<TextField source="name" /> <TextField source="name" />

View File

@ -54,6 +54,13 @@ export default {
canonical_alias: "Alias", canonical_alias: "Alias",
joined_members: "Mitglieder", joined_members: "Mitglieder",
}, },
helper: {
purge:
"Alle lokalen Benutzer müssen den Raum verlassen haben, bevor er entfernt werden kann.",
},
action: {
purge: "Säubere Raum",
},
}, },
connections: { connections: {
name: "Verbindungen", name: "Verbindungen",

View File

@ -54,6 +54,13 @@ export default {
canonical_alias: "Alias", canonical_alias: "Alias",
joined_members: "Members", joined_members: "Members",
}, },
helper: {
purge:
"All local users must have left the room before it can be removed.",
},
action: {
purge: "Purge room",
},
}, },
connections: { connections: {
name: "Connections", name: "Connections",

View File

@ -53,6 +53,11 @@ const resourceMap = {
total: json => { total: json => {
return json.total_rooms; return json.total_rooms;
}, },
delete: id => ({
endpoint: "/_synapse/admin/v1/purge_room",
body: { room_id: id },
method: "POST",
}),
}, },
connections: { connections: {
path: "/_synapse/admin/v1/whois", path: "/_synapse/admin/v1/whois",