mirror of
				https://github.com/cinnyapp/cinny.git
				synced 2025-11-04 06:20:28 +03:00 
			
		
		
		
	Add room notification mode switcher in room header menu (#2284)
This commit is contained in:
		
							parent
							
								
									1361c1d5de
								
							
						
					
					
						commit
						7d54eef95b
					
				
					 1 changed files with 30 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -20,6 +20,7 @@ import {
 | 
			
		|||
  PopOut,
 | 
			
		||||
  RectCords,
 | 
			
		||||
  Badge,
 | 
			
		||||
  Spinner,
 | 
			
		||||
} from 'folds';
 | 
			
		||||
import { useNavigate } from 'react-router-dom';
 | 
			
		||||
import { JoinRule, Room } from 'matrix-js-sdk';
 | 
			
		||||
| 
						 | 
				
			
			@ -58,6 +59,12 @@ import { useMediaAuthentication } from '../../hooks/useMediaAuthentication';
 | 
			
		|||
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;
 | 
			
		||||
| 
						 | 
				
			
			@ -70,6 +77,8 @@ const RoomMenu = forwardRef<HTMLDivElement, RoomMenuProps>(({ room, requestClose
 | 
			
		|||
  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);
 | 
			
		||||
| 
						 | 
				
			
			@ -109,6 +118,27 @@ const RoomMenu = forwardRef<HTMLDivElement, RoomMenuProps>(({ room, requestClose
 | 
			
		|||
            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 }}>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue