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,