From 09ce3f389c5cd57b33fd516ccfccfd88da44e13c Mon Sep 17 00:00:00 2001 From: Timo Date: Mon, 21 Jul 2025 12:54:12 +0200 Subject: [PATCH 1/5] Add toggle to hide empty state in devtools --- src/components/views/dialogs/devtools/RoomState.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/devtools/RoomState.tsx b/src/components/views/dialogs/devtools/RoomState.tsx index 0a41743372e..90658270612 100644 --- a/src/components/views/dialogs/devtools/RoomState.tsx +++ b/src/components/views/dialogs/devtools/RoomState.tsx @@ -19,6 +19,7 @@ import FilteredList from "./FilteredList"; import Spinner from "../../elements/Spinner"; import SyntaxHighlight from "../../elements/SyntaxHighlight"; import { useAsyncMemo } from "../../../../hooks/useAsyncMemo"; +import LabelledToggleSwitch from "../../elements/LabelledToggleSwitch"; export const StateEventEditor: React.FC = ({ mxEvent, onBack }) => { const context = useContext(DevtoolsContext); @@ -114,6 +115,7 @@ const RoomStateExplorerEventType: React.FC = ({ eventType, onBa const [query, setQuery] = useState(""); const [event, setEvent] = useState(null); const [history, setHistory] = useState(false); + const [hideEmptyState, setHideEmptyState] = useState(false); const events = context.room.currentState.events.get(eventType)!; @@ -149,10 +151,13 @@ const RoomStateExplorerEventType: React.FC = ({ eventType, onBa return ( - {Array.from(events.entries()).map(([stateKey, ev]) => ( - setEvent(ev)} /> - ))} + {Array.from(events.entries()) + .filter(([_, ev]) => !hideEmptyState || Object.keys(ev.getContent()).length > 0) + .map(([stateKey, ev]) => ( + setEvent(ev)} /> + ))} + ); }; From 9f00c89224ffe55019e2711d1a6c2b9650eab388 Mon Sep 17 00:00:00 2001 From: Timo Date: Mon, 21 Jul 2025 13:01:19 +0200 Subject: [PATCH 2/5] use translated string --- src/components/views/dialogs/devtools/RoomState.tsx | 2 +- src/i18n/strings/en_EN.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/dialogs/devtools/RoomState.tsx b/src/components/views/dialogs/devtools/RoomState.tsx index 90658270612..8916d26fbdd 100644 --- a/src/components/views/dialogs/devtools/RoomState.tsx +++ b/src/components/views/dialogs/devtools/RoomState.tsx @@ -157,7 +157,7 @@ const RoomStateExplorerEventType: React.FC = ({ eventType, onBa setEvent(ev)} /> ))} - + ); }; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 3be18c544fa..d45912ba1e9 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -819,6 +819,7 @@ "failed_to_load": "Failed to load.", "failed_to_save": "Failed to save settings.", "failed_to_send": "Failed to send event!", + "hide_empty_content_events": "Hide events with empty content", "id": "ID: ", "invalid_json": "Doesn't look like valid JSON.", "level": "Level", From 028e318bf3833d1c9e201f58b6a8f8e82c34ee63 Mon Sep 17 00:00:00 2001 From: Timo Date: Tue, 22 Jul 2025 10:28:11 +0200 Subject: [PATCH 3/5] lint --- src/components/views/dialogs/devtools/RoomState.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/views/dialogs/devtools/RoomState.tsx b/src/components/views/dialogs/devtools/RoomState.tsx index 8916d26fbdd..7f244807a06 100644 --- a/src/components/views/dialogs/devtools/RoomState.tsx +++ b/src/components/views/dialogs/devtools/RoomState.tsx @@ -157,7 +157,11 @@ const RoomStateExplorerEventType: React.FC = ({ eventType, onBa setEvent(ev)} /> ))} - + ); }; From 9fb8db10061122325480cc7b648616876dcc3802 Mon Sep 17 00:00:00 2001 From: Timo Date: Tue, 22 Jul 2025 10:46:40 +0200 Subject: [PATCH 4/5] inverse logic(`hide`->`show`) --- src/components/views/dialogs/devtools/RoomState.tsx | 10 +++++----- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/views/dialogs/devtools/RoomState.tsx b/src/components/views/dialogs/devtools/RoomState.tsx index 7f244807a06..1f33fc5eea6 100644 --- a/src/components/views/dialogs/devtools/RoomState.tsx +++ b/src/components/views/dialogs/devtools/RoomState.tsx @@ -115,7 +115,7 @@ const RoomStateExplorerEventType: React.FC = ({ eventType, onBa const [query, setQuery] = useState(""); const [event, setEvent] = useState(null); const [history, setHistory] = useState(false); - const [hideEmptyState, setHideEmptyState] = useState(false); + const [showEmptyState, setShowEmptyState] = useState(true); const events = context.room.currentState.events.get(eventType)!; @@ -152,15 +152,15 @@ const RoomStateExplorerEventType: React.FC = ({ eventType, onBa {Array.from(events.entries()) - .filter(([_, ev]) => !hideEmptyState || Object.keys(ev.getContent()).length > 0) + .filter(([_, ev]) => showEmptyState || Object.keys(ev.getContent()).length > 0) .map(([stateKey, ev]) => ( setEvent(ev)} /> ))} ); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d45912ba1e9..77cd8447788 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -819,7 +819,7 @@ "failed_to_load": "Failed to load.", "failed_to_save": "Failed to save settings.", "failed_to_send": "Failed to send event!", - "hide_empty_content_events": "Hide events with empty content", + "show_empty_content_events": "Show events with empty content", "id": "ID: ", "invalid_json": "Doesn't look like valid JSON.", "level": "Level", From 41708ace0f2acfbe6d0fa54198b80817424c7a0b Mon Sep 17 00:00:00 2001 From: Timo Date: Tue, 22 Jul 2025 10:52:30 +0200 Subject: [PATCH 5/5] move entry in i18n to correct position --- src/i18n/strings/en_EN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 77cd8447788..f964a95ed58 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -819,7 +819,6 @@ "failed_to_load": "Failed to load.", "failed_to_save": "Failed to save settings.", "failed_to_send": "Failed to send event!", - "show_empty_content_events": "Show events with empty content", "id": "ID: ", "invalid_json": "Doesn't look like valid JSON.", "level": "Level", @@ -864,6 +863,7 @@ "elementCallUrl": "Element Call URL" }, "settings_explorer": "Settings explorer", + "show_empty_content_events": "Show events with empty content", "show_hidden_events": "Show hidden events in timeline", "spaces": { "one": "",