From e27ae35e12d4d02e0fe275081d4fe533a4d41311 Mon Sep 17 00:00:00 2001 From: dklimpel <5740567+dklimpel@users.noreply.github.com> Date: Sat, 23 May 2020 19:04:06 +0200 Subject: [PATCH] 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) --- src/components/rooms.js | 30 +++++++++++++++++++++++++++--- src/i18n/de.js | 7 +++++++ src/i18n/en.js | 7 +++++++ src/synapse/dataProvider.js | 5 +++++ 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/components/rooms.js b/src/components/rooms.js index 8cac414..cb289ef 100644 --- a/src/components/rooms.js +++ b/src/components/rooms.js @@ -1,12 +1,36 @@ -import React from "react"; -import { Datagrid, List, TextField, Pagination } from "react-admin"; +import React, { Fragment } from "react"; +import { + Datagrid, + List, + TextField, + Pagination, + BulkDeleteButton, + useTranslate, +} from "react-admin"; const RoomPagination = props => ( ); +const RoomBulkActionButtons = props => { + const translate = useTranslate(); + return ( + + + + ); +}; + export const RoomList = props => ( - }> + } + bulkActionButtons={} + > diff --git a/src/i18n/de.js b/src/i18n/de.js index a467c1a..7d44550 100644 --- a/src/i18n/de.js +++ b/src/i18n/de.js @@ -54,6 +54,13 @@ export default { canonical_alias: "Alias", 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: { name: "Verbindungen", diff --git a/src/i18n/en.js b/src/i18n/en.js index a7a6141..ffe2f78 100644 --- a/src/i18n/en.js +++ b/src/i18n/en.js @@ -54,6 +54,13 @@ export default { canonical_alias: "Alias", joined_members: "Members", }, + helper: { + purge: + "All local users must have left the room before it can be removed.", + }, + action: { + purge: "Purge room", + }, }, connections: { name: "Connections", diff --git a/src/synapse/dataProvider.js b/src/synapse/dataProvider.js index 6d5486c..e4f4fbb 100644 --- a/src/synapse/dataProvider.js +++ b/src/synapse/dataProvider.js @@ -53,6 +53,11 @@ const resourceMap = { total: json => { return json.total_rooms; }, + delete: id => ({ + endpoint: "/_synapse/admin/v1/purge_room", + body: { room_id: id }, + method: "POST", + }), }, connections: { path: "/_synapse/admin/v1/whois",