UNPKG

matrix-react-sdk

Version:
86 lines (83 loc) 12.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.op = exports.deop = void 0; var _languageHandler = require("../languageHandler"); var _membership = require("../utils/membership"); var _UserInfo = require("../components/views/right_panel/UserInfo"); var _RoomContext = require("../contexts/RoomContext"); var _utils = require("./utils"); var _interface = require("./interface"); var _command = require("./command"); /* Copyright 2024 New Vector Ltd. Copyright 2020-2023 The Matrix.org Foundation C.I.C. Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Copyright 2018 New Vector Ltd Copyright 2015, 2016 OpenMarket Ltd SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ const updatePowerLevel = async (room, member, powerLevel) => { // Only warn if the target is ourselves and the power level is decreasing or being unset if (member.userId === room.client.getUserId() && (powerLevel === undefined || member.powerLevel > powerLevel)) { const ok = await (0, _UserInfo.warnSelfDemote)(room.isSpaceRoom()); if (!ok) return; // Nothing to do } return room.client.setPowerLevel(room.roomId, member.userId, powerLevel); }; const updatePowerLevelHelper = (client, roomId, userId, powerLevel) => { const room = client.getRoom(roomId); if (!room) { return (0, _utils.reject)(new _languageHandler.UserFriendlyError("slash_command|error_invalid_room", { roomId, cause: undefined })); } const member = room.getMember(userId); if (!member?.membership || (0, _membership.getEffectiveMembership)(member.membership) === _membership.EffectiveMembership.Leave) { return (0, _utils.reject)(new _languageHandler.UserFriendlyError("slash_command|error_invalid_user_in_room")); } return (0, _utils.success)(updatePowerLevel(room, member, powerLevel)); }; const op = exports.op = new _command.Command({ command: "op", args: "<user-id> [<power-level>]", description: (0, _languageHandler._td)("slash_command|op"), isEnabled: _utils.canAffectPowerlevels, runFn: function (cli, roomId, threadId, args) { if (args) { const matches = args.match(/^(\S+?)( +(-?\d+))?$/); let powerLevel = 50; // default power level for op if (matches) { const userId = matches[1]; if (matches.length === 4 && undefined !== matches[3]) { powerLevel = parseInt(matches[3], 10); } return updatePowerLevelHelper(cli, roomId, userId, powerLevel); } } return (0, _utils.reject)(this.getUsage()); }, category: _interface.CommandCategories.admin, renderingTypes: [_RoomContext.TimelineRenderingType.Room] }); const deop = exports.deop = new _command.Command({ command: "deop", args: "<user-id>", description: (0, _languageHandler._td)("slash_command|deop"), isEnabled: _utils.canAffectPowerlevels, runFn: function (cli, roomId, threadId, args) { if (args) { const matches = args.match(/^(\S+)$/); if (matches) { return updatePowerLevelHelper(cli, roomId, args, undefined); } } return (0, _utils.reject)(this.getUsage()); }, category: _interface.CommandCategories.admin, renderingTypes: [_RoomContext.TimelineRenderingType.Room] }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGFuZ3VhZ2VIYW5kbGVyIiwicmVxdWlyZSIsIl9tZW1iZXJzaGlwIiwiX1VzZXJJbmZvIiwiX1Jvb21Db250ZXh0IiwiX3V0aWxzIiwiX2ludGVyZmFjZSIsIl9jb21tYW5kIiwidXBkYXRlUG93ZXJMZXZlbCIsInJvb20iLCJtZW1iZXIiLCJwb3dlckxldmVsIiwidXNlcklkIiwiY2xpZW50IiwiZ2V0VXNlcklkIiwidW5kZWZpbmVkIiwib2siLCJ3YXJuU2VsZkRlbW90ZSIsImlzU3BhY2VSb29tIiwic2V0UG93ZXJMZXZlbCIsInJvb21JZCIsInVwZGF0ZVBvd2VyTGV2ZWxIZWxwZXIiLCJnZXRSb29tIiwicmVqZWN0IiwiVXNlckZyaWVuZGx5RXJyb3IiLCJjYXVzZSIsImdldE1lbWJlciIsIm1lbWJlcnNoaXAiLCJnZXRFZmZlY3RpdmVNZW1iZXJzaGlwIiwiRWZmZWN0aXZlTWVtYmVyc2hpcCIsIkxlYXZlIiwic3VjY2VzcyIsIm9wIiwiZXhwb3J0cyIsIkNvbW1hbmQiLCJjb21tYW5kIiwiYXJncyIsImRlc2NyaXB0aW9uIiwiX3RkIiwiaXNFbmFibGVkIiwiY2FuQWZmZWN0UG93ZXJsZXZlbHMiLCJydW5GbiIsImNsaSIsInRocmVhZElkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwicGFyc2VJbnQiLCJnZXRVc2FnZSIsImNhdGVnb3J5IiwiQ29tbWFuZENhdGVnb3JpZXMiLCJhZG1pbiIsInJlbmRlcmluZ1R5cGVzIiwiVGltZWxpbmVSZW5kZXJpbmdUeXBlIiwiUm9vbSIsImRlb3AiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2xhc2gtY29tbWFuZHMvb3AudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAtMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMTkgTWljaGFlbCBUZWxhdHluc2tpIDw3dDNjaGd1eUBnbWFpbC5jb20+XG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgTWF0cml4Q2xpZW50LCBSb29tLCBSb29tTWVtYmVyIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBfdGQsIFVzZXJGcmllbmRseUVycm9yIH0gZnJvbSBcIi4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IHsgRWZmZWN0aXZlTWVtYmVyc2hpcCwgZ2V0RWZmZWN0aXZlTWVtYmVyc2hpcCB9IGZyb20gXCIuLi91dGlscy9tZW1iZXJzaGlwXCI7XG5pbXBvcnQgeyB3YXJuU2VsZkRlbW90ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3ZpZXdzL3JpZ2h0X3BhbmVsL1VzZXJJbmZvXCI7XG5pbXBvcnQgeyBUaW1lbGluZVJlbmRlcmluZ1R5cGUgfSBmcm9tIFwiLi4vY29udGV4dHMvUm9vbUNvbnRleHRcIjtcbmltcG9ydCB7IGNhbkFmZmVjdFBvd2VybGV2ZWxzLCBzdWNjZXNzLCByZWplY3QgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgQ29tbWFuZENhdGVnb3JpZXMsIFJ1blJlc3VsdCB9IGZyb20gXCIuL2ludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmRcIjtcblxuY29uc3QgdXBkYXRlUG93ZXJMZXZlbCA9IGFzeW5jIChyb29tOiBSb29tLCBtZW1iZXI6IFJvb21NZW1iZXIsIHBvd2VyTGV2ZWw6IG51bWJlciB8IHVuZGVmaW5lZCk6IFByb21pc2U8dW5rbm93bj4gPT4ge1xuICAgIC8vIE9ubHkgd2FybiBpZiB0aGUgdGFyZ2V0IGlzIG91cnNlbHZlcyBhbmQgdGhlIHBvd2VyIGxldmVsIGlzIGRlY3JlYXNpbmcgb3IgYmVpbmcgdW5zZXRcbiAgICBpZiAobWVtYmVyLnVzZXJJZCA9PT0gcm9vbS5jbGllbnQuZ2V0VXNlcklkKCkgJiYgKHBvd2VyTGV2ZWwgPT09IHVuZGVmaW5lZCB8fCBtZW1iZXIucG93ZXJMZXZlbCA+IHBvd2VyTGV2ZWwpKSB7XG4gICAgICAgIGNvbnN0IG9rID0gYXdhaXQgd2FyblNlbGZEZW1vdGUocm9vbS5pc1NwYWNlUm9vbSgpKTtcbiAgICAgICAgaWYgKCFvaykgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXG4gICAgfVxuICAgIHJldHVybiByb29tLmNsaWVudC5zZXRQb3dlckxldmVsKHJvb20ucm9vbUlkLCBtZW1iZXIudXNlcklkLCBwb3dlckxldmVsKTtcbn07XG5cbmNvbnN0IHVwZGF0ZVBvd2VyTGV2ZWxIZWxwZXIgPSAoXG4gICAgY2xpZW50OiBNYXRyaXhDbGllbnQsXG4gICAgcm9vbUlkOiBzdHJpbmcsXG4gICAgdXNlcklkOiBzdHJpbmcsXG4gICAgcG93ZXJMZXZlbDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuKTogUnVuUmVzdWx0ID0+IHtcbiAgICBjb25zdCByb29tID0gY2xpZW50LmdldFJvb20ocm9vbUlkKTtcbiAgICBpZiAoIXJvb20pIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChcbiAgICAgICAgICAgIG5ldyBVc2VyRnJpZW5kbHlFcnJvcihcInNsYXNoX2NvbW1hbmR8ZXJyb3JfaW52YWxpZF9yb29tXCIsIHtcbiAgICAgICAgICAgICAgICByb29tSWQsXG4gICAgICAgICAgICAgICAgY2F1c2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBtZW1iZXIgPSByb29tLmdldE1lbWJlcih1c2VySWQpO1xuICAgIGlmICghbWVtYmVyPy5tZW1iZXJzaGlwIHx8IGdldEVmZmVjdGl2ZU1lbWJlcnNoaXAobWVtYmVyLm1lbWJlcnNoaXApID09PSBFZmZlY3RpdmVNZW1iZXJzaGlwLkxlYXZlKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFVzZXJGcmllbmRseUVycm9yKFwic2xhc2hfY29tbWFuZHxlcnJvcl9pbnZhbGlkX3VzZXJfaW5fcm9vbVwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3ModXBkYXRlUG93ZXJMZXZlbChyb29tLCBtZW1iZXIsIHBvd2VyTGV2ZWwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBvcCA9IG5ldyBDb21tYW5kKHtcbiAgICBjb21tYW5kOiBcIm9wXCIsXG4gICAgYXJnczogXCI8dXNlci1pZD4gWzxwb3dlci1sZXZlbD5dXCIsXG4gICAgZGVzY3JpcHRpb246IF90ZChcInNsYXNoX2NvbW1hbmR8b3BcIiksXG4gICAgaXNFbmFibGVkOiBjYW5BZmZlY3RQb3dlcmxldmVscyxcbiAgICBydW5GbjogZnVuY3Rpb24gKGNsaSwgcm9vbUlkLCB0aHJlYWRJZCwgYXJncykge1xuICAgICAgICBpZiAoYXJncykge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGFyZ3MubWF0Y2goL14oXFxTKz8pKCArKC0/XFxkKykpPyQvKTtcbiAgICAgICAgICAgIGxldCBwb3dlckxldmVsID0gNTA7IC8vIGRlZmF1bHQgcG93ZXIgbGV2ZWwgZm9yIG9wXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJJZCA9IG1hdGNoZXNbMV07XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSA0ICYmIHVuZGVmaW5lZCAhPT0gbWF0Y2hlc1szXSkge1xuICAgICAgICAgICAgICAgICAgICBwb3dlckxldmVsID0gcGFyc2VJbnQobWF0Y2hlc1szXSwgMTApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlUG93ZXJMZXZlbEhlbHBlcihjbGksIHJvb21JZCwgdXNlcklkLCBwb3dlckxldmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVqZWN0KHRoaXMuZ2V0VXNhZ2UoKSk7XG4gICAgfSxcbiAgICBjYXRlZ29yeTogQ29tbWFuZENhdGVnb3JpZXMuYWRtaW4sXG4gICAgcmVuZGVyaW5nVHlwZXM6IFtUaW1lbGluZVJlbmRlcmluZ1R5cGUuUm9vbV0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRlb3AgPSBuZXcgQ29tbWFuZCh7XG4gICAgY29tbWFuZDogXCJkZW9wXCIsXG4gICAgYXJnczogXCI8dXNlci1pZD5cIixcbiAgICBkZXNjcmlwdGlvbjogX3RkKFwic2xhc2hfY29tbWFuZHxkZW9wXCIpLFxuICAgIGlzRW5hYmxlZDogY2FuQWZmZWN0UG93ZXJsZXZlbHMsXG4gICAgcnVuRm46IGZ1bmN0aW9uIChjbGksIHJvb21JZCwgdGhyZWFkSWQsIGFyZ3MpIHtcbiAgICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBhcmdzLm1hdGNoKC9eKFxcUyspJC8pO1xuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlUG93ZXJMZXZlbEhlbHBlcihjbGksIHJvb21JZCwgYXJncywgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVqZWN0KHRoaXMuZ2V0VXNhZ2UoKSk7XG4gICAgfSxcbiAgICBjYXRlZ29yeTogQ29tbWFuZENhdGVnb3JpZXMuYWRtaW4sXG4gICAgcmVuZGVyaW5nVHlwZXM6IFtUaW1lbGluZVJlbmRlcmluZ1R5cGUuUm9vbV0sXG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBYUEsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNB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