UNPKG

matrix-react-sdk

Version:
62 lines (57 loc) 8.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useRoomThreadNotifications = void 0; var _matrix = require("matrix-js-sdk/src/matrix"); var _react = require("react"); var _NotificationLevel = require("../../stores/notifications/NotificationLevel"); var _Unread = require("../../Unread"); var _useEventEmitter = require("../useEventEmitter"); /* Copyright 2024 New Vector Ltd. Copyright 2023 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ /** * Tracks the thread unread state for an entire room * @param room the room to track * @returns the type of notification for this room */ const useRoomThreadNotifications = room => { const [notificationLevel, setNotificationLevel] = (0, _react.useState)(_NotificationLevel.NotificationLevel.None); const updateNotification = (0, _react.useCallback)(() => { switch (room?.threadsAggregateNotificationType) { case _matrix.NotificationCountType.Highlight: setNotificationLevel(_NotificationLevel.NotificationLevel.Highlight); return; case _matrix.NotificationCountType.Total: setNotificationLevel(_NotificationLevel.NotificationLevel.Notification); return; } // We don't have any notified messages, but we might have unread messages. Let's // find out. if ((0, _Unread.doesRoomHaveUnreadThreads)(room)) { setNotificationLevel(_NotificationLevel.NotificationLevel.Activity); return; } // default case setNotificationLevel(_NotificationLevel.NotificationLevel.None); }, [room]); (0, _useEventEmitter.useEventEmitter)(room, _matrix.RoomEvent.UnreadNotifications, updateNotification); (0, _useEventEmitter.useEventEmitter)(room, _matrix.RoomEvent.Receipt, updateNotification); (0, _useEventEmitter.useEventEmitter)(room, _matrix.RoomEvent.Timeline, updateNotification); (0, _useEventEmitter.useEventEmitter)(room, _matrix.RoomEvent.Redaction, updateNotification); (0, _useEventEmitter.useEventEmitter)(room, _matrix.RoomEvent.LocalEchoUpdated, updateNotification); (0, _useEventEmitter.useEventEmitter)(room, _matrix.RoomEvent.MyMembership, updateNotification); (0, _useEventEmitter.useEventEmitter)(room, _matrix.ThreadEvent.New, updateNotification); (0, _useEventEmitter.useEventEmitter)(room, _matrix.ThreadEvent.Update, updateNotification); // Compute the notification once when mouting a room (0, _react.useEffect)(() => { updateNotification(); }, [updateNotification]); return notificationLevel; }; exports.useRoomThreadNotifications = useRoomThreadNotifications; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9Ob3RpZmljYXRpb25MZXZlbCIsIl9VbnJlYWQiLCJfdXNlRXZlbnRFbWl0dGVyIiwidXNlUm9vbVRocmVhZE5vdGlmaWNhdGlvbnMiLCJyb29tIiwibm90aWZpY2F0aW9uTGV2ZWwiLCJzZXROb3RpZmljYXRpb25MZXZlbCIsInVzZVN0YXRlIiwiTm90aWZpY2F0aW9uTGV2ZWwiLCJOb25lIiwidXBkYXRlTm90aWZpY2F0aW9uIiwidXNlQ2FsbGJhY2siLCJ0aHJlYWRzQWdncmVnYXRlTm90aWZpY2F0aW9uVHlwZSIsIk5vdGlmaWNhdGlvbkNvdW50VHlwZSIsIkhpZ2hsaWdodCIsIlRvdGFsIiwiTm90aWZpY2F0aW9uIiwiZG9lc1Jvb21IYXZlVW5yZWFkVGhyZWFkcyIsIkFjdGl2aXR5IiwidXNlRXZlbnRFbWl0dGVyIiwiUm9vbUV2ZW50IiwiVW5yZWFkTm90aWZpY2F0aW9ucyIsIlJlY2VpcHQiLCJUaW1lbGluZSIsIlJlZGFjdGlvbiIsIkxvY2FsRWNob1VwZGF0ZWQiLCJNeU1lbWJlcnNoaXAiLCJUaHJlYWRFdmVudCIsIk5ldyIsIlVwZGF0ZSIsInVzZUVmZmVjdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3Mvcm9vbS91c2VSb29tVGhyZWFkTm90aWZpY2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25Db3VudFR5cGUsIFJvb20sIFJvb21FdmVudCwgVGhyZWFkRXZlbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25MZXZlbCB9IGZyb20gXCIuLi8uLi9zdG9yZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25MZXZlbFwiO1xuaW1wb3J0IHsgZG9lc1Jvb21IYXZlVW5yZWFkVGhyZWFkcyB9IGZyb20gXCIuLi8uLi9VbnJlYWRcIjtcbmltcG9ydCB7IHVzZUV2ZW50RW1pdHRlciB9IGZyb20gXCIuLi91c2VFdmVudEVtaXR0ZXJcIjtcblxuLyoqXG4gKiBUcmFja3MgdGhlIHRocmVhZCB1bnJlYWQgc3RhdGUgZm9yIGFuIGVudGlyZSByb29tXG4gKiBAcGFyYW0gcm9vbSB0aGUgcm9vbSB0byB0cmFja1xuICogQHJldHVybnMgdGhlIHR5cGUgb2Ygbm90aWZpY2F0aW9uIGZvciB0aGlzIHJvb21cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVJvb21UaHJlYWROb3RpZmljYXRpb25zID0gKHJvb206IFJvb20pOiBOb3RpZmljYXRpb25MZXZlbCA9PiB7XG4gICAgY29uc3QgW25vdGlmaWNhdGlvbkxldmVsLCBzZXROb3RpZmljYXRpb25MZXZlbF0gPSB1c2VTdGF0ZShOb3RpZmljYXRpb25MZXZlbC5Ob25lKTtcblxuICAgIGNvbnN0IHVwZGF0ZU5vdGlmaWNhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc3dpdGNoIChyb29tPy50aHJlYWRzQWdncmVnYXRlTm90aWZpY2F0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Db3VudFR5cGUuSGlnaGxpZ2h0OlxuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbkxldmVsKE5vdGlmaWNhdGlvbkxldmVsLkhpZ2hsaWdodCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Db3VudFR5cGUuVG90YWw6XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uTGV2ZWwoTm90aWZpY2F0aW9uTGV2ZWwuTm90aWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgbm90aWZpZWQgbWVzc2FnZXMsIGJ1dCB3ZSBtaWdodCBoYXZlIHVucmVhZCBtZXNzYWdlcy4gTGV0J3NcbiAgICAgICAgLy8gZmluZCBvdXQuXG4gICAgICAgIGlmIChkb2VzUm9vbUhhdmVVbnJlYWRUaHJlYWRzKHJvb20pKSB7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb25MZXZlbChOb3RpZmljYXRpb25MZXZlbC5BY3Rpdml0eSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZWZhdWx0IGNhc2VcbiAgICAgICAgc2V0Tm90aWZpY2F0aW9uTGV2ZWwoTm90aWZpY2F0aW9uTGV2ZWwuTm9uZSk7XG4gICAgfSwgW3Jvb21dKTtcblxuICAgIHVzZUV2ZW50RW1pdHRlcihyb29tLCBSb29tRXZlbnQuVW5yZWFkTm90aWZpY2F0aW9ucywgdXBkYXRlTm90aWZpY2F0aW9uKTtcbiAgICB1c2VFdmVudEVtaXR0ZXIocm9vbSwgUm9vbUV2ZW50LlJlY2VpcHQsIHVwZGF0ZU5vdGlmaWNhdGlvbik7XG4gICAgdXNlRXZlbnRFbWl0dGVyKHJvb20sIFJvb21FdmVudC5UaW1lbGluZSwgdXBkYXRlTm90aWZpY2F0aW9uKTtcbiAgICB1c2VFdmVudEVtaXR0ZXIocm9vbSwgUm9vbUV2ZW50LlJlZGFjdGlvbiwgdXBkYXRlTm90aWZpY2F0aW9uKTtcbiAgICB1c2VFdmVudEVtaXR0ZXIocm9vbSwgUm9vbUV2ZW50LkxvY2FsRWNob1VwZGF0ZWQsIHVwZGF0ZU5vdGlmaWNhdGlvbik7XG4gICAgdXNlRXZlbnRFbWl0dGVyKHJvb20sIFJvb21FdmVudC5NeU1lbWJlcnNoaXAsIHVwZGF0ZU5vdGlmaWNhdGlvbik7XG4gICAgdXNlRXZlbnRFbWl0dGVyKHJvb20sIFRocmVhZEV2ZW50Lk5ldywgdXBkYXRlTm90aWZpY2F0aW9uKTtcbiAgICB1c2VFdmVudEVtaXR0ZXIocm9vbSwgVGhyZWFkRXZlbnQuVXBkYXRlLCB1cGRhdGVOb3RpZmljYXRpb24pO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgbm90aWZpY2F0aW9uIG9uY2Ugd2hlbiBtb3V0aW5nIGEgcm9vbVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZU5vdGlmaWNhdGlvbigpO1xuICAgIH0sIFt1cGRhdGVOb3RpZmljYXRpb25dKTtcblxuICAgIHJldHVybiBub3RpZmljYXRpb25MZXZlbDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1LLDBCQUEwQixHQUFJQyxJQUFVLElBQXdCO0VBQ3pFLE1BQU0sQ0FBQ0MsaUJBQWlCLEVBQUVDLG9CQUFvQixDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFDQyxvQ0FBaUIsQ0FBQ0MsSUFBSSxDQUFDO0VBRWxGLE1BQU1DLGtCQUFrQixHQUFHLElBQUFDLGtCQUFXLEVBQUMsTUFBTTtJQUN6QyxRQUFRUCxJQUFJLEVBQUVRLGdDQUFnQztNQUMxQyxLQUFLQyw2QkFBcUIsQ0FBQ0MsU0FBUztRQUNoQ1Isb0JBQW9CLENBQUNFLG9DQUFpQixDQUFDTSxTQUFTLENBQUM7UUFDakQ7TUFDSixLQUFLRCw2QkFBcUIsQ0FBQ0UsS0FBSztRQUM1QlQsb0JBQW9CLENBQUNFLG9DQUFpQixDQUFDUSxZQUFZLENBQUM7UUFDcEQ7SUFDUjtJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUFDLGlDQUF5QixFQUFDYixJQUFJLENBQUMsRUFBRTtNQUNqQ0Usb0JBQW9CLENBQUNFLG9DQUFpQixDQUFDVSxRQUFRLENBQUM7TUFDaEQ7SUFDSjs7SUFFQTtJQUNBWixvQkFBb0IsQ0FBQ0Usb0NBQWlCLENBQUNDLElBQUksQ0FBQztFQUNoRCxDQUFDLEVBQUUsQ0FBQ0wsSUFBSSxDQUFDLENBQUM7RUFFVixJQUFBZSxnQ0FBZSxFQUFDZixJQUFJLEVBQUVnQixpQkFBUyxDQUFDQyxtQkFBbUIsRUFBRVgsa0JBQWtCLENBQUM7RUFDeEUsSUFBQVMsZ0NBQWUsRUFBQ2YsSUFBSSxFQUFFZ0IsaUJBQVMsQ0FBQ0UsT0FBTyxFQUFFWixrQkFBa0IsQ0FBQztFQUM1RCxJQUFBUyxnQ0FBZSxFQUFDZixJQUFJLEVBQUVnQixpQkFBUyxDQUFDRyxRQUFRLEVBQUViLGtCQUFrQixDQUFDO0VBQzdELElBQUFTLGdDQUFlLEVBQUNmLElBQUksRUFBRWdCLGlCQUFTLENBQUNJLFNBQVMsRUFBRWQsa0JBQWtCLENBQUM7RUFDOUQsSUFBQVMsZ0NBQWUsRUFBQ2YsSUFBSSxFQUFFZ0IsaUJBQVMsQ0FBQ0ssZ0JBQWdCLEVBQUVmLGtCQUFrQixDQUFDO0VBQ3JFLElBQUFTLGdDQUFlLEVBQUNmLElBQUksRUFBRWdCLGlCQUFTLENBQUNNLFlBQVksRUFBRWhCLGtCQUFrQixDQUFDO0VBQ2pFLElBQUFTLGdDQUFlLEVBQUNmLElBQUksRUFBRXVCLG1CQUFXLENBQUNDLEdBQUcsRUFBRWxCLGtCQUFrQixDQUFDO0VBQzFELElBQUFTLGdDQUFlLEVBQUNmLElBQUksRUFBRXVCLG1CQUFXLENBQUNFLE1BQU0sRUFBRW5CLGtCQUFrQixDQUFDOztFQUU3RDtFQUNBLElBQUFvQixnQkFBUyxFQUFDLE1BQU07SUFDWnBCLGtCQUFrQixDQUFDLENBQUM7RUFDeEIsQ0FBQyxFQUFFLENBQUNBLGtCQUFrQixDQUFDLENBQUM7RUFFeEIsT0FBT0wsaUJBQWlCO0FBQzVCLENBQUM7QUFBQzBCLE9BQUEsQ0FBQTVCLDBCQUFBLEdBQUFBLDBCQUFBIiwiaWdub3JlTGlzdCI6W119