matrix-react-sdk
Version:
SDK for matrix.org using React
35 lines (31 loc) • 3.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useDispatcher = void 0;
var _react = require("react");
/*
Copyright 2024 New Vector Ltd.
Copyright 2020 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.
*/
// Hook to simplify listening to event dispatches
const useDispatcher = (dispatcher, handler) => {
// Create a ref that stores handler
const savedHandler = (0, _react.useRef)(payload => {});
// Update ref.current value if handler changes.
(0, _react.useEffect)(() => {
savedHandler.current = handler;
}, [handler]);
(0, _react.useEffect)(() => {
// Create event listener that calls handler function stored in ref
const ref = dispatcher.register(payload => savedHandler.current(payload));
// Remove event listener on cleanup
return () => {
dispatcher.unregister(ref);
};
}, [dispatcher]);
};
exports.useDispatcher = useDispatcher;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlRGlzcGF0Y2hlciIsImRpc3BhdGNoZXIiLCJoYW5kbGVyIiwic2F2ZWRIYW5kbGVyIiwidXNlUmVmIiwicGF5bG9hZCIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJyZWYiLCJyZWdpc3RlciIsInVucmVnaXN0ZXIiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZURpc3BhdGNoZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWN0aW9uUGF5bG9hZCB9IGZyb20gXCIuLi9kaXNwYXRjaGVyL3BheWxvYWRzXCI7XG5pbXBvcnQgeyBNYXRyaXhEaXNwYXRjaGVyIH0gZnJvbSBcIi4uL2Rpc3BhdGNoZXIvZGlzcGF0Y2hlclwiO1xuXG4vLyBIb29rIHRvIHNpbXBsaWZ5IGxpc3RlbmluZyB0byBldmVudCBkaXNwYXRjaGVzXG5leHBvcnQgY29uc3QgdXNlRGlzcGF0Y2hlciA9IChkaXNwYXRjaGVyOiBNYXRyaXhEaXNwYXRjaGVyLCBoYW5kbGVyOiAocGF5bG9hZDogQWN0aW9uUGF5bG9hZCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICAgIC8vIENyZWF0ZSBhIHJlZiB0aGF0IHN0b3JlcyBoYW5kbGVyXG4gICAgY29uc3Qgc2F2ZWRIYW5kbGVyID0gdXNlUmVmKChwYXlsb2FkOiBBY3Rpb25QYXlsb2FkKSA9PiB7fSk7XG5cbiAgICAvLyBVcGRhdGUgcmVmLmN1cnJlbnQgdmFsdWUgaWYgaGFuZGxlciBjaGFuZ2VzLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNhdmVkSGFuZGxlci5jdXJyZW50ID0gaGFuZGxlcjtcbiAgICB9LCBbaGFuZGxlcl0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gQ3JlYXRlIGV2ZW50IGxpc3RlbmVyIHRoYXQgY2FsbHMgaGFuZGxlciBmdW5jdGlvbiBzdG9yZWQgaW4gcmVmXG4gICAgICAgIGNvbnN0IHJlZiA9IGRpc3BhdGNoZXIucmVnaXN0ZXIoKHBheWxvYWQpID0+IHNhdmVkSGFuZGxlci5jdXJyZW50KHBheWxvYWQpKTtcbiAgICAgICAgLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVyIG9uIGNsZWFudXBcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGRpc3BhdGNoZXIudW5yZWdpc3RlcihyZWYpO1xuICAgICAgICB9O1xuICAgIH0sIFtkaXNwYXRjaGVyXSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFPQTtBQUNPLE1BQU1DLGFBQWEsR0FBR0EsQ0FBQ0MsVUFBNEIsRUFBRUMsT0FBeUMsS0FBVztFQUM1RztFQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFBQyxhQUFNLEVBQUVDLE9BQXNCLElBQUssQ0FBQyxDQUFDLENBQUM7O0VBRTNEO0VBQ0EsSUFBQUMsZ0JBQVMsRUFBQyxNQUFNO0lBQ1pILFlBQVksQ0FBQ0ksT0FBTyxHQUFHTCxPQUFPO0VBQ2xDLENBQUMsRUFBRSxDQUFDQSxPQUFPLENBQUMsQ0FBQztFQUViLElBQUFJLGdCQUFTLEVBQUMsTUFBTTtJQUNaO0lBQ0EsTUFBTUUsR0FBRyxHQUFHUCxVQUFVLENBQUNRLFFBQVEsQ0FBRUosT0FBTyxJQUFLRixZQUFZLENBQUNJLE9BQU8sQ0FBQ0YsT0FBTyxDQUFDLENBQUM7SUFDM0U7SUFDQSxPQUFPLE1BQU07TUFDVEosVUFBVSxDQUFDUyxVQUFVLENBQUNGLEdBQUcsQ0FBQztJQUM5QixDQUFDO0VBQ0wsQ0FBQyxFQUFFLENBQUNQLFVBQVUsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFBQ1UsT0FBQSxDQUFBWCxhQUFBLEdBQUFBLGFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=