matrix-react-sdk
Version:
SDK for matrix.org using React
61 lines (58 loc) • 10.7 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useWysiwygSendActionHandler = useWysiwygSendActionHandler;
var _react = require("react");
var _dispatcher = _interopRequireDefault(require("../../../../../dispatcher/dispatcher"));
var _actions = require("../../../../../dispatcher/actions");
var _RoomContext = require("../../../../../contexts/RoomContext");
var _useDispatcher = require("../../../../../hooks/useDispatcher");
var _utils = require("./utils");
var _ComposerInsertPayload = require("../../../../../dispatcher/payloads/ComposerInsertPayload");
var _ComposerContext = require("../ComposerContext");
var _selection = require("../utils/selection");
/*
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 useWysiwygSendActionHandler(disabled, composerElement, composerFunctions) {
const roomContext = (0, _RoomContext.useRoomContext)();
const composerContext = (0, _ComposerContext.useComposerContext)();
const timeoutId = (0, _react.useRef)(null);
const handler = (0, _react.useCallback)(payload => {
// don't let the user into the composer if it is disabled - all of these branches lead
// to the cursor being in the composer
if (disabled || !composerElement?.current) return;
const context = payload.context ?? _RoomContext.TimelineRenderingType.Room;
switch (payload.action) {
case "reply_to_event":
case _actions.Action.FocusAComposer:
case _actions.Action.FocusSendMessageComposer:
(0, _utils.focusComposer)(composerElement, context, roomContext, timeoutId);
break;
case _actions.Action.ClearAndFocusSendMessageComposer:
// When a thread is opened, prevent the main composer to steal the thread composer focus
if (payload.timelineRenderingType !== roomContext.timelineRenderingType) break;
composerFunctions.clear();
(0, _utils.focusComposer)(composerElement, context, roomContext, timeoutId);
break;
case _actions.Action.ComposerInsert:
if (payload.timelineRenderingType !== roomContext.timelineRenderingType) break;
if (payload.composerType !== _ComposerInsertPayload.ComposerType.Send) break;
if (payload.userId) {
// TODO insert mention - see SendMessageComposer
} else if (payload.event) {
// TODO insert quote message - see SendMessageComposer
} else if (payload.text) {
(0, _selection.setSelection)(composerContext.selection).then(() => composerFunctions.insertText(payload.text));
}
break;
}
}, [disabled, composerElement, roomContext, composerFunctions, composerContext]);
(0, _useDispatcher.useDispatcher)(_dispatcher.default, handler);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2Rpc3BhdGNoZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJfUm9vbUNvbnRleHQiLCJfdXNlRGlzcGF0Y2hlciIsIl91dGlscyIsIl9Db21wb3Nlckluc2VydFBheWxvYWQiLCJfQ29tcG9zZXJDb250ZXh0IiwiX3NlbGVjdGlvbiIsInVzZVd5c2l3eWdTZW5kQWN0aW9uSGFuZGxlciIsImRpc2FibGVkIiwiY29tcG9zZXJFbGVtZW50IiwiY29tcG9zZXJGdW5jdGlvbnMiLCJyb29tQ29udGV4dCIsInVzZVJvb21Db250ZXh0IiwiY29tcG9zZXJDb250ZXh0IiwidXNlQ29tcG9zZXJDb250ZXh0IiwidGltZW91dElkIiwidXNlUmVmIiwiaGFuZGxlciIsInVzZUNhbGxiYWNrIiwicGF5bG9hZCIsImN1cnJlbnQiLCJjb250ZXh0IiwiVGltZWxpbmVSZW5kZXJpbmdUeXBlIiwiUm9vbSIsImFjdGlvbiIsIkFjdGlvbiIsIkZvY3VzQUNvbXBvc2VyIiwiRm9jdXNTZW5kTWVzc2FnZUNvbXBvc2VyIiwiZm9jdXNDb21wb3NlciIsIkNsZWFyQW5kRm9jdXNTZW5kTWVzc2FnZUNvbXBvc2VyIiwidGltZWxpbmVSZW5kZXJpbmdUeXBlIiwiY2xlYXIiLCJDb21wb3Nlckluc2VydCIsImNvbXBvc2VyVHlwZSIsIkNvbXBvc2VyVHlwZSIsIlNlbmQiLCJ1c2VySWQiLCJldmVudCIsInRleHQiLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb24iLCJ0aGVuIiwiaW5zZXJ0VGV4dCIsInVzZURpc3BhdGNoZXIiLCJkZWZhdWx0RGlzcGF0Y2hlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3Jvb21zL3d5c2l3eWdfY29tcG9zZXIvaG9va3MvdXNlV3lzaXd5Z1NlbmRBY3Rpb25IYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IE11dGFibGVSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGRlZmF1bHREaXNwYXRjaGVyIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kaXNwYXRjaGVyL2FjdGlvbnNcIjtcbmltcG9ydCB7IEFjdGlvblBheWxvYWQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vZGlzcGF0Y2hlci9wYXlsb2Fkc1wiO1xuaW1wb3J0IHsgVGltZWxpbmVSZW5kZXJpbmdUeXBlLCB1c2VSb29tQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jb250ZXh0cy9Sb29tQ29udGV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2hlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VEaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBmb2N1c0NvbXBvc2VyIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IENvbXBvc2VyRnVuY3Rpb25zIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBDb21wb3NlclR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vZGlzcGF0Y2hlci9wYXlsb2Fkcy9Db21wb3Nlckluc2VydFBheWxvYWRcIjtcbmltcG9ydCB7IHVzZUNvbXBvc2VyQ29udGV4dCB9IGZyb20gXCIuLi9Db21wb3NlckNvbnRleHRcIjtcbmltcG9ydCB7IHNldFNlbGVjdGlvbiB9IGZyb20gXCIuLi91dGlscy9zZWxlY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVd5c2l3eWdTZW5kQWN0aW9uSGFuZGxlcihcbiAgICBkaXNhYmxlZDogYm9vbGVhbixcbiAgICBjb21wb3NlckVsZW1lbnQ6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LFxuICAgIGNvbXBvc2VyRnVuY3Rpb25zOiBDb21wb3NlckZ1bmN0aW9ucyxcbik6IHZvaWQge1xuICAgIGNvbnN0IHJvb21Db250ZXh0ID0gdXNlUm9vbUNvbnRleHQoKTtcbiAgICBjb25zdCBjb21wb3NlckNvbnRleHQgPSB1c2VDb21wb3NlckNvbnRleHQoKTtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgICBjb25zdCBoYW5kbGVyID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChwYXlsb2FkOiBBY3Rpb25QYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICAvLyBkb24ndCBsZXQgdGhlIHVzZXIgaW50byB0aGUgY29tcG9zZXIgaWYgaXQgaXMgZGlzYWJsZWQgLSBhbGwgb2YgdGhlc2UgYnJhbmNoZXMgbGVhZFxuICAgICAgICAgICAgLy8gdG8gdGhlIGN1cnNvciBiZWluZyBpbiB0aGUgY29tcG9zZXJcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCB8fCAhY29tcG9zZXJFbGVtZW50Py5jdXJyZW50KSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBwYXlsb2FkLmNvbnRleHQgPz8gVGltZWxpbmVSZW5kZXJpbmdUeXBlLlJvb207XG5cbiAgICAgICAgICAgIHN3aXRjaCAocGF5bG9hZC5hY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwicmVwbHlfdG9fZXZlbnRcIjpcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvbi5Gb2N1c0FDb21wb3NlcjpcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvbi5Gb2N1c1NlbmRNZXNzYWdlQ29tcG9zZXI6XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzQ29tcG9zZXIoY29tcG9zZXJFbGVtZW50LCBjb250ZXh0LCByb29tQ29udGV4dCwgdGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb24uQ2xlYXJBbmRGb2N1c1NlbmRNZXNzYWdlQ29tcG9zZXI6XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gYSB0aHJlYWQgaXMgb3BlbmVkLCBwcmV2ZW50IHRoZSBtYWluIGNvbXBvc2VyIHRvIHN0ZWFsIHRoZSB0aHJlYWQgY29tcG9zZXIgZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQudGltZWxpbmVSZW5kZXJpbmdUeXBlICE9PSByb29tQ29udGV4dC50aW1lbGluZVJlbmRlcmluZ1R5cGUpIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvc2VyRnVuY3Rpb25zLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzQ29tcG9zZXIoY29tcG9zZXJFbGVtZW50LCBjb250ZXh0LCByb29tQ29udGV4dCwgdGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb24uQ29tcG9zZXJJbnNlcnQ6XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLnRpbWVsaW5lUmVuZGVyaW5nVHlwZSAhPT0gcm9vbUNvbnRleHQudGltZWxpbmVSZW5kZXJpbmdUeXBlKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuY29tcG9zZXJUeXBlICE9PSBDb21wb3NlclR5cGUuU2VuZCkgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQudXNlcklkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIGluc2VydCBtZW50aW9uIC0gc2VlIFNlbmRNZXNzYWdlQ29tcG9zZXJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXlsb2FkLmV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIGluc2VydCBxdW90ZSBtZXNzYWdlIC0gc2VlIFNlbmRNZXNzYWdlQ29tcG9zZXJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXlsb2FkLnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvbihjb21wb3NlckNvbnRleHQuc2VsZWN0aW9uKS50aGVuKCgpID0+IGNvbXBvc2VyRnVuY3Rpb25zLmluc2VydFRleHQocGF5bG9hZC50ZXh0KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtkaXNhYmxlZCwgY29tcG9zZXJFbGVtZW50LCByb29tQ29udGV4dCwgY29tcG9zZXJGdW5jdGlvbnMsIGNvbXBvc2VyQ29udGV4dF0sXG4gICAgKTtcblxuICAgIHVzZURpc3BhdGNoZXIoZGVmYXVsdERpc3BhdGNoZXIsIGhhbmRsZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sc0JBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGdCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBZU8sU0FBU1UsMkJBQTJCQSxDQUN2Q0MsUUFBaUIsRUFDakJDLGVBQThDLEVBQzlDQyxpQkFBb0MsRUFDaEM7RUFDSixNQUFNQyxXQUFXLEdBQUcsSUFBQUMsMkJBQWMsRUFBQyxDQUFDO0VBQ3BDLE1BQU1DLGVBQWUsR0FBRyxJQUFBQyxtQ0FBa0IsRUFBQyxDQUFDO0VBQzVDLE1BQU1DLFNBQVMsR0FBRyxJQUFBQyxhQUFNLEVBQWdCLElBQUksQ0FBQztFQUU3QyxNQUFNQyxPQUFPLEdBQUcsSUFBQUMsa0JBQVcsRUFDdEJDLE9BQXNCLElBQUs7SUFDeEI7SUFDQTtJQUNBLElBQUlYLFFBQVEsSUFBSSxDQUFDQyxlQUFlLEVBQUVXLE9BQU8sRUFBRTtJQUUzQyxNQUFNQyxPQUFPLEdBQUdGLE9BQU8sQ0FBQ0UsT0FBTyxJQUFJQyxrQ0FBcUIsQ0FBQ0MsSUFBSTtJQUU3RCxRQUFRSixPQUFPLENBQUNLLE1BQU07TUFDbEIsS0FBSyxnQkFBZ0I7TUFDckIsS0FBS0MsZUFBTSxDQUFDQyxjQUFjO01BQzFCLEtBQUtELGVBQU0sQ0FBQ0Usd0JBQXdCO1FBQ2hDLElBQUFDLG9CQUFhLEVBQUNuQixlQUFlLEVBQUVZLE9BQU8sRUFBRVYsV0FBVyxFQUFFSSxTQUFTLENBQUM7UUFDL0Q7TUFDSixLQUFLVSxlQUFNLENBQUNJLGdDQUFnQztRQUN4QztRQUNBLElBQUlWLE9BQU8sQ0FBQ1cscUJBQXFCLEtBQUtuQixXQUFXLENBQUNtQixxQkFBcUIsRUFBRTtRQUV6RXBCLGlCQUFpQixDQUFDcUIsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBQUgsb0JBQWEsRUFBQ25CLGVBQWUsRUFBRVksT0FBTyxFQUFFVixXQUFXLEVBQUVJLFNBQVMsQ0FBQztRQUMvRDtNQUNKLEtBQUtVLGVBQU0sQ0FBQ08sY0FBYztRQUN0QixJQUFJYixPQUFPLENBQUNXLHFCQUFxQixLQUFLbkIsV0FBVyxDQUFDbUIscUJBQXFCLEVBQUU7UUFDekUsSUFBSVgsT0FBTyxDQUFDYyxZQUFZLEtBQUtDLG1DQUFZLENBQUNDLElBQUksRUFBRTtRQUVoRCxJQUFJaEIsT0FBTyxDQUFDaUIsTUFBTSxFQUFFO1VBQ2hCO1FBQUEsQ0FDSCxNQUFNLElBQUlqQixPQUFPLENBQUNrQixLQUFLLEVBQUU7VUFDdEI7UUFBQSxDQUNILE1BQU0sSUFBSWxCLE9BQU8sQ0FBQ21CLElBQUksRUFBRTtVQUNyQixJQUFBQyx1QkFBWSxFQUFDMUIsZUFBZSxDQUFDMkIsU0FBUyxDQUFDLENBQUNDLElBQUksQ0FBQyxNQUFNL0IsaUJBQWlCLENBQUNnQyxVQUFVLENBQUN2QixPQUFPLENBQUNtQixJQUFJLENBQUMsQ0FBQztRQUNsRztRQUNBO0lBQ1I7RUFDSixDQUFDLEVBQ0QsQ0FBQzlCLFFBQVEsRUFBRUMsZUFBZSxFQUFFRSxXQUFXLEVBQUVELGlCQUFpQixFQUFFRyxlQUFlLENBQy9FLENBQUM7RUFFRCxJQUFBOEIsNEJBQWEsRUFBQ0MsbUJBQWlCLEVBQUUzQixPQUFPLENBQUM7QUFDN0MiLCJpZ25vcmVMaXN0IjpbXX0=