vojo/src/app/organisms/room/Room.tsx
Ajay Bura 50429a3513
Member drawer filter (#1457)
* save member drawer sort filter in local storage

* render member drawer with key

* improve member search
2023-10-19 17:43:16 +11:00

46 lines
1.5 KiB
TypeScript

import React from 'react';
import './Room.scss';
import { Room } from 'matrix-js-sdk';
import { Line } from 'folds';
import RoomView from './RoomView';
import RoomSettings from './RoomSettings';
import { MembersDrawer } from './MembersDrawer';
import { ScreenSize, useScreenSize } from '../../hooks/useScreenSize';
import { useSetting } from '../../state/hooks/settings';
import { settingsAtom } from '../../state/settings';
import { PowerLevelsContextProvider, usePowerLevels } from '../../hooks/usePowerLevels';
import {
roomIdToTypingMembersAtom,
useBindRoomIdToTypingMembersAtom,
} from '../../state/typingMembers';
export type RoomBaseViewProps = {
room: Room;
eventId?: string;
};
export function RoomBaseView({ room, eventId }: RoomBaseViewProps) {
useBindRoomIdToTypingMembersAtom(room.client, roomIdToTypingMembersAtom);
const [isDrawer] = useSetting(settingsAtom, 'isPeopleDrawer');
const [screenSize] = useScreenSize();
const powerLevelAPI = usePowerLevels(room);
return (
<PowerLevelsContextProvider value={powerLevelAPI}>
<div className="room">
<div className="room__content">
<RoomSettings roomId={room.roomId} />
<RoomView room={room} eventId={eventId} />
</div>
{screenSize === ScreenSize.Desktop && isDrawer && (
<>
<Line variant="Background" direction="Vertical" size="300" />
<MembersDrawer key={room.roomId} room={room} />
</>
)}
</div>
</PowerLevelsContextProvider>
);
}