UNPKG

matrix-react-sdk

Version:
41 lines (36 loc) 6.48 kB
"use strict"; 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==