Skip to content

Commit 93b5358

Browse files
committed
Add toggle to hide empty state in devtools
1 parent 5b659fe commit 93b5358

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/components/views/dialogs/devtools/RoomState.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Please see LICENSE files in the repository root for full details.
1010
import React, { useContext, useEffect, useMemo, useState } from "react";
1111
import { type IContent, type MatrixEvent } from "matrix-js-sdk/src/matrix";
1212
import classNames from "classnames";
13+
import { Checkbox, CheckboxInput } from "@vector-im/compound-web";
1314

1415
import { _t, _td } from "../../../../languageHandler";
1516
import BaseTool, { DevtoolsContext, type IDevtoolsProps } from "./BaseTool";
@@ -19,6 +20,8 @@ import FilteredList from "./FilteredList";
1920
import Spinner from "../../elements/Spinner";
2021
import SyntaxHighlight from "../../elements/SyntaxHighlight";
2122
import { useAsyncMemo } from "../../../../hooks/useAsyncMemo";
23+
import LabelledToggleSwitch from "../../elements/LabelledToggleSwitch";
24+
import { set } from "lodash";
2225

2326
export const StateEventEditor: React.FC<IEditorProps> = ({ mxEvent, onBack }) => {
2427
const context = useContext(DevtoolsContext);
@@ -114,6 +117,7 @@ const RoomStateExplorerEventType: React.FC<IEventTypeProps> = ({ eventType, onBa
114117
const [query, setQuery] = useState("");
115118
const [event, setEvent] = useState<MatrixEvent | null>(null);
116119
const [history, setHistory] = useState(false);
120+
const [hideEmptyState, setHideEmptyState] = useState(false);
117121

118122
const events = context.room.currentState.events.get(eventType)!;
119123

@@ -149,10 +153,13 @@ const RoomStateExplorerEventType: React.FC<IEventTypeProps> = ({ eventType, onBa
149153
return (
150154
<BaseTool onBack={onBack}>
151155
<FilteredList query={query} onChange={setQuery}>
152-
{Array.from(events.entries()).map(([stateKey, ev]) => (
153-
<StateEventButton key={stateKey} label={stateKey} onClick={() => setEvent(ev)} />
154-
))}
156+
{Array.from(events.entries())
157+
.filter(([_, ev]) => !hideEmptyState || Object.keys(ev.getContent()).length > 0)
158+
.map(([stateKey, ev]) => (
159+
<StateEventButton key={stateKey} label={stateKey} onClick={() => setEvent(ev)} />
160+
))}
155161
</FilteredList>
162+
<LabelledToggleSwitch label="Hide empty state keys" onChange={setHideEmptyState} value={hideEmptyState} />
156163
</BaseTool>
157164
);
158165
};

0 commit comments

Comments
 (0)