{
setFilterOption(opt.key);
closeMenu();
}}
isSelected={opt === value}
/>);
const contextMenu = menuDisplayed ?
{ contextMenuOptions }
: null;
return
{ _t("Threads") }
menuDisplayed ? closeMenu() : openMenu()}>
{ `${_t('Show:')} ${value.label}` }
{ contextMenu }
;
};
const ThreadPanel: React.FC = ({ roomId, onClose }) => {
const mxClient = useContext(MatrixClientContext);
const roomContext = useContext(RoomContext);
const room = mxClient.getRoom(roomId);
const [filterOption, setFilterOption] = useState(ThreadFilterType.All);
const ref = useRef();
const filteredTimelineSet = useFilteredThreadsTimelinePanel({
threads: room.threads,
room,
filterOption,
userId: mxClient.getUserId(),
updateTimeline: () => ref.current?.refreshTimeline(),
});
return (
}
className="mx_ThreadPanel"
onClose={onClose}
previousPhase={RightPanelPhases.RoomSummary}
>
empty}
alwaysShowTimestamps={true}
layout={Layout.Group}
hideThreadedMessages={false}
hidden={false}
showReactions={true}
className="mx_RoomView_messagePanel mx_GroupLayout"
membersLoaded={true}
tileShape={TileShape.ThreadPanel}
/>
);
};
export default ThreadPanel;