matrix-react-sdk
Version:
SDK for matrix.org using React
41 lines (36 loc) • 6.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sortBeaconsByLatestExpiry = exports.sortBeaconsByLatestCreation = exports.msUntilExpiry = exports.isBeaconWaitingToStart = exports.getBeaconMsUntilExpiry = exports.getBeaconExpiryTimestamp = void 0;
/*
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.
*/
/**
* Get ms until expiry
* Returns 0 when expiry is already passed
* @param startTimestamp
* @param durationMs
* @returns remainingMs
*/
const msUntilExpiry = (startTimestamp, durationMs) => Math.max(0, startTimestamp + durationMs - Date.now());
exports.msUntilExpiry = msUntilExpiry;
const getBeaconMsUntilExpiry = beaconInfo => msUntilExpiry(beaconInfo.timestamp || 0, beaconInfo.timeout);
exports.getBeaconMsUntilExpiry = getBeaconMsUntilExpiry;
const getBeaconExpiryTimestamp = beacon => (beacon.beaconInfo.timestamp || 0) + beacon.beaconInfo.timeout;
exports.getBeaconExpiryTimestamp = getBeaconExpiryTimestamp;
const sortBeaconsByLatestExpiry = (left, right) => getBeaconExpiryTimestamp(right) - getBeaconExpiryTimestamp(left);
// aka sort by timestamp descending
exports.sortBeaconsByLatestExpiry = sortBeaconsByLatestExpiry;
const sortBeaconsByLatestCreation = (left, right) => (right.beaconInfo.timestamp || 0) - (left.beaconInfo.timestamp || 0);
// a beacon's starting timestamp can be in the future
// (either from small deviations in system clock times, or on purpose from another client)
// a beacon is only live between its start timestamp and expiry
// detect when a beacon is waiting to become live
exports.sortBeaconsByLatestCreation = sortBeaconsByLatestCreation;
const isBeaconWaitingToStart = beacon => !beacon.isLive && !!beacon.beaconInfo.timestamp && beacon.beaconInfo.timestamp > Date.now() && getBeaconExpiryTimestamp(beacon) > Date.now();
exports.isBeaconWaitingToStart = isBeaconWaitingToStart;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtc1VudGlsRXhwaXJ5Iiwic3RhcnRUaW1lc3RhbXAiLCJkdXJhdGlvbk1zIiwiTWF0aCIsIm1heCIsIkRhdGUiLCJub3ciLCJleHBvcnRzIiwiZ2V0QmVhY29uTXNVbnRpbEV4cGlyeSIsImJlYWNvbkluZm8iLCJ0aW1lc3RhbXAiLCJ0aW1lb3V0IiwiZ2V0QmVhY29uRXhwaXJ5VGltZXN0YW1wIiwiYmVhY29uIiwic29ydEJlYWNvbnNCeUxhdGVzdEV4cGlyeSIsImxlZnQiLCJyaWdodCIsInNvcnRCZWFjb25zQnlMYXRlc3RDcmVhdGlvbiIsImlzQmVhY29uV2FpdGluZ1RvU3RhcnQiLCJpc0xpdmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYmVhY29uL2R1cmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkNcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgQmVhY29uLCBDb250ZW50SGVscGVycyB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuLyoqXG4gKiBHZXQgbXMgdW50aWwgZXhwaXJ5XG4gKiBSZXR1cm5zIDAgd2hlbiBleHBpcnkgaXMgYWxyZWFkeSBwYXNzZWRcbiAqIEBwYXJhbSBzdGFydFRpbWVzdGFtcFxuICogQHBhcmFtIGR1cmF0aW9uTXNcbiAqIEByZXR1cm5zIHJlbWFpbmluZ01zXG4gKi9cbmV4cG9ydCBjb25zdCBtc1VudGlsRXhwaXJ5ID0gKHN0YXJ0VGltZXN0YW1wOiBudW1iZXIsIGR1cmF0aW9uTXM6IG51bWJlcik6IG51bWJlciA9PlxuICAgIE1hdGgubWF4KDAsIHN0YXJ0VGltZXN0YW1wICsgZHVyYXRpb25NcyAtIERhdGUubm93KCkpO1xuXG5leHBvcnQgY29uc3QgZ2V0QmVhY29uTXNVbnRpbEV4cGlyeSA9IChiZWFjb25JbmZvOiBDb250ZW50SGVscGVycy5CZWFjb25JbmZvU3RhdGUpOiBudW1iZXIgPT5cbiAgICBtc1VudGlsRXhwaXJ5KGJlYWNvbkluZm8udGltZXN0YW1wIHx8IDAsIGJlYWNvbkluZm8udGltZW91dCk7XG5cbmV4cG9ydCBjb25zdCBnZXRCZWFjb25FeHBpcnlUaW1lc3RhbXAgPSAoYmVhY29uOiBCZWFjb24pOiBudW1iZXIgPT5cbiAgICAoYmVhY29uLmJlYWNvbkluZm8udGltZXN0YW1wIHx8IDApICsgYmVhY29uLmJlYWNvbkluZm8udGltZW91dDtcblxuZXhwb3J0IGNvbnN0IHNvcnRCZWFjb25zQnlMYXRlc3RFeHBpcnkgPSAobGVmdDogQmVhY29uLCByaWdodDogQmVhY29uKTogbnVtYmVyID0+XG4gICAgZ2V0QmVhY29uRXhwaXJ5VGltZXN0YW1wKHJpZ2h0KSAtIGdldEJlYWNvbkV4cGlyeVRpbWVzdGFtcChsZWZ0KTtcblxuLy8gYWthIHNvcnQgYnkgdGltZXN0YW1wIGRlc2NlbmRpbmdcbmV4cG9ydCBjb25zdCBzb3J0QmVhY29uc0J5TGF0ZXN0Q3JlYXRpb24gPSAobGVmdDogQmVhY29uLCByaWdodDogQmVhY29uKTogbnVtYmVyID0+XG4gICAgKHJpZ2h0LmJlYWNvbkluZm8udGltZXN0YW1wIHx8IDApIC0gKGxlZnQuYmVhY29uSW5mby50aW1lc3RhbXAgfHwgMCk7XG5cbi8vIGEgYmVhY29uJ3Mgc3RhcnRpbmcgdGltZXN0YW1wIGNhbiBiZSBpbiB0aGUgZnV0dXJlXG4vLyAoZWl0aGVyIGZyb20gc21hbGwgZGV2aWF0aW9ucyBpbiBzeXN0ZW0gY2xvY2sgdGltZXMsIG9yIG9uIHB1cnBvc2UgZnJvbSBhbm90aGVyIGNsaWVudClcbi8vIGEgYmVhY29uIGlzIG9ubHkgbGl2ZSBiZXR3ZWVuIGl0cyBzdGFydCB0aW1lc3RhbXAgYW5kIGV4cGlyeVxuLy8gZGV0ZWN0IHdoZW4gYSBiZWFjb24gaXMgd2FpdGluZyB0byBiZWNvbWUgbGl2ZVxuZXhwb3J0IGNvbnN0IGlzQmVhY29uV2FpdGluZ1RvU3RhcnQgPSAoYmVhY29uOiBCZWFjb24pOiBib29sZWFuID0+XG4gICAgIWJlYWNvbi5pc0xpdmUgJiZcbiAgICAhIWJlYWNvbi5iZWFjb25JbmZvLnRpbWVzdGFtcCAmJlxuICAgIGJlYWNvbi5iZWFjb25JbmZvLnRpbWVzdGFtcCA+IERhdGUubm93KCkgJiZcbiAgICBnZXRCZWFjb25FeHBpcnlUaW1lc3RhbXAoYmVhY29uKSA+IERhdGUubm93KCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUEsYUFBYSxHQUFHQSxDQUFDQyxjQUFzQixFQUFFQyxVQUFrQixLQUNwRUMsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFSCxjQUFjLEdBQUdDLFVBQVUsR0FBR0csSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQVAsYUFBQSxHQUFBQSxhQUFBO0FBRW5ELE1BQU1RLHNCQUFzQixHQUFJQyxVQUEwQyxJQUM3RVQsYUFBYSxDQUFDUyxVQUFVLENBQUNDLFNBQVMsSUFBSSxDQUFDLEVBQUVELFVBQVUsQ0FBQ0UsT0FBTyxDQUFDO0FBQUNKLE9BQUEsQ0FBQUMsc0JBQUEsR0FBQUEsc0JBQUE7QUFFMUQsTUFBTUksd0JBQXdCLEdBQUlDLE1BQWMsSUFDbkQsQ0FBQ0EsTUFBTSxDQUFDSixVQUFVLENBQUNDLFNBQVMsSUFBSSxDQUFDLElBQUlHLE1BQU0sQ0FBQ0osVUFBVSxDQUFDRSxPQUFPO0FBQUNKLE9BQUEsQ0FBQUssd0JBQUEsR0FBQUEsd0JBQUE7QUFFNUQsTUFBTUUseUJBQXlCLEdBQUdBLENBQUNDLElBQVksRUFBRUMsS0FBYSxLQUNqRUosd0JBQXdCLENBQUNJLEtBQUssQ0FBQyxHQUFHSix3QkFBd0IsQ0FBQ0csSUFBSSxDQUFDOztBQUVwRTtBQUFBUixPQUFBLENBQUFPLHlCQUFBLEdBQUFBLHlCQUFBO0FBQ08sTUFBTUcsMkJBQTJCLEdBQUdBLENBQUNGLElBQVksRUFBRUMsS0FBYSxLQUNuRSxDQUFDQSxLQUFLLENBQUNQLFVBQVUsQ0FBQ0MsU0FBUyxJQUFJLENBQUMsS0FBS0ssSUFBSSxDQUFDTixVQUFVLENBQUNDLFNBQVMsSUFBSSxDQUFDLENBQUM7O0FBRXhFO0FBQ0E7QUFDQTtBQUNBO0FBQUFILE9BQUEsQ0FBQVUsMkJBQUEsR0FBQUEsMkJBQUE7QUFDTyxNQUFNQyxzQkFBc0IsR0FBSUwsTUFBYyxJQUNqRCxDQUFDQSxNQUFNLENBQUNNLE1BQU0sSUFDZCxDQUFDLENBQUNOLE1BQU0sQ0FBQ0osVUFBVSxDQUFDQyxTQUFTLElBQzdCRyxNQUFNLENBQUNKLFVBQVUsQ0FBQ0MsU0FBUyxHQUFHTCxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLElBQ3hDTSx3QkFBd0IsQ0FBQ0MsTUFBTSxDQUFDLEdBQUdSLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7QUFBQ0MsT0FBQSxDQUFBVyxzQkFBQSxHQUFBQSxzQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==