UNPKG

matrix-react-sdk

Version:
96 lines (93 loc) 14.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _compoundWeb = require("@vector-im/compound-web"); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _NotificationState = require("../../../stores/notifications/NotificationState"); var _languageHandler = require("../../../languageHandler"); var _NotificationLevel = require("../../../stores/notifications/NotificationLevel"); var _StatelessNotificationBadge = require("./NotificationBadge/StatelessNotificationBadge"); /* Copyright 2024 New Vector Ltd. Copyright 2020 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. */ class NotificationBadge extends _react.default.PureComponent { constructor(props) { super(props); (0, _defineProperty2.default)(this, "countWatcherRef", void 0); (0, _defineProperty2.default)(this, "countPreferenceChanged", () => { this.setState({ showCounts: _SettingsStore.default.getValue("Notifications.alwaysShowBadgeCounts", this.roomId) }); }); (0, _defineProperty2.default)(this, "onNotificationUpdate", () => { this.forceUpdate(); // notification state changed - update }); this.props.notification.on(_NotificationState.NotificationStateEvents.Update, this.onNotificationUpdate); this.state = { showCounts: _SettingsStore.default.getValue("Notifications.alwaysShowBadgeCounts", this.roomId) }; this.countWatcherRef = _SettingsStore.default.watchSetting("Notifications.alwaysShowBadgeCounts", this.roomId, this.countPreferenceChanged); } get roomId() { // We should convert this to null for safety with the SettingsStore return this.props.roomId || null; } componentWillUnmount() { _SettingsStore.default.unwatchSetting(this.countWatcherRef); this.props.notification.off(_NotificationState.NotificationStateEvents.Update, this.onNotificationUpdate); } componentDidUpdate(prevProps) { if (prevProps.notification) { prevProps.notification.off(_NotificationState.NotificationStateEvents.Update, this.onNotificationUpdate); } this.props.notification.on(_NotificationState.NotificationStateEvents.Update, this.onNotificationUpdate); } render() { /* eslint @typescript-eslint/no-unused-vars: ["error", { "ignoreRestSiblings": true }] */ const { notification, showUnsentTooltip, hideIfDot, onClick, tabIndex } = this.props; if (notification.isIdle && !notification.knocked) return null; if (hideIfDot && notification.level < _NotificationLevel.NotificationLevel.Notification) { // This would just be a dot and we've been told not to show dots, so don't show it return null; } const commonProps = { symbol: notification.symbol, count: notification.count, level: notification.level, knocked: notification.knocked }; let badge; if (onClick) { badge = /*#__PURE__*/_react.default.createElement(_StatelessNotificationBadge.StatelessNotificationBadge, (0, _extends2.default)({}, commonProps, { onClick: onClick, tabIndex: tabIndex })); } else { badge = /*#__PURE__*/_react.default.createElement(_StatelessNotificationBadge.StatelessNotificationBadge, commonProps); } if (showUnsentTooltip && notification.level === _NotificationLevel.NotificationLevel.Unsent) { return /*#__PURE__*/_react.default.createElement(_compoundWeb.Tooltip, { label: (0, _languageHandler._t)("notifications|message_didnt_send"), placement: "right" }, badge); } return badge; } } exports.default = NotificationBadge; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb21wb3VuZFdlYiIsIl9TZXR0aW5nc1N0b3JlIiwiX05vdGlmaWNhdGlvblN0YXRlIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9Ob3RpZmljYXRpb25MZXZlbCIsIl9TdGF0ZWxlc3NOb3RpZmljYXRpb25CYWRnZSIsIk5vdGlmaWNhdGlvbkJhZGdlIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0Iiwic2V0U3RhdGUiLCJzaG93Q291bnRzIiwiU2V0dGluZ3NTdG9yZSIsImdldFZhbHVlIiwicm9vbUlkIiwiZm9yY2VVcGRhdGUiLCJub3RpZmljYXRpb24iLCJvbiIsIk5vdGlmaWNhdGlvblN0YXRlRXZlbnRzIiwiVXBkYXRlIiwib25Ob3RpZmljYXRpb25VcGRhdGUiLCJzdGF0ZSIsImNvdW50V2F0Y2hlclJlZiIsIndhdGNoU2V0dGluZyIsImNvdW50UHJlZmVyZW5jZUNoYW5nZWQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInVud2F0Y2hTZXR0aW5nIiwib2ZmIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicmVuZGVyIiwic2hvd1Vuc2VudFRvb2x0aXAiLCJoaWRlSWZEb3QiLCJvbkNsaWNrIiwidGFiSW5kZXgiLCJpc0lkbGUiLCJrbm9ja2VkIiwibGV2ZWwiLCJOb3RpZmljYXRpb25MZXZlbCIsIk5vdGlmaWNhdGlvbiIsImNvbW1vblByb3BzIiwic3ltYm9sIiwiY291bnQiLCJiYWRnZSIsImNyZWF0ZUVsZW1lbnQiLCJTdGF0ZWxlc3NOb3RpZmljYXRpb25CYWRnZSIsIl9leHRlbmRzMiIsIlVuc2VudCIsIlRvb2x0aXAiLCJsYWJlbCIsIl90IiwicGxhY2VtZW50IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3Jvb21zL05vdGlmaWNhdGlvbkJhZGdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkB2ZWN0b3ItaW0vY29tcG91bmQtd2ViXCI7XG5cbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBYT1IgfSBmcm9tIFwiLi4vLi4vLi4vQHR5cGVzL2NvbW1vblwiO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU3RhdGUsIE5vdGlmaWNhdGlvblN0YXRlRXZlbnRzIH0gZnJvbSBcIi4uLy4uLy4uL3N0b3Jlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblN0YXRlXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkxldmVsIH0gZnJvbSBcIi4uLy4uLy4uL3N0b3Jlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkxldmVsXCI7XG5pbXBvcnQgeyBTdGF0ZWxlc3NOb3RpZmljYXRpb25CYWRnZSB9IGZyb20gXCIuL05vdGlmaWNhdGlvbkJhZGdlL1N0YXRlbGVzc05vdGlmaWNhdGlvbkJhZGdlXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uU3RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlLCBzaG93IG5vdGhpbmcgaWYgdGhlIG5vdGlmaWNhdGlvbiB3b3VsZCBvbmx5IGNhdXNlIGEgZG90IHRvIGJlIHNob3duIHJhdGhlciB0aGFuXG4gICAgICogYSBiYWRnZS4gVGhhdCBpczogb25seSBkaXNwbGF5IGJhZGdlcyBhbmQgbm90IGRvdHMuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAqL1xuICAgIGhpZGVJZkRvdD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcm9vbSBJRCwgaWYgYW55LCB0aGUgYmFkZ2UgcmVwcmVzZW50cy5cbiAgICAgKi9cbiAgICByb29tSWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJQ2xpY2thYmxlUHJvcHMgZXh0ZW5kcyBJUHJvcHMsIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8RWxlbWVudD4ge1xuICAgIHNob3dVbnNlbnRUb29sdGlwPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBJZiBzcGVjaWZpZWQgd2lsbCByZXR1cm4gYW4gQWNjZXNzaWJsZUJ1dHRvbiBpbnN0ZWFkIG9mIGEgZGl2LlxuICAgICAqL1xuICAgIG9uQ2xpY2soZXY6IFJlYWN0Lk1vdXNlRXZlbnQpOiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBzaG93Q291bnRzOiBib29sZWFuOyAvLyB3aGV0aGVyIHRvIHNob3cgY291bnRzLlxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb3RpZmljYXRpb25CYWRnZSBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8WE9SPElQcm9wcywgSUNsaWNrYWJsZVByb3BzPiwgSVN0YXRlPiB7XG4gICAgcHJpdmF0ZSBjb3VudFdhdGNoZXJSZWY6IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wczogSVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5wcm9wcy5ub3RpZmljYXRpb24ub24oTm90aWZpY2F0aW9uU3RhdGVFdmVudHMuVXBkYXRlLCB0aGlzLm9uTm90aWZpY2F0aW9uVXBkYXRlKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgc2hvd0NvdW50czogU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShcIk5vdGlmaWNhdGlvbnMuYWx3YXlzU2hvd0JhZGdlQ291bnRzXCIsIHRoaXMucm9vbUlkKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNvdW50V2F0Y2hlclJlZiA9IFNldHRpbmdzU3RvcmUud2F0Y2hTZXR0aW5nKFxuICAgICAgICAgICAgXCJOb3RpZmljYXRpb25zLmFsd2F5c1Nob3dCYWRnZUNvdW50c1wiLFxuICAgICAgICAgICAgdGhpcy5yb29tSWQsXG4gICAgICAgICAgICB0aGlzLmNvdW50UHJlZmVyZW5jZUNoYW5nZWQsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgcm9vbUlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAvLyBXZSBzaG91bGQgY29udmVydCB0aGlzIHRvIG51bGwgZm9yIHNhZmV0eSB3aXRoIHRoZSBTZXR0aW5nc1N0b3JlXG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnJvb21JZCB8fCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgU2V0dGluZ3NTdG9yZS51bndhdGNoU2V0dGluZyh0aGlzLmNvdW50V2F0Y2hlclJlZik7XG4gICAgICAgIHRoaXMucHJvcHMubm90aWZpY2F0aW9uLm9mZihOb3RpZmljYXRpb25TdGF0ZUV2ZW50cy5VcGRhdGUsIHRoaXMub25Ob3RpZmljYXRpb25VcGRhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBSZWFkb25seTxJUHJvcHM+KTogdm9pZCB7XG4gICAgICAgIGlmIChwcmV2UHJvcHMubm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICBwcmV2UHJvcHMubm90aWZpY2F0aW9uLm9mZihOb3RpZmljYXRpb25TdGF0ZUV2ZW50cy5VcGRhdGUsIHRoaXMub25Ob3RpZmljYXRpb25VcGRhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9wcy5ub3RpZmljYXRpb24ub24oTm90aWZpY2F0aW9uU3RhdGVFdmVudHMuVXBkYXRlLCB0aGlzLm9uTm90aWZpY2F0aW9uVXBkYXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvdW50UHJlZmVyZW5jZUNoYW5nZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q291bnRzOiBTZXR0aW5nc1N0b3JlLmdldFZhbHVlKFwiTm90aWZpY2F0aW9ucy5hbHdheXNTaG93QmFkZ2VDb3VudHNcIiwgdGhpcy5yb29tSWQpIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIG9uTm90aWZpY2F0aW9uVXBkYXRlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7IC8vIG5vdGlmaWNhdGlvbiBzdGF0ZSBjaGFuZ2VkIC0gdXBkYXRlXG4gICAgfTtcblxuICAgIHB1YmxpYyByZW5kZXIoKTogUmVhY3ROb2RlIHtcbiAgICAgICAgLyogZXNsaW50IEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyczogW1wiZXJyb3JcIiwgeyBcImlnbm9yZVJlc3RTaWJsaW5nc1wiOiB0cnVlIH1dICovXG4gICAgICAgIGNvbnN0IHsgbm90aWZpY2F0aW9uLCBzaG93VW5zZW50VG9vbHRpcCwgaGlkZUlmRG90LCBvbkNsaWNrLCB0YWJJbmRleCB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBpZiAobm90aWZpY2F0aW9uLmlzSWRsZSAmJiAhbm90aWZpY2F0aW9uLmtub2NrZWQpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAoaGlkZUlmRG90ICYmIG5vdGlmaWNhdGlvbi5sZXZlbCA8IE5vdGlmaWNhdGlvbkxldmVsLk5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBqdXN0IGJlIGEgZG90IGFuZCB3ZSd2ZSBiZWVuIHRvbGQgbm90IHRvIHNob3cgZG90cywgc28gZG9uJ3Qgc2hvdyBpdFxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21tb25Qcm9wczogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFN0YXRlbGVzc05vdGlmaWNhdGlvbkJhZGdlPiA9IHtcbiAgICAgICAgICAgIHN5bWJvbDogbm90aWZpY2F0aW9uLnN5bWJvbCxcbiAgICAgICAgICAgIGNvdW50OiBub3RpZmljYXRpb24uY291bnQsXG4gICAgICAgICAgICBsZXZlbDogbm90aWZpY2F0aW9uLmxldmVsLFxuICAgICAgICAgICAga25vY2tlZDogbm90aWZpY2F0aW9uLmtub2NrZWQsXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGJhZGdlOiBKU1guRWxlbWVudDtcbiAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICAgIGJhZGdlID0gPFN0YXRlbGVzc05vdGlmaWNhdGlvbkJhZGdlIHsuLi5jb21tb25Qcm9wc30gb25DbGljaz17b25DbGlja30gdGFiSW5kZXg9e3RhYkluZGV4fSAvPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhZGdlID0gPFN0YXRlbGVzc05vdGlmaWNhdGlvbkJhZGdlIHsuLi5jb21tb25Qcm9wc30gLz47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hvd1Vuc2VudFRvb2x0aXAgJiYgbm90aWZpY2F0aW9uLmxldmVsID09PSBOb3RpZmljYXRpb25MZXZlbC5VbnNlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgbGFiZWw9e190KFwibm90aWZpY2F0aW9uc3xtZXNzYWdlX2RpZG50X3NlbmRcIil9IHBsYWNlbWVudD1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIHtiYWRnZX1cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJhZGdlO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsa0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sMkJBQUEsR0FBQU4sT0FBQTtBQWhCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUF1Q2UsTUFBTU8saUJBQWlCLFNBQVNDLGNBQUssQ0FBQ0MsYUFBYSxDQUF1QztFQUc5RkMsV0FBV0EsQ0FBQ0MsS0FBYSxFQUFFO0lBQzlCLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0lBQUMsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQTtJQUFBLElBQUFELGdCQUFBLENBQUFDLE9BQUEsa0NBZ0NnQixNQUFZO01BQ3pDLElBQUksQ0FBQ0MsUUFBUSxDQUFDO1FBQUVDLFVBQVUsRUFBRUMsc0JBQWEsQ0FBQ0MsUUFBUSxDQUFDLHFDQUFxQyxFQUFFLElBQUksQ0FBQ0MsTUFBTTtNQUFFLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBQUEsSUFBQU4sZ0JBQUEsQ0FBQUMsT0FBQSxnQ0FFOEIsTUFBWTtNQUN2QyxJQUFJLENBQUNNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBckNHLElBQUksQ0FBQ1IsS0FBSyxDQUFDUyxZQUFZLENBQUNDLEVBQUUsQ0FBQ0MsMENBQXVCLENBQUNDLE1BQU0sRUFBRSxJQUFJLENBQUNDLG9CQUFvQixDQUFDO0lBRXJGLElBQUksQ0FBQ0MsS0FBSyxHQUFHO01BQ1RWLFVBQVUsRUFBRUMsc0JBQWEsQ0FBQ0MsUUFBUSxD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