matrix-react-sdk
Version:
SDK for matrix.org using React
49 lines (41 loc) • 5.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAccountData = void 0;
var _react = require("react");
var _matrix = require("matrix-js-sdk/src/matrix");
var _useEventEmitter = require("./useEventEmitter");
/*
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.
*/
const tryGetContent = ev => ev?.getContent();
// Hook to simplify listening to Matrix account data
const useAccountData = (cli, eventType) => {
const [value, setValue] = (0, _react.useState)(() => tryGetContent(cli.getAccountData(eventType)));
const handler = (0, _react.useCallback)(event => {
if (event.getType() !== eventType) return;
setValue(event.getContent());
}, [eventType]);
(0, _useEventEmitter.useTypedEventEmitter)(cli, _matrix.ClientEvent.AccountData, handler);
return value || {};
};
// Currently not used, commenting out otherwise the dead code CI is unhappy.
// But this code is valid and probably will be needed.
// export const useRoomAccountData = <T extends {}>(room: Room, eventType: string): T => {
// const [value, setValue] = useState<T | undefined>(() => tryGetContent<T>(room.getAccountData(eventType)));
// const handler = useCallback(
// (event) => {
// if (event.getType() !== eventType) return;
// setValue(event.getContent());
// },
// [eventType],
// );
// useTypedEventEmitter(room, RoomEvent.AccountData, handler);
// return value || ({} as T);
// };
exports.useAccountData = useAccountData;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX21hdHJpeCIsIl91c2VFdmVudEVtaXR0ZXIiLCJ0cnlHZXRDb250ZW50IiwiZXYiLCJnZXRDb250ZW50IiwidXNlQWNjb3VudERhdGEiLCJjbGkiLCJldmVudFR5cGUiLCJ2YWx1ZSIsInNldFZhbHVlIiwidXNlU3RhdGUiLCJnZXRBY2NvdW50RGF0YSIsImhhbmRsZXIiLCJ1c2VDYWxsYmFjayIsImV2ZW50IiwiZ2V0VHlwZSIsInVzZVR5cGVkRXZlbnRFbWl0dGVyIiwiQ2xpZW50RXZlbnQiLCJBY2NvdW50RGF0YSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQWNjb3VudERhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDbGllbnRFdmVudCwgTWF0cml4Q2xpZW50LCBNYXRyaXhFdmVudCB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuaW1wb3J0IHsgdXNlVHlwZWRFdmVudEVtaXR0ZXIgfSBmcm9tIFwiLi91c2VFdmVudEVtaXR0ZXJcIjtcblxuY29uc3QgdHJ5R2V0Q29udGVudCA9IDxUIGV4dGVuZHMge30+KGV2PzogTWF0cml4RXZlbnQpOiBUIHwgdW5kZWZpbmVkID0+IGV2Py5nZXRDb250ZW50PFQ+KCk7XG5cbi8vIEhvb2sgdG8gc2ltcGxpZnkgbGlzdGVuaW5nIHRvIE1hdHJpeCBhY2NvdW50IGRhdGFcbmV4cG9ydCBjb25zdCB1c2VBY2NvdW50RGF0YSA9IDxUIGV4dGVuZHMge30+KGNsaTogTWF0cml4Q2xpZW50LCBldmVudFR5cGU6IHN0cmluZyk6IFQgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8VCB8IHVuZGVmaW5lZD4oKCkgPT4gdHJ5R2V0Q29udGVudDxUPihjbGkuZ2V0QWNjb3VudERhdGEoZXZlbnRUeXBlKSkpO1xuXG4gICAgY29uc3QgaGFuZGxlciA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAoZXZlbnQ6IE1hdHJpeEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZ2V0VHlwZSgpICE9PSBldmVudFR5cGUpIHJldHVybjtcbiAgICAgICAgICAgIHNldFZhbHVlKGV2ZW50LmdldENvbnRlbnQ8VD4oKSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtldmVudFR5cGVdLFxuICAgICk7XG4gICAgdXNlVHlwZWRFdmVudEVtaXR0ZXIoY2xpLCBDbGllbnRFdmVudC5BY2NvdW50RGF0YSwgaGFuZGxlcik7XG5cbiAgICByZXR1cm4gdmFsdWUgfHwgKHt9IGFzIFQpO1xufTtcblxuLy8gQ3VycmVudGx5IG5vdCB1c2VkLCBjb21tZW50aW5nIG91dCBvdGhlcndpc2UgdGhlIGRlYWQgY29kZSBDSSBpcyB1bmhhcHB5LlxuLy8gQnV0IHRoaXMgY29kZSBpcyB2YWxpZCBhbmQgcHJvYmFibHkgd2lsbCBiZSBuZWVkZWQuXG5cbi8vIGV4cG9ydCBjb25zdCB1c2VSb29tQWNjb3VudERhdGEgPSA8VCBleHRlbmRzIHt9Pihyb29tOiBSb29tLCBldmVudFR5cGU6IHN0cmluZyk6IFQgPT4ge1xuLy8gICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8VCB8IHVuZGVmaW5lZD4oKCkgPT4gdHJ5R2V0Q29udGVudDxUPihyb29tLmdldEFjY291bnREYXRhKGV2ZW50VHlwZSkpKTtcblxuLy8gICAgIGNvbnN0IGhhbmRsZXIgPSB1c2VDYWxsYmFjayhcbi8vICAgICAgICAgKGV2ZW50KSA9PiB7XG4vLyAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0VHlwZSgpICE9PSBldmVudFR5cGUpIHJldHVybjtcbi8vICAgICAgICAgICAgIHNldFZhbHVlKGV2ZW50LmdldENvbnRlbnQoKSk7XG4vLyAgICAgICAgIH0sXG4vLyAgICAgICAgIFtldmVudFR5cGVdLFxuLy8gICAgICk7XG4vLyAgICAgdXNlVHlwZWRFdmVudEVtaXR0ZXIocm9vbSwgUm9vbUV2ZW50LkFjY291bnREYXRhLCBoYW5kbGVyKTtcblxuLy8gICAgIHJldHVybiB2YWx1ZSB8fCAoe30gYXMgVCk7XG4vLyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0EsTUFBTUcsYUFBYSxHQUFrQkMsRUFBZ0IsSUFBb0JBLEVBQUUsRUFBRUMsVUFBVSxDQUFJLENBQUM7O0FBRTVGO0FBQ08sTUFBTUMsY0FBYyxHQUFHQSxDQUFlQyxHQUFpQixFQUFFQyxTQUFpQixLQUFRO0VBQ3JGLE1BQU0sQ0FBQ0MsS0FBSyxFQUFFQyxRQUFRLENBQUMsR0FBRyxJQUFBQyxlQUFRLEVBQWdCLE1BQU1SLGFBQWEsQ0FBSUksR0FBRyxDQUFDSyxjQUFjLENBQUNKLFNBQVMsQ0FBQyxDQUFDLENBQUM7RUFFeEcsTUFBTUssT0FBTyxHQUFHLElBQUFDLGtCQUFXLEVBQ3RCQyxLQUFrQixJQUFLO0lBQ3BCLElBQUlBLEtBQUssQ0FBQ0MsT0FBTyxDQUFDLENBQUMsS0FBS1IsU0FBUyxFQUFFO0lBQ25DRSxRQUFRLENBQUNLLEtBQUssQ0FBQ1YsVUFBVSxDQUFJLENBQUMsQ0FBQztFQUNuQyxDQUFDLEVBQ0QsQ0FBQ0csU0FBUyxDQUNkLENBQUM7RUFDRCxJQUFBUyxxQ0FBb0IsRUFBQ1YsR0FBRyxFQUFFVyxtQkFBVyxDQUFDQyxXQUFXLEVBQUVOLE9BQU8sQ0FBQztFQUUzRCxPQUFPSixLQUFLLElBQUssQ0FBQyxDQUFPO0FBQzdCLENBQUM7O0FBRUQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUFBVyxPQUFBLENBQUFkLGNBQUEsR0FBQUEsY0FBQSIsImlnbm9yZUxpc3QiOltdfQ==