PopOut,
RectCords,
Badge,
+ Spinner,
} from 'folds';
import { useNavigate } from 'react-router-dom';
import { JoinRule, Room } from 'matrix-js-sdk';
import { useRoomPinnedEvents } from '../../hooks/useRoomPinnedEvents';
import { RoomPinMenu } from './room-pin-menu';
import { useOpenRoomSettings } from '../../state/hooks/roomSettings';
+import { RoomNotificationModeSwitcher } from '../../components/RoomNotificationSwitcher';
+import {
+ getRoomNotificationMode,
+ getRoomNotificationModeIcon,
+ useRoomsNotificationPreferencesContext,
+} from '../../hooks/useRoomsNotificationPreferences';
type RoomMenuProps = {
room: Room;
const powerLevels = usePowerLevelsContext();
const { getPowerLevel, canDoAction } = usePowerLevelsAPI(powerLevels);
const canInvite = canDoAction('invite', getPowerLevel(mx.getUserId() ?? ''));
+ const notificationPreferences = useRoomsNotificationPreferencesContext();
+ const notificationMode = getRoomNotificationMode(notificationPreferences, room.roomId);
const handleMarkAsRead = () => {
markAsRead(mx, room.roomId, hideActivity);
Mark as Read
</Text>
</MenuItem>
+ <RoomNotificationModeSwitcher roomId={room.roomId} value={notificationMode}>
+ {(handleOpen, opened, changing) => (
+ <MenuItem
+ size="300"
+ after={
+ changing ? (
+ <Spinner size="100" variant="Secondary" />
+ ) : (
+ <Icon size="100" src={getRoomNotificationModeIcon(notificationMode)} />
+ )
+ }
+ radii="300"
+ aria-pressed={opened}
+ onClick={handleOpen}
+ >
+ <Text style={{ flexGrow: 1 }} as="span" size="T300" truncate>
+ Notifications
+ </Text>
+ </MenuItem>
+ )}
+ </RoomNotificationModeSwitcher>
</Box>
<Line variant="Surface" size="300" />
<Box direction="Column" gap="100" style={{ padding: config.space.S100 }}>