matrix-react-sdk
Version:
SDK for matrix.org using React
33 lines (30 loc) • 3.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useLatestResult = void 0;
var _react = require("react");
/*
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.
*/
/**
* Hook to prevent a slower response to an earlier query overwriting the result to a faster response of a later query
* @param onResultChanged
*/
const useLatestResult = onResultChanged => {
const ref = (0, _react.useRef)(null);
const setQuery = (0, _react.useCallback)(query => {
ref.current = query;
}, []);
const setResult = (0, _react.useCallback)((query, result) => {
if (ref.current === query) {
onResultChanged(result);
}
}, [onResultChanged]);
return [setQuery, setResult];
};
exports.useLatestResult = useLatestResult;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlTGF0ZXN0UmVzdWx0Iiwib25SZXN1bHRDaGFuZ2VkIiwicmVmIiwidXNlUmVmIiwic2V0UXVlcnkiLCJ1c2VDYWxsYmFjayIsInF1ZXJ5IiwiY3VycmVudCIsInNldFJlc3VsdCIsInJlc3VsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTGF0ZXN0UmVzdWx0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBIb29rIHRvIHByZXZlbnQgYSBzbG93ZXIgcmVzcG9uc2UgdG8gYW4gZWFybGllciBxdWVyeSBvdmVyd3JpdGluZyB0aGUgcmVzdWx0IHRvIGEgZmFzdGVyIHJlc3BvbnNlIG9mIGEgbGF0ZXIgcXVlcnlcbiAqIEBwYXJhbSBvblJlc3VsdENoYW5nZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUxhdGVzdFJlc3VsdCA9IDxULCBSPihcbiAgICBvblJlc3VsdENoYW5nZWQ6IChyZXN1bHQ6IFIpID0+IHZvaWQsXG4pOiBbKHF1ZXJ5OiBUIHwgbnVsbCkgPT4gdm9pZCwgKHF1ZXJ5OiBUIHwgbnVsbCwgcmVzdWx0OiBSKSA9PiB2b2lkXSA9PiB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmPFQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBzZXRRdWVyeSA9IHVzZUNhbGxiYWNrKChxdWVyeTogVCB8IG51bGwpID0+IHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBxdWVyeTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3Qgc2V0UmVzdWx0ID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChxdWVyeTogVCB8IG51bGwsIHJlc3VsdDogUikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlZi5jdXJyZW50ID09PSBxdWVyeSkge1xuICAgICAgICAgICAgICAgIG9uUmVzdWx0Q2hhbmdlZChyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbb25SZXN1bHRDaGFuZ2VkXSxcbiAgICApO1xuICAgIHJldHVybiBbc2V0UXVlcnksIHNldFJlc3VsdF07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLGVBQWUsR0FDeEJDLGVBQW9DLElBQ2dDO0VBQ3BFLE1BQU1DLEdBQUcsR0FBRyxJQUFBQyxhQUFNLEVBQVcsSUFBSSxDQUFDO0VBQ2xDLE1BQU1DLFFBQVEsR0FBRyxJQUFBQyxrQkFBVyxFQUFFQyxLQUFlLElBQUs7SUFDOUNKLEdBQUcsQ0FBQ0ssT0FBTyxHQUFHRCxLQUFLO0VBQ3ZCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFDTixNQUFNRSxTQUFTLEdBQUcsSUFBQUgsa0JBQVcsRUFDekIsQ0FBQ0MsS0FBZSxFQUFFRyxNQUFTLEtBQUs7SUFDNUIsSUFBSVAsR0FBRyxDQUFDSyxPQUFPLEtBQUtELEtBQUssRUFBRTtNQUN2QkwsZUFBZSxDQUFDUSxNQUFNLENBQUM7SUFDM0I7RUFDSixDQUFDLEVBQ0QsQ0FBQ1IsZUFBZSxDQUNwQixDQUFDO0VBQ0QsT0FBTyxDQUFDRyxRQUFRLEVBQUVJLFNBQVMsQ0FBQztBQUNoQyxDQUFDO0FBQUNFLE9BQUEsQ0FBQVYsZUFBQSxHQUFBQSxlQUFBIiwiaWdub3JlTGlzdCI6W119