diff --git a/src/app/molecules/room-notification/RoomNotification.jsx b/src/app/molecules/room-notification/RoomNotification.jsx index 5d11863..26d123b 100644 --- a/src/app/molecules/room-notification/RoomNotification.jsx +++ b/src/app/molecules/room-notification/RoomNotification.jsx @@ -32,28 +32,9 @@ const items = [{ type: cons.notifs.MUTE, }]; -function getNotifType(roomId) { - const mx = initMatrix.matrixClient; - const pushRule = mx.getRoomPushRule('global', roomId); - - if (typeof pushRule === 'undefined') { - const overridePushRules = mx.getAccountData('m.push_rules')?.getContent()?.global?.override; - if (typeof overridePushRules === 'undefined') return 0; - - const isMuteOverride = overridePushRules.find((rule) => ( - rule.rule_id === roomId - && rule.actions[0] === 'dont_notify' - && rule.conditions[0].kind === 'event_match' - )); - - return isMuteOverride ? cons.notifs.MUTE : cons.notifs.DEFAULT; - } - if (pushRule.actions[0] === 'notify') return cons.notifs.ALL_MESSAGES; - return cons.notifs.MENTIONS_AND_KEYWORDS; -} - function setRoomNotifType(roomId, newType) { const mx = initMatrix.matrixClient; + const { notifications } = initMatrix; const roomPushRule = mx.getRoomPushRule('global', roomId); const promises = []; @@ -76,7 +57,7 @@ function setRoomNotifType(roomId, newType) { return promises; } - const oldState = getNotifType(roomId); + const oldState = notifications.getNotiType(roomId); if (oldState === cons.notifs.MUTE) { promises.push(mx.deletePushRule('global', 'override', roomId)); } @@ -115,8 +96,9 @@ function setRoomNotifType(roomId, newType) { } function useNotifications(roomId) { - const [activeType, setActiveType] = useState(getNotifType(roomId)); - useEffect(() => setActiveType(getNotifType(roomId)), [roomId]); + const { notifications } = initMatrix; + const [activeType, setActiveType] = useState(notifications.getNotiType(roomId)); + useEffect(() => setActiveType(notifications.getNotiType(roomId)), [roomId]); const setNotification = useCallback((item) => { if (item.type === activeType.type) return; diff --git a/src/app/molecules/room-selector/RoomSelector.jsx b/src/app/molecules/room-selector/RoomSelector.jsx index 8bd6c20..fa6daa9 100644 --- a/src/app/molecules/room-selector/RoomSelector.jsx +++ b/src/app/molecules/room-selector/RoomSelector.jsx @@ -11,13 +11,16 @@ import NotificationBadge from '../../atoms/badge/NotificationBadge'; import { blurOnBubbling } from '../../atoms/button/script'; function RoomSelectorWrapper({ - isSelected, isUnread, onClick, + isSelected, isMuted, isUnread, onClick, content, options, onContextMenu, }) { - let myClass = isUnread ? ' room-selector--unread' : ''; - myClass += isSelected ? ' room-selector--selected' : ''; + const classes = ['room-selector']; + if (isMuted) classes.push('room-selector--muted'); + if (isUnread) classes.push('room-selector--unread'); + if (isSelected) classes.push('room-selector--selected'); + return ( -
+