matrix-react-sdk
Version:
SDK for matrix.org using React
130 lines (127 loc) • 18.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RoomAccountDataExplorer = exports.RoomAccountDataEventEditor = exports.AccountDataExplorer = exports.AccountDataEventEditor = void 0;
var _react = _interopRequireWildcard(require("react"));
var _BaseTool = _interopRequireWildcard(require("./BaseTool"));
var _MatrixClientContext = _interopRequireDefault(require("../../../../contexts/MatrixClientContext"));
var _Event = require("./Event");
var _FilteredList = _interopRequireDefault(require("./FilteredList"));
var _languageHandler = require("../../../../languageHandler");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/*
Copyright 2024 New Vector Ltd.
Copyright 2023 The Matrix.org Foundation C.I.C.
Copyright 2022 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.
*/
const AccountDataEventEditor = ({
mxEvent,
onBack
}) => {
const cli = (0, _react.useContext)(_MatrixClientContext.default);
const fields = (0, _react.useMemo)(() => [(0, _Event.eventTypeField)(mxEvent?.getType())], [mxEvent]);
const onSend = async ([eventType], content) => {
await cli.setAccountData(eventType, content || {});
};
const defaultContent = mxEvent ? (0, _Event.stringify)(mxEvent.getContent()) : undefined;
return /*#__PURE__*/_react.default.createElement(_Event.EventEditor, {
fieldDefs: fields,
defaultContent: defaultContent,
onSend: onSend,
onBack: onBack
});
};
exports.AccountDataEventEditor = AccountDataEventEditor;
const RoomAccountDataEventEditor = ({
mxEvent,
onBack
}) => {
const context = (0, _react.useContext)(_BaseTool.DevtoolsContext);
const cli = (0, _react.useContext)(_MatrixClientContext.default);
const fields = (0, _react.useMemo)(() => [(0, _Event.eventTypeField)(mxEvent?.getType())], [mxEvent]);
const onSend = async ([eventType], content) => {
await cli.setRoomAccountData(context.room.roomId, eventType, content || {});
};
const defaultContent = mxEvent ? (0, _Event.stringify)(mxEvent.getContent()) : undefined;
return /*#__PURE__*/_react.default.createElement(_Event.EventEditor, {
fieldDefs: fields,
defaultContent: defaultContent,
onSend: onSend,
onBack: onBack
});
};
exports.RoomAccountDataEventEditor = RoomAccountDataEventEditor;
const BaseAccountDataExplorer = ({
events,
Editor,
actionLabel,
onBack,
setTool
}) => {
const [query, setQuery] = (0, _react.useState)("");
const [event, setEvent] = (0, _react.useState)(null);
if (event) {
const onBack = () => {
setEvent(null);
};
return /*#__PURE__*/_react.default.createElement(_Event.EventViewer, {
mxEvent: event,
onBack: onBack,
Editor: Editor
});
}
const onAction = async () => {
setTool(actionLabel, Editor);
};
return /*#__PURE__*/_react.default.createElement(_BaseTool.default, {
onBack: onBack,
actionLabel: actionLabel,
onAction: onAction
}, /*#__PURE__*/_react.default.createElement(_FilteredList.default, {
query: query,
onChange: setQuery
}, Array.from(events.entries()).map(([eventType, ev]) => {
const onClick = () => {
setEvent(ev);
};
return /*#__PURE__*/_react.default.createElement("button", {
className: "mx_DevTools_button",
key: eventType,
onClick: onClick
}, eventType);
})));
};
const AccountDataExplorer = ({
onBack,
setTool
}) => {
const cli = (0, _react.useContext)(_MatrixClientContext.default);
return /*#__PURE__*/_react.default.createElement(BaseAccountDataExplorer, {
events: cli.store.accountData,
Editor: AccountDataEventEditor,
actionLabel: (0, _languageHandler._td)("devtools|send_custom_account_data_event"),
onBack: onBack,
setTool: setTool
});
};
exports.AccountDataExplorer = AccountDataExplorer;
const RoomAccountDataExplorer = ({
onBack,
setTool
}) => {
const context = (0, _react.useContext)(_BaseTool.DevtoolsContext);
return /*#__PURE__*/_react.default.createElement(BaseAccountDataExplorer, {
events: context.room.accountData,
Editor: RoomAccountDataEventEditor,
actionLabel: (0, _languageHandler._td)("devtools|send_custom_room_account_data_event"),
onBack: onBack,
setTool: setTool
});
};
exports.RoomAccountDataExplorer = RoomAccountDataExplorer;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfQmFzZVRvb2wiLCJfTWF0cml4Q2xpZW50Q29udGV4dCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfRXZlbnQiLCJfRmlsdGVyZWRMaXN0IiwiX2xhbmd1YWdlSGFuZGxlciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkFjY291bnREYXRhRXZlbnRFZGl0b3IiLCJteEV2ZW50Iiwib25CYWNrIiwiY2xpIiwidXNlQ29udGV4dCIsIk1hdHJpeENsaWVudENvbnRleHQiLCJmaWVsZHMiLCJ1c2VNZW1vIiwiZXZlbnRUeXBlRmllbGQiLCJnZXRUeXBlIiwib25TZW5kIiwiZXZlbnRUeXBlIiwiY29udGVudCIsInNldEFjY291bnREYXRhIiwiZGVmYXVsdENvbnRlbnQiLCJzdHJpbmdpZnkiLCJnZXRDb250ZW50IiwidW5kZWZpbmVkIiwiY3JlYXRlRWxlbWVudCIsIkV2ZW50RWRpdG9yIiwiZmllbGREZWZzIiwiZXhwb3J0cyIsIlJvb21BY2NvdW50RGF0YUV2ZW50RWRpdG9yIiwiY29udGV4dCIsIkRldnRvb2xzQ29udGV4dCIsInNldFJvb21BY2NvdW50RGF0YSIsInJvb20iLCJyb29tSWQiLCJCYXNlQWNjb3VudERhdGFFeHBsb3JlciIsImV2ZW50cyIsIkVkaXRvciIsImFjdGlvbkxhYmVsIiwic2V0VG9vbCIsInF1ZXJ5Iiwic2V0UXVlcnkiLCJ1c2VTdGF0ZSIsImV2ZW50Iiwic2V0RXZlbnQiLCJFdmVudFZpZXdlciIsIm9uQWN0aW9uIiwib25DaGFuZ2UiLCJBcnJheSIsImZyb20iLCJlbnRyaWVzIiwibWFwIiwiZXYiLCJvbkNsaWNrIiwiY2xhc3NOYW1lIiwia2V5IiwiQWNjb3VudERhdGFFeHBsb3JlciIsInN0b3JlIiwiYWNjb3VudERhdGEiLCJfdGQiLCJSb29tQWNjb3VudERhdGFFeHBsb3JlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvZGV2dG9vbHMvQWNjb3VudERhdGEudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5Db3B5cmlnaHQgMjAyMiBNaWNoYWVsIFRlbGF0eW5za2kgPDd0M2NoZ3V5QGdtYWlsLmNvbT5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBJQ29udGVudCwgTWF0cml4RXZlbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCBCYXNlVG9vbCwgeyBEZXZ0b29sc0NvbnRleHQsIElEZXZ0b29sc1Byb3BzIH0gZnJvbSBcIi4vQmFzZVRvb2xcIjtcbmltcG9ydCBNYXRyaXhDbGllbnRDb250ZXh0IGZyb20gXCIuLi8uLi8uLi8uLi9jb250ZXh0cy9NYXRyaXhDbGllbnRDb250ZXh0XCI7XG5pbXBvcnQgeyBFdmVudEVkaXRvciwgRXZlbnRWaWV3ZXIsIGV2ZW50VHlwZUZpZWxkLCBJRWRpdG9yUHJvcHMsIHN0cmluZ2lmeSB9IGZyb20gXCIuL0V2ZW50XCI7XG5pbXBvcnQgRmlsdGVyZWRMaXN0IGZyb20gXCIuL0ZpbHRlcmVkTGlzdFwiO1xuaW1wb3J0IHsgX3RkLCBUcmFuc2xhdGlvbktleSB9IGZyb20gXCIuLi8uLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcblxuZXhwb3J0IGNvbnN0IEFjY291bnREYXRhRXZlbnRFZGl0b3I6IFJlYWN0LkZDPElFZGl0b3JQcm9wcz4gPSAoeyBteEV2ZW50LCBvbkJhY2sgfSkgPT4ge1xuICAgIGNvbnN0IGNsaSA9IHVzZUNvbnRleHQoTWF0cml4Q2xpZW50Q29udGV4dCk7XG5cbiAgICBjb25zdCBmaWVsZHMgPSB1c2VNZW1vKCgpID0+IFtldmVudFR5cGVGaWVsZChteEV2ZW50Py5nZXRUeXBlKCkpXSwgW214RXZlbnRdKTtcblxuICAgIGNvbnN0IG9uU2VuZCA9IGFzeW5jIChbZXZlbnRUeXBlXTogc3RyaW5nW10sIGNvbnRlbnQ/OiBJQ29udGVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBhd2FpdCBjbGkuc2V0QWNjb3VudERhdGEoZXZlbnRUeXBlLCBjb250ZW50IHx8IHt9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdENvbnRlbnQgPSBteEV2ZW50ID8gc3RyaW5naWZ5KG14RXZlbnQuZ2V0Q29udGVudCgpKSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gPEV2ZW50RWRpdG9yIGZpZWxkRGVmcz17ZmllbGRzfSBkZWZhdWx0Q29udGVudD17ZGVmYXVsdENvbnRlbnR9IG9uU2VuZD17b25TZW5kfSBvbkJhY2s9e29uQmFja30gLz47XG59O1xuXG5leHBvcnQgY29uc3QgUm9vbUFjY291bnREYXRhRXZlbnRFZGl0b3I6IFJlYWN0LkZDPElFZGl0b3JQcm9wcz4gPSAoeyBteEV2ZW50LCBvbkJhY2sgfSkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERldnRvb2xzQ29udGV4dCk7XG4gICAgY29uc3QgY2xpID0gdXNlQ29udGV4dChNYXRyaXhDbGllbnRDb250ZXh0KTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IHVzZU1lbW8oKCkgPT4gW2V2ZW50VHlwZUZpZWxkKG14RXZlbnQ/LmdldFR5cGUoKSldLCBbbXhFdmVudF0pO1xuXG4gICAgY29uc3Qgb25TZW5kID0gYXN5bmMgKFtldmVudFR5cGVdOiBzdHJpbmdbXSwgY29udGVudD86IElDb250ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGF3YWl0IGNsaS5zZXRSb29tQWNjb3VudERhdGEoY29udGV4dC5yb29tLnJvb21JZCwgZXZlbnRUeXBlLCBjb250ZW50IHx8IHt9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdENvbnRlbnQgPSBteEV2ZW50ID8gc3RyaW5naWZ5KG14RXZlbnQuZ2V0Q29udGVudCgpKSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gPEV2ZW50RWRpdG9yIGZpZWxkRGVmcz17ZmllbGRzfSBkZWZhdWx0Q29udGVudD17ZGVmYXVsdENvbnRlbnR9IG9uU2VuZD17b25TZW5kfSBvbkJhY2s9e29uQmFja30gLz47XG59O1xuXG5pbnRlcmZhY2UgSVByb3BzIGV4dGVuZHMgSURldnRvb2xzUHJvcHMge1xuICAgIGV2ZW50czogTWFwPHN0cmluZywgTWF0cml4RXZlbnQ+O1xuICAgIEVkaXRvcjogUmVhY3QuRkM8SUVkaXRvclByb3BzPjtcbiAgICBhY3Rpb25MYWJlbDogVHJhbnNsYXRpb25LZXk7XG59XG5cbmNvbnN0IEJhc2VBY2NvdW50RGF0YUV4cGxvcmVyOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHsgZXZlbnRzLCBFZGl0b3IsIGFjdGlvbkxhYmVsLCBvbkJhY2ssIHNldFRvb2wgfSkgPT4ge1xuICAgIGNvbnN0IFtxdWVyeSwgc2V0UXVlcnldID0gdXNlU3RhdGUoXCJcIik7XG4gICAgY29uc3QgW2V2ZW50LCBzZXRFdmVudF0gPSB1c2VTdGF0ZTxNYXRyaXhFdmVudCB8IG51bGw+KG51bGwpO1xuXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG9uQmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHNldEV2ZW50KG51bGwpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gPEV2ZW50Vmlld2VyIG14RXZlbnQ9e2V2ZW50fSBvbkJhY2s9e29uQmFja30gRWRpdG9yPXtFZGl0b3J9IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IG9uQWN0aW9uID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBzZXRUb29sKGFjdGlvbkxhYmVsLCBFZGl0b3IpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZVRvb2wgb25CYWNrPXtvbkJhY2t9IGFjdGlvbkxhYmVsPXthY3Rpb25MYWJlbH0gb25BY3Rpb249e29uQWN0aW9ufT5cbiAgICAgICAgICAgIDxGaWx0ZXJlZExpc3QgcXVlcnk9e3F1ZXJ5fSBvbkNoYW5nZT17c2V0UXVlcnl9PlxuICAgICAgICAgICAgICAgIHtBcnJheS5mcm9tKGV2ZW50cy5lbnRyaWVzKCkpLm1hcCgoW2V2ZW50VHlwZSwgZXZdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9uQ2xpY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFdmVudChldik7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwibXhfRGV2VG9vbHNfYnV0dG9uXCIga2V5PXtldmVudFR5cGV9IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtldmVudFR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvRmlsdGVyZWRMaXN0PlxuICAgICAgICA8L0Jhc2VUb29sPlxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgQWNjb3VudERhdGFFeHBsb3JlcjogUmVhY3QuRkM8SURldnRvb2xzUHJvcHM+ID0gKHsgb25CYWNrLCBzZXRUb29sIH0pID0+IHtcbiAgICBjb25zdCBjbGkgPSB1c2VDb250ZXh0KE1hdHJpeENsaWVudENvbnRleHQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJhc2VBY2NvdW50RGF0YUV4cGxvcmVyXG4gICAgICAgICAgICBldmVudHM9e2NsaS5zdG9yZS5hY2NvdW50RGF0YX1cbiAgICAgICAgICAgIEVkaXRvcj17QWNjb3VudERhdGFFdmVudEVkaXRvcn1cbiAgICAgICAgICAgIGFjdGlvbkxhYmVsPXtfdGQoXCJkZXZ0b29sc3xzZW5kX2N1c3RvbV9hY2NvdW50X2RhdGFfZXZlbnRcIil9XG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIHNldFRvb2w9e3NldFRvb2x9XG4gICAgICAgIC8+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBSb29tQWNjb3VudERhdGFFeHBsb3JlcjogUmVhY3QuRkM8SURldnRvb2xzUHJvcHM+ID0gKHsgb25CYWNrLCBzZXRUb29sIH0pID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEZXZ0b29sc0NvbnRleHQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJhc2VBY2NvdW50RGF0YUV4cGxvcmVyXG4gICAgICAgICAgICBldmVudHM9e2NvbnRleHQucm9vbS5hY2NvdW50RGF0YX1cbiAgICAgICAgICAgIEVkaXRvcj17Um9vbUFjY291bnREYXRhRXZlbnRFZGl0b3J9XG4gICAgICAgICAgICBhY3Rpb25MYWJlbD17X3RkKFwiZGV2dG9vbHN8c2VuZF9jdXN0b21fcm9vbV9hY2NvdW50X2RhdGFfZXZlbnRcIil9XG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIHNldFRvb2w9e3NldFRvb2x9XG4gICAgICAgIC8+XG4gICAgKTtcbn07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