matrix-react-sdk
Version:
SDK for matrix.org using React
61 lines (57 loc) • 9.62 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parseEditorStateTransfer = parseEditorStateTransfer;
exports.useInitialContent = useInitialContent;
var _react = require("react");
var _MatrixClientContext = require("../../../../../contexts/MatrixClientContext");
var _RoomContext = require("../../../../../contexts/RoomContext");
var _deserialize = require("../../../../../editor/deserialize");
var _parts = require("../../../../../editor/parts");
var _SettingsStore = _interopRequireDefault(require("../../../../../settings/SettingsStore"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2022 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.
*/
function getFormattedContent(editorStateTransfer) {
return editorStateTransfer.getEvent().getContent().formatted_body?.replace(/<mx-reply>.*<\/mx-reply>/, "") || "";
}
function parseEditorStateTransfer(editorStateTransfer, room, mxClient) {
const partCreator = new _parts.CommandPartCreator(room, mxClient);
let parts = [];
if (editorStateTransfer.hasEditorState()) {
// if restoring state from a previous editor,
// restore serialized parts from the state
const serializedParts = editorStateTransfer.getSerializedParts();
if (serializedParts !== null) {
parts = serializedParts.map(p => partCreator.deserializePart(p));
}
} else {
// otherwise, either restore serialized parts from localStorage or parse the body of the event
// TODO local storage
// const restoredParts = this.restoreStoredEditorState(partCreator);
if (editorStateTransfer.getEvent().getContent().format === "org.matrix.custom.html") {
return getFormattedContent(editorStateTransfer);
}
parts = (0, _deserialize.parseEvent)(editorStateTransfer.getEvent(), partCreator, {
shouldEscape: _SettingsStore.default.getValue("MessageComposerInput.useMarkdown")
});
}
return parts.reduce((content, part) => content + part?.text, "");
// Todo local storage
// this.saveStoredEditorState();
}
function useInitialContent(editorStateTransfer) {
const roomContext = (0, _RoomContext.useRoomContext)();
const mxClient = (0, _MatrixClientContext.useMatrixClientContext)();
return (0, _react.useMemo)(() => {
if (editorStateTransfer && roomContext.room && mxClient) {
return parseEditorStateTransfer(editorStateTransfer, roomContext.room, mxClient);
}
}, [editorStateTransfer, roomContext, mxClient]);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfUm9vbUNvbnRleHQiLCJfZGVzZXJpYWxpemUiLCJfcGFydHMiLCJfU2V0dGluZ3NTdG9yZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJnZXRGb3JtYXR0ZWRDb250ZW50IiwiZWRpdG9yU3RhdGVUcmFuc2ZlciIsImdldEV2ZW50IiwiZ2V0Q29udGVudCIsImZvcm1hdHRlZF9ib2R5IiwicmVwbGFjZSIsInBhcnNlRWRpdG9yU3RhdGVUcmFuc2ZlciIsInJvb20iLCJteENsaWVudCIsInBhcnRDcmVhdG9yIiwiQ29tbWFuZFBhcnRDcmVhdG9yIiwicGFydHMiLCJoYXNFZGl0b3JTdGF0ZSIsInNlcmlhbGl6ZWRQYXJ0cyIsImdldFNlcmlhbGl6ZWRQYXJ0cyIsIm1hcCIsInAiLCJkZXNlcmlhbGl6ZVBhcnQiLCJmb3JtYXQiLCJwYXJzZUV2ZW50Iiwic2hvdWxkRXNjYXBlIiwiU2V0dGluZ3NTdG9yZSIsImdldFZhbHVlIiwicmVkdWNlIiwiY29udGVudCIsInBhcnQiLCJ0ZXh0IiwidXNlSW5pdGlhbENvbnRlbnQiLCJyb29tQ29udGV4dCIsInVzZVJvb21Db250ZXh0IiwidXNlTWF0cml4Q2xpZW50Q29udGV4dCIsInVzZU1lbW8iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9yb29tcy93eXNpd3lnX2NvbXBvc2VyL2hvb2tzL3VzZUluaXRpYWxDb250ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IE1hdHJpeENsaWVudCwgUm9vbSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlTWF0cml4Q2xpZW50Q29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jb250ZXh0cy9NYXRyaXhDbGllbnRDb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VSb29tQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jb250ZXh0cy9Sb29tQ29udGV4dFwiO1xuaW1wb3J0IHsgcGFyc2VFdmVudCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9lZGl0b3IvZGVzZXJpYWxpemVcIjtcbmltcG9ydCB7IENvbW1hbmRQYXJ0Q3JlYXRvciwgUGFydCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9lZGl0b3IvcGFydHNcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgRWRpdG9yU3RhdGVUcmFuc2ZlciBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvRWRpdG9yU3RhdGVUcmFuc2ZlclwiO1xuXG5mdW5jdGlvbiBnZXRGb3JtYXR0ZWRDb250ZW50KGVkaXRvclN0YXRlVHJhbnNmZXI6IEVkaXRvclN0YXRlVHJhbnNmZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAgIGVkaXRvclN0YXRlVHJhbnNmZXJcbiAgICAgICAgICAgIC5nZXRFdmVudCgpXG4gICAgICAgICAgICAuZ2V0Q29udGVudCgpXG4gICAgICAgICAgICAuZm9ybWF0dGVkX2JvZHk/LnJlcGxhY2UoLzxteC1yZXBseT4uKjxcXC9teC1yZXBseT4vLCBcIlwiKSB8fCBcIlwiXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWRpdG9yU3RhdGVUcmFuc2ZlcihcbiAgICBlZGl0b3JTdGF0ZVRyYW5zZmVyOiBFZGl0b3JTdGF0ZVRyYW5zZmVyLFxuICAgIHJvb206IFJvb20sXG4gICAgbXhDbGllbnQ6IE1hdHJpeENsaWVudCxcbik6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydENyZWF0b3IgPSBuZXcgQ29tbWFuZFBhcnRDcmVhdG9yKHJvb20sIG14Q2xpZW50KTtcblxuICAgIGxldCBwYXJ0czogKFBhcnQgfCB1bmRlZmluZWQpW10gPSBbXTtcbiAgICBpZiAoZWRpdG9yU3RhdGVUcmFuc2Zlci5oYXNFZGl0b3JTdGF0ZSgpKSB7XG4gICAgICAgIC8vIGlmIHJlc3RvcmluZyBzdGF0ZSBmcm9tIGEgcHJldmlvdXMgZWRpdG9yLFxuICAgICAgICAvLyByZXN0b3JlIHNlcmlhbGl6ZWQgcGFydHMgZnJvbSB0aGUgc3RhdGVcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFBhcnRzID0gZWRpdG9yU3RhdGVUcmFuc2Zlci5nZXRTZXJpYWxpemVkUGFydHMoKTtcbiAgICAgICAgaWYgKHNlcmlhbGl6ZWRQYXJ0cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcGFydHMgPSBzZXJpYWxpemVkUGFydHMubWFwKChwKSA9PiBwYXJ0Q3JlYXRvci5kZXNlcmlhbGl6ZVBhcnQocCkpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBlaXRoZXIgcmVzdG9yZSBzZXJpYWxpemVkIHBhcnRzIGZyb20gbG9jYWxTdG9yYWdlIG9yIHBhcnNlIHRoZSBib2R5IG9mIHRoZSBldmVudFxuICAgICAgICAvLyBUT0RPIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgLy8gY29uc3QgcmVzdG9yZWRQYXJ0cyA9IHRoaXMucmVzdG9yZVN0b3JlZEVkaXRvclN0YXRlKHBhcnRDcmVhdG9yKTtcblxuICAgICAgICBpZiAoZWRpdG9yU3RhdGVUcmFuc2Zlci5nZXRFdmVudCgpLmdldENvbnRlbnQoKS5mb3JtYXQgPT09IFwib3JnLm1hdHJpeC5jdXN0b20uaHRtbFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkQ29udGVudChlZGl0b3JTdGF0ZVRyYW5zZmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnRzID0gcGFyc2VFdmVudChlZGl0b3JTdGF0ZVRyYW5zZmVyLmdldEV2ZW50KCksIHBhcnRDcmVhdG9yLCB7XG4gICAgICAgICAgICBzaG91bGRFc2NhcGU6IFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJNZXNzYWdlQ29tcG9zZXJJbnB1dC51c2VNYXJrZG93blwiKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLnJlZHVjZSgoY29udGVudCwgcGFydCkgPT4gY29udGVudCArIHBhcnQ/LnRleHQsIFwiXCIpO1xuICAgIC8vIFRvZG8gbG9jYWwgc3RvcmFnZVxuICAgIC8vIHRoaXMuc2F2ZVN0b3JlZEVkaXRvclN0YXRlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbml0aWFsQ29udGVudChlZGl0b3JTdGF0ZVRyYW5zZmVyOiBFZGl0b3JTdGF0ZVRyYW5zZmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByb29tQ29udGV4dCA9IHVzZVJvb21Db250ZXh0KCk7XG4gICAgY29uc3QgbXhDbGllbnQgPSB1c2VNYXRyaXhDbGllbnRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gdXNlTWVtbzxzdHJpbmcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICAgICAgaWYgKGVkaXRvclN0YXRlVHJhbnNmZXIgJiYgcm9vbUNvbnRleHQucm9vbSAmJiBteENsaWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRWRpdG9yU3RhdGVUcmFuc2ZlcihlZGl0b3JTdGF0ZVRyYW5zZmVyLCByb29tQ29udGV4dC5yb29tLCBteENsaWVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbZWRpdG9yU3RhdGVUcmFuc2Zlciwgcm9vbUNvbnRleHQsIG14Q2xpZW50XSk7XG59XG4iXSwibWFwcGlu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