diff --git a/README.md b/README.md index 722d54b..813c582 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This project is built using [react-admin](https://marmelab.com/react-admin/). -It needs at least Synapse v1.23.0 for all functions to work as expected! +It needs at least Synapse v1.27.0 for all functions to work as expected! You get your server version with the request `/_synapse/admin/v1/server_version`. See also [Synapse version API](https://github.com/matrix-org/synapse/blob/develop/docs/admin_api/version_api.rst). diff --git a/src/App.js b/src/App.js index ec240a5..55e83c0 100644 --- a/src/App.js +++ b/src/App.js @@ -63,6 +63,7 @@ const App = () => ( + ); diff --git a/src/components/rooms.js b/src/components/rooms.js index efef5cb..68aed39 100644 --- a/src/components/rooms.js +++ b/src/components/rooms.js @@ -3,6 +3,7 @@ import { connect } from "react-redux"; import { BooleanField, BulkDeleteWithConfirmButton, + DateField, Datagrid, DeleteButton, Filter, @@ -27,6 +28,7 @@ import PageviewIcon from "@material-ui/icons/Pageview"; import UserIcon from "@material-ui/icons/Group"; import ViewListIcon from "@material-ui/icons/ViewList"; import VisibilityIcon from "@material-ui/icons/Visibility"; +import EventIcon from "@material-ui/icons/Event"; const RoomPagination = props => ( @@ -97,7 +99,9 @@ export const RoomShow = props => { - + + + { ]} /> + } + path="state" + > + + + + + + + + + + + ); diff --git a/src/i18n/de.js b/src/i18n/de.js index f20ef18..cd9ffb6 100644 --- a/src/i18n/de.js +++ b/src/i18n/de.js @@ -143,7 +143,7 @@ export default { canonical_alias: "Alias", joined_members: "Mitglieder", joined_local_members: "Lokale Mitglieder", - state_events: "Ereignisse", + state_events: "Zustandsereignisse / Komplexität", version: "Version", is_encrypted: "Verschlüsselt", encryption: "Verschlüsselungs-Algorithmus", @@ -273,6 +273,15 @@ export default { media_length: "Größe der Dateien", }, }, + room_state: { + name: "Zustandsereignisse", + fields: { + type: "Typ", + content: "Inhalt", + origin_server_ts: "Sendezeit", + sender: "Absender", + }, + }, }, ra: { ...germanMessages.ra, diff --git a/src/i18n/en.js b/src/i18n/en.js index bb3ac3b..b954e0b 100644 --- a/src/i18n/en.js +++ b/src/i18n/en.js @@ -140,7 +140,7 @@ export default { canonical_alias: "Alias", joined_members: "Members", joined_local_members: "local members", - state_events: "State events", + state_events: "State events / Complexity", version: "Version", is_encrypted: "Encrypted", encryption: "Encryption", @@ -270,5 +270,14 @@ export default { media_length: "Media length", }, }, + room_state: { + name: "State events", + fields: { + type: "Type", + content: "Content", + origin_server_ts: "time of send", + sender: "Sender", + }, + }, }, }; diff --git a/src/synapse/dataProvider.js b/src/synapse/dataProvider.js index d928462..2dfa64a 100644 --- a/src/synapse/dataProvider.js +++ b/src/synapse/dataProvider.js @@ -117,6 +117,19 @@ const resourceMap = { return json.total; }, }, + room_state: { + map: rs => ({ + ...rs, + id: rs.event_id, + }), + reference: id => ({ + endpoint: `/_synapse/admin/v1/rooms/${id}/state`, + }), + data: "state", + total: json => { + return json.state.length; + }, + }, pushers: { map: p => ({ ...p,