UNPKG

matrix-react-sdk

Version:
63 lines (56 loc) 10.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = shouldHideEvent; var _matrix = require("matrix-js-sdk/src/matrix"); var _types = require("matrix-js-sdk/src/types"); var _SettingsStore = _interopRequireDefault(require("./settings/SettingsStore")); /* Copyright 2024 New Vector Ltd. Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ function memberEventDiff(ev) { const diff = { isMemberEvent: ev.getType() === _matrix.EventType.RoomMember }; // If is not a Member Event then the other checks do not apply, so bail early. if (!diff.isMemberEvent) return diff; const content = ev.getContent(); const prevContent = ev.getPrevContent(); const isMembershipChanged = content.membership !== prevContent.membership; diff.isJoin = isMembershipChanged && content.membership === _types.KnownMembership.Join; diff.isPart = isMembershipChanged && content.membership === _types.KnownMembership.Leave && ev.getStateKey() === ev.getSender(); const isJoinToJoin = !isMembershipChanged && content.membership === _types.KnownMembership.Join; diff.isDisplaynameChange = isJoinToJoin && content.displayname !== prevContent.displayname; diff.isAvatarChange = isJoinToJoin && content.avatar_url !== prevContent.avatar_url; return diff; } /** * Determines whether the given event should be hidden from timelines. * @param ev The event * @param ctx An optional RoomContext to pull cached settings values from to avoid * hitting the settings store */ function shouldHideEvent(ev, ctx) { // Accessing the settings store directly can be expensive if done frequently, // so we should prefer using cached values if a RoomContext is available const isEnabled = ctx ? name => ctx[name] : name => _SettingsStore.default.getValue(name, ev.getRoomId()); // Hide redacted events // Deleted events with a thread are always shown regardless of user preference // to make sure that a thread can be accessible even if the root message is deleted if (ev.isRedacted() && !isEnabled("showRedactions") && !ev.getThread()) return true; // Hide replacement events since they update the original tile (if enabled) if (ev.isRelation(_matrix.RelationType.Replace)) return true; const eventDiff = memberEventDiff(ev); if (eventDiff.isMemberEvent) { if ((eventDiff.isJoin || eventDiff.isPart) && !isEnabled("showJoinLeaves")) return true; if (eventDiff.isAvatarChange && !isEnabled("showAvatarChanges")) return true; if (eventDiff.isDisplaynameChange && !isEnabled("showDisplaynameChanges")) return true; } return false; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl90eXBlcyIsIl9TZXR0aW5nc1N0b3JlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm1lbWJlckV2ZW50RGlmZiIsImV2IiwiZGlmZiIsImlzTWVtYmVyRXZlbnQiLCJnZXRUeXBlIiwiRXZlbnRUeXBlIiwiUm9vbU1lbWJlciIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwicHJldkNvbnRlbnQiLCJnZXRQcmV2Q29udGVudCIsImlzTWVtYmVyc2hpcENoYW5nZWQiLCJtZW1iZXJzaGlwIiwiaXNKb2luIiwiS25vd25NZW1iZXJzaGlwIiwiSm9pbiIsImlzUGFydCIsIkxlYXZlIiwiZ2V0U3RhdGVLZXkiLCJnZXRTZW5kZXIiLCJpc0pvaW5Ub0pvaW4iLCJpc0Rpc3BsYXluYW1lQ2hhbmdlIiwiZGlzcGxheW5hbWUiLCJpc0F2YXRhckNoYW5nZSIsImF2YXRhcl91cmwiLCJzaG91bGRIaWRlRXZlbnQiLCJjdHgiLCJpc0VuYWJsZWQiLCJuYW1lIiwiU2V0dGluZ3NTdG9yZSIsImdldFZhbHVlIiwiZ2V0Um9vbUlkIiwiaXNSZWRhY3RlZCIsImdldFRocmVhZCIsImlzUmVsYXRpb24iLCJSZWxhdGlvblR5cGUiLCJSZXBsYWNlIiwiZXZlbnREaWZmIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Nob3VsZEhpZGVFdmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxNyBNaWNoYWVsIFRlbGF0eW5za2kgPDd0M2NoZ3V5QGdtYWlsLmNvbT5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuICovXG5cbmltcG9ydCB7IE1hdHJpeEV2ZW50LCBFdmVudFR5cGUsIFJlbGF0aW9uVHlwZSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCB7IEtub3duTWVtYmVyc2hpcCB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy90eXBlc1wiO1xuXG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tIFwiLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBJUm9vbVN0YXRlIH0gZnJvbSBcIi4vY29tcG9uZW50cy9zdHJ1Y3R1cmVzL1Jvb21WaWV3XCI7XG5cbmludGVyZmFjZSBJRGlmZiB7XG4gICAgaXNNZW1iZXJFdmVudDogYm9vbGVhbjtcbiAgICBpc0pvaW4/OiBib29sZWFuO1xuICAgIGlzUGFydD86IGJvb2xlYW47XG4gICAgaXNEaXNwbGF5bmFtZUNoYW5nZT86IGJvb2xlYW47XG4gICAgaXNBdmF0YXJDaGFuZ2U/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBtZW1iZXJFdmVudERpZmYoZXY6IE1hdHJpeEV2ZW50KTogSURpZmYge1xuICAgIGNvbnN0IGRpZmY6IElEaWZmID0ge1xuICAgICAgICBpc01lbWJlckV2ZW50OiBldi5nZXRUeXBlKCkgPT09IEV2ZW50VHlwZS5Sb29tTWVtYmVyLFxuICAgIH07XG5cbiAgICAvLyBJZiBpcyBub3QgYSBNZW1iZXIgRXZlbnQgdGhlbiB0aGUgb3RoZXIgY2hlY2tzIGRvIG5vdCBhcHBseSwgc28gYmFpbCBlYXJseS5cbiAgICBpZiAoIWRpZmYuaXNNZW1iZXJFdmVudCkgcmV0dXJuIGRpZmY7XG5cbiAgICBjb25zdCBjb250ZW50ID0gZXYuZ2V0Q29udGVudCgpO1xuICAgIGNvbnN0IHByZXZDb250ZW50ID0gZXYuZ2V0UHJldkNvbnRlbnQoKTtcblxuICAgIGNvbnN0IGlzTWVtYmVyc2hpcENoYW5nZWQgPSBjb250ZW50Lm1lbWJlcnNoaXAgIT09IHByZXZDb250ZW50Lm1lbWJlcnNoaXA7XG4gICAgZGlmZi5pc0pvaW4gPSBpc01lbWJlcnNoaXBDaGFuZ2VkICYmIGNvbnRlbnQubWVtYmVyc2hpcCA9PT0gS25vd25NZW1iZXJzaGlwLkpvaW47XG4gICAgZGlmZi5pc1BhcnQgPVxuICAgICAgICBpc01lbWJlcnNoaXBDaGFuZ2VkICYmIGNvbnRlbnQubWVtYmVyc2hpcCA9PT0gS25vd25NZW1iZXJzaGlwLkxlYXZlICYmIGV2LmdldFN0YXRlS2V5KCkgPT09IGV2LmdldFNlbmRlcigpO1xuXG4gICAgY29uc3QgaXNKb2luVG9Kb2luID0gIWlzTWVtYmVyc2hpcENoYW5nZWQgJiYgY29udGVudC5tZW1iZXJzaGlwID09PSBLbm93bk1lbWJlcnNoaXAuSm9pbjtcbiAgICBkaWZmLmlzRGlzcGxheW5hbWVDaGFuZ2UgPSBpc0pvaW5Ub0pvaW4gJiYgY29udGVudC5kaXNwbGF5bmFtZSAhPT0gcHJldkNvbnRlbnQuZGlzcGxheW5hbWU7XG4gICAgZGlmZi5pc0F2YXRhckNoYW5nZSA9IGlzSm9pblRvSm9pbiAmJiBjb250ZW50LmF2YXRhcl91cmwgIT09IHByZXZDb250ZW50LmF2YXRhcl91cmw7XG4gICAgcmV0dXJuIGRpZmY7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBldmVudCBzaG91bGQgYmUgaGlkZGVuIGZyb20gdGltZWxpbmVzLlxuICogQHBhcmFtIGV2IFRoZSBldmVudFxuICogQHBhcmFtIGN0eCBBbiBvcHRpb25hbCBSb29tQ29udGV4dCB0byBwdWxsIGNhY2hlZCBzZXR0aW5ncyB2YWx1ZXMgZnJvbSB0byBhdm9pZFxuICogICAgIGhpdHRpbmcgdGhlIHNldHRpbmdzIHN0b3JlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNob3VsZEhpZGVFdmVudChldjogTWF0cml4RXZlbnQsIGN0eD86IElSb29tU3RhdGUpOiBib29sZWFuIHtcbiAgICAvLyBBY2Nlc3NpbmcgdGhlIHNldHRpbmdzIHN0b3JlIGRpcmVjdGx5IGNhbiBiZSBleHBlbnNpdmUgaWYgZG9uZSBmcmVxdWVudGx5LFxuICAgIC8vIHNvIHdlIHNob3VsZCBwcmVmZXIgdXNpbmcgY2FjaGVkIHZhbHVlcyBpZiBhIFJvb21Db250ZXh0IGlzIGF2YWlsYWJsZVxuICAgIGNvbnN0IGlzRW5hYmxlZCA9IGN0eFxuICAgICAgICA/IChuYW1lOiBrZXlvZiBJUm9vbVN0YXRlKSA9PiBjdHhbbmFtZV1cbiAgICAgICAgOiAobmFtZTogc3RyaW5nKSA9PiBTZXR0aW5nc1N0b3JlLmdldFZhbHVlKG5hbWUsIGV2LmdldFJvb21JZCgpKTtcblxuICAgIC8vIEhpZGUgcmVkYWN0ZWQgZXZlbnRzXG4gICAgLy8gRGVsZXRlZCBldmVudHMgd2l0aCBhIHRocmVhZCBhcmUgYWx3YXlzIHNob3duIHJlZ2FyZGxlc3Mgb2YgdXNlciBwcmVmZXJlbmNlXG4gICAgLy8gdG8gbWFrZSBzdXJlIHRoYXQgYSB0aHJlYWQgY2FuIGJlIGFjY2Vzc2libGUgZXZlbiBpZiB0aGUgcm9vdCBtZXNzYWdlIGlzIGRlbGV0ZWRcbiAgICBpZiAoZXYuaXNSZWRhY3RlZCgpICYmICFpc0VuYWJsZWQoXCJzaG93UmVkYWN0aW9uc1wiKSAmJiAhZXYuZ2V0VGhyZWFkKCkpIHJldHVybiB0cnVlO1xuXG4gICAgLy8gSGlkZSByZXBsYWNlbWVudCBldmVudHMgc2luY2UgdGhleSB1cGRhdGUgdGhlIG9yaWdpbmFsIHRpbGUgKGlmIGVuYWJsZWQpXG4gICAgaWYgKGV2LmlzUmVsYXRpb24oUmVsYXRpb25UeXBlLlJlcGxhY2UpKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGV2ZW50RGlmZiA9IG1lbWJlckV2ZW50RGlmZihldik7XG5cbiAgICBpZiAoZXZlbnREaWZmLmlzTWVtYmVyRXZlbnQpIHtcbiAgICAgICAgaWYgKChldmVudERpZmYuaXNKb2luIHx8IGV2ZW50RGlmZi5pc1BhcnQpICYmICFpc0VuYWJsZWQoXCJzaG93Sm9pbkxlYXZlc1wiKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChldmVudERpZmYuaXNBdmF0YXJDaGFuZ2UgJiYgIWlzRW5hYmxlZChcInNob3dBdmF0YXJDaGFuZ2VzXCIpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGV2ZW50RGlmZi5pc0Rpc3BsYXluYW1lQ2hhbmdlICYmICFpc0VuYWJsZWQoXCJzaG93RGlzcGxheW5hbWVDaGFuZ2VzXCIpKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFnQkEsU0FBU0ksZUFBZUEsQ0FBQ0MsRUFBZSxFQUFTO0VBQzdDLE1BQU1DLElBQVcsR0FBRztJQUNoQkMsYUFBYSxFQUFFRixFQUFFLENBQUNHLE9BQU8sQ0FBQyxDQUFDLEtBQUtDLGlCQUFTLENBQUNDO0VBQzlDLENBQUM7O0VBRUQ7RUFDQSxJQUFJLENBQUNKLElBQUksQ0FBQ0MsYUFBYSxFQUFFLE9BQU9ELElBQUk7RUFFcEMsTUFBTUssT0FBTyxHQUFHTixFQUFFLENBQUNPLFVBQVUsQ0FBQyxDQUFDO0VBQy9CLE1BQU1DLFdBQVcsR0FBR1IsRUFBRSxDQUFDUyxjQUFjLENBQUMsQ0FBQztFQUV2QyxNQUFNQyxtQkFBbUIsR0FBR0osT0FBTyxDQUFDSyxVQUFVLEtBQUtILFdBQVcsQ0FBQ0csVUFBVTtFQUN6RVYsSUFBSSxDQUFDVyxNQUFNLEdBQUdGLG1CQUFtQixJQUFJSixPQUFPLENBQUNLLFVBQVUsS0FBS0Usc0JBQWUsQ0FBQ0MsSUFBSTtFQUNoRmIsSUFBSSxDQUFDYyxNQUFNLEdBQ1BMLG1CQUFtQixJQUFJSixPQUFPLENBQUNLLFVBQVUsS0FBS0Usc0JBQWUsQ0FBQ0csS0FBSyxJQUFJaEIsRUFBRSxDQUFDaUIsV0FBVyxDQUFDLENBQUMsS0FBS2pCLEVBQUUsQ0FBQ2tCLFNBQVMsQ0FBQyxDQUFDO0VBRTlHLE1BQU1DLFlBQVksR0FBRyxDQUFDVCxtQkFBbUIsSUFBSUosT0FBTyxDQUFDSyxVQUFVLEtBQUtFLHNCQUFlLENBQUNDLElBQUk7RUFDeEZiLElBQUksQ0FBQ21CLG1CQUFtQixHQUFHRCxZQUFZLElBQUliLE9BQU8sQ0FBQ2UsV0FBVyxLQUFLYixXQUFXLENBQUNhLFdBQVc7RUFDMUZwQixJQUFJLENBQUNxQixjQUFjLEdBQUdILFlBQVksSUFBSWIsT0FBTyxDQUFDaUIsVUFBVSxLQUFLZixXQUFXLENBQUNlLFVBQVU7RUFDbkYsT0FBT3RCLElBQUk7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTdUIsZUFBZUEsQ0FBQ3hCLEVBQWUsRUFBRXlCLEdBQWdCLEVBQVc7RUFDaEY7RUFDQTtFQUNBLE1BQU1DLFNBQVMsR0FBR0QsR0FBRyxHQUNkRSxJQUFzQixJQUFLRixHQUFHLENBQUNFLElBQUksQ0FBQyxHQUNwQ0EsSUFBWSxJQUFLQyxzQkFBYSxDQUFDQyxRQUFRLENBQUNGLElBQUksRUFBRTNCLEVBQUUsQ0FBQzhCLFNBQVMsQ0FBQyxDQUFDLENBQUM7O0VBRXBFO0VBQ0E7RUFDQTtFQUNBLElBQUk5QixFQUFFLENBQUMrQixVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUNMLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMxQixFQUFFLENBQUNnQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSTs7RUFFbkY7RUFDQSxJQUFJaEMsRUFBRSxDQUFDaUMsVUFBVSxDQUFDQyxvQkFBWSxDQUFDQyxPQUFPLENBQUMsRUFBRSxPQUFPLElBQUk7RUFFcEQsTUFBTUMsU0FBUyxHQUFHckMsZUFBZSxDQUFDQyxFQUFFLENBQUM7RUFFckMsSUFBSW9DLFNBQVMsQ0FBQ2xDLGFBQWEsRUFBRTtJQUN6QixJQUFJLENBQUNrQyxTQUFTLENBQUN4QixNQUFNLElBQUl3QixTQUFTLENBQUNyQixNQUFNLEtBQUssQ0FBQ1csU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxJQUFJO0lBQ3ZGLElBQUlVLFNBQVMsQ0FBQ2QsY0FBYyxJQUFJLENBQUNJLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE9BQU8sSUFBSTtJQUM1RSxJQUFJVSxTQUFTLENBQUNoQixtQkFBbUIsSUFBSSxDQUFDTSxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxPQUFPLElBQUk7RUFDMUY7RUFFQSxPQUFPLEtBQUs7QUFDaEIiLCJpZ25vcmVMaXN0IjpbXX0=