UNPKG

matrix-react-sdk

Version:
35 lines (31 loc) 3.74 kB
"use strict"; 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=