matrix-react-sdk
Version:
SDK for matrix.org using React
62 lines (57 loc) • 8.86 kB
JavaScript
;
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