UNPKG

matrix-react-sdk

Version:
68 lines (65 loc) 9.27 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _Clock = _interopRequireDefault(require("./Clock")); var _Playback = require("../../../audio/Playback"); var _AsyncStore = require("../../../stores/AsyncStore"); /* Copyright 2024 New Vector Ltd. Copyright 2021-2023 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. */ /** * A clock for a playback of a recording. */ class PlaybackClock extends _react.default.PureComponent { constructor(props) { super(props); (0, _defineProperty2.default)(this, "onPlaybackUpdate", ev => { // Convert Decoding -> Stopped because we don't care about the distinction here if (ev === _Playback.PlaybackState.Decoding) ev = _Playback.PlaybackState.Stopped; this.setState({ playbackPhase: ev }); }); (0, _defineProperty2.default)(this, "onTimeUpdate", time => { this.setState({ seconds: time[0], durationSeconds: time[1] }); }); this.state = { seconds: this.props.playback.clockInfo.timeSeconds, // we track the duration on state because we won't really know what the clip duration // is until the first time update, and as a PureComponent we are trying to dedupe state // updates as much as possible. This is just the easiest way to avoid a forceUpdate() or // member property to track "did we get a duration". durationSeconds: this.props.playback.clockInfo.durationSeconds, playbackPhase: _Playback.PlaybackState.Stopped // assume not started, so full clock }; this.props.playback.on(_AsyncStore.UPDATE_EVENT, this.onPlaybackUpdate); this.props.playback.clockInfo.liveData.onUpdate(this.onTimeUpdate); } render() { let seconds = this.state.seconds; if (this.state.playbackPhase === _Playback.PlaybackState.Stopped) { if (Number.isFinite(this.props.defaultDisplaySeconds)) { seconds = this.props.defaultDisplaySeconds ?? this.props.playback.durationSeconds; } else { seconds = this.state.durationSeconds; } } return /*#__PURE__*/_react.default.createElement(_Clock.default, { seconds: seconds, role: "timer" }); } } exports.default = PlaybackClock; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9DbG9jayIsIl9QbGF5YmFjayIsIl9Bc3luY1N0b3JlIiwiUGxheWJhY2tDbG9jayIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsImV2IiwiUGxheWJhY2tTdGF0ZSIsIkRlY29kaW5nIiwiU3RvcHBlZCIsInNldFN0YXRlIiwicGxheWJhY2tQaGFzZSIsInRpbWUiLCJzZWNvbmRzIiwiZHVyYXRpb25TZWNvbmRzIiwic3RhdGUiLCJwbGF5YmFjayIsImNsb2NrSW5mbyIsInRpbWVTZWNvbmRzIiwib24iLCJVUERBVEVfRVZFTlQiLCJvblBsYXliYWNrVXBkYXRlIiwibGl2ZURhdGEiLCJvblVwZGF0ZSIsIm9uVGltZVVwZGF0ZSIsInJlbmRlciIsIk51bWJlciIsImlzRmluaXRlIiwiZGVmYXVsdERpc3BsYXlTZWNvbmRzIiwiY3JlYXRlRWxlbWVudCIsInJvbGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvYXVkaW9fbWVzc2FnZXMvUGxheWJhY2tDbG9jay50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEtMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBDbG9jayBmcm9tIFwiLi9DbG9ja1wiO1xuaW1wb3J0IHsgUGxheWJhY2ssIFBsYXliYWNrU3RhdGUgfSBmcm9tIFwiLi4vLi4vLi4vYXVkaW8vUGxheWJhY2tcIjtcbmltcG9ydCB7IFVQREFURV9FVkVOVCB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZXMvQXN5bmNTdG9yZVwiO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBwbGF5YmFjazogUGxheWJhY2s7XG5cbiAgICAvLyBUaGUgZGVmYXVsdCBudW1iZXIgb2Ygc2Vjb25kcyB0byBzaG93IHdoZW4gdGhlIHBsYXliYWNrIGhhcyBjb21wbGV0ZWQgb3JcbiAgICAvLyBoYXMgbm90IHN0YXJ0ZWQuIE5vdCB1c2VkIGR1cmluZyBwbGF5YmFjaywgZXZlbiB3aGVuIHBhdXNlZC4gRGVmYXVsdHMgdG9cbiAgICAvLyBjbGlwIGR1cmF0aW9uIGxlbmd0aC5cbiAgICBkZWZhdWx0RGlzcGxheVNlY29uZHM/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIHNlY29uZHM6IG51bWJlcjtcbiAgICBkdXJhdGlvblNlY29uZHM6IG51bWJlcjtcbiAgICBwbGF5YmFja1BoYXNlOiBQbGF5YmFja1N0YXRlO1xufVxuXG4vKipcbiAqIEEgY2xvY2sgZm9yIGEgcGxheWJhY2sgb2YgYSByZWNvcmRpbmcuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYXliYWNrQ2xvY2sgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElQcm9wcywgSVN0YXRlPiB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBzZWNvbmRzOiB0aGlzLnByb3BzLnBsYXliYWNrLmNsb2NrSW5mby50aW1lU2Vjb25kcyxcbiAgICAgICAgICAgIC8vIHdlIHRyYWNrIHRoZSBkdXJhdGlvbiBvbiBzdGF0ZSBiZWNhdXNlIHdlIHdvbid0IHJlYWxseSBrbm93IHdoYXQgdGhlIGNsaXAgZHVyYXRpb25cbiAgICAgICAgICAgIC8vIGlzIHVudGlsIHRoZSBmaXJzdCB0aW1lIHVwZGF0ZSwgYW5kIGFzIGEgUHVyZUNvbXBvbmVudCB3ZSBhcmUgdHJ5aW5nIHRvIGRlZHVwZSBzdGF0ZVxuICAgICAgICAgICAgLy8gdXBkYXRlcyBhcyBtdWNoIGFzIHBvc3NpYmxlLiBUaGlzIGlzIGp1c3QgdGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIGEgZm9yY2VVcGRhdGUoKSBvclxuICAgICAgICAgICAgLy8gbWVtYmVyIHByb3BlcnR5IHRvIHRyYWNrIFwiZGlkIHdlIGdldCBhIGR1cmF0aW9uXCIuXG4gICAgICAgICAgICBkdXJhdGlvblNlY29uZHM6IHRoaXMucHJvcHMucGxheWJhY2suY2xvY2tJbmZvLmR1cmF0aW9uU2Vjb25kcyxcbiAgICAgICAgICAgIHBsYXliYWNrUGhhc2U6IFBsYXliYWNrU3RhdGUuU3RvcHBlZCwgLy8gYXNzdW1lIG5vdCBzdGFydGVkLCBzbyBmdWxsIGNsb2NrXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJvcHMucGxheWJhY2sub24oVVBEQVRFX0VWRU5ULCB0aGlzLm9uUGxheWJhY2tVcGRhdGUpO1xuICAgICAgICB0aGlzLnByb3BzLnBsYXliYWNrLmNsb2NrSW5mby5saXZlRGF0YS5vblVwZGF0ZSh0aGlzLm9uVGltZVVwZGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblBsYXliYWNrVXBkYXRlID0gKGV2OiBQbGF5YmFja1N0YXRlKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIENvbnZlcnQgRGVjb2RpbmcgLT4gU3RvcHBlZCBiZWNhdXNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGRpc3RpbmN0aW9uIGhlcmVcbiAgICAgICAgaWYgKGV2ID09PSBQbGF5YmFja1N0YXRlLkRlY29kaW5nKSBldiA9IFBsYXliYWNrU3RhdGUuU3RvcHBlZDtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHBsYXliYWNrUGhhc2U6IGV2IH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIG9uVGltZVVwZGF0ZSA9ICh0aW1lOiBudW1iZXJbXSk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2Vjb25kczogdGltZVswXSwgZHVyYXRpb25TZWNvbmRzOiB0aW1lWzFdIH0pO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGxldCBzZWNvbmRzID0gdGhpcy5zdGF0ZS5zZWNvbmRzO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5wbGF5YmFja1BoYXNlID09PSBQbGF5YmFja1N0YXRlLlN0b3BwZWQpIHtcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUodGhpcy5wcm9wcy5kZWZhdWx0RGlzcGxheVNlY29uZHMpKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA9IHRoaXMucHJvcHMuZGVmYXVsdERpc3BsYXlTZWNvbmRzID8/IHRoaXMucHJvcHMucGxheWJhY2suZHVyYXRpb25TZWNvbmRzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWNvbmRzID0gdGhpcy5zdGF0ZS5kdXJhdGlvblNlY29uZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDxDbG9jayBzZWNvbmRzPXtzZWNvbmRzfSByb2xlPVwidGltZXJcIiAvPjtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBdUJBO0FBQ0E7QUFDQTtBQUNlLE1BQU1JLGFBQWEsU0FBU0MsY0FBSyxDQUFDQyxhQUFhLENBQWlCO0VBQ3BFQyxXQUFXQSxDQUFDQyxLQUFhLEVBQUU7SUFDOUIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQyxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBLDRCQWVXQyxFQUFpQixJQUFXO01BQ3BEO01BQ0EsSUFBSUEsRUFBRSxLQUFLQyx1QkFBYSxDQUFDQyxRQUFRLEVBQUVGLEVBQUUsR0FBR0MsdUJBQWEsQ0FBQ0UsT0FBTztNQUM3RCxJQUFJLENBQUNDLFFBQVEsQ0FBQztRQUFFQyxhQUFhLEVBQUVMO01BQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFBQSxJQUFBRixnQkFBQSxDQUFBQyxPQUFBLHdCQUV1Qk8sSUFBYyxJQUFXO01BQzdDLElBQUksQ0FBQ0YsUUFBUSxDQUFDO1FBQUVHLE9BQU8sRUFBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUFFRSxlQUFlLEVBQUVGLElBQUksQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFyQkcsSUFBSSxDQUFDRyxLQUFLLEdBQUc7TUFDVEYsT0FBTyxFQUFFLElBQUksQ0FBQ1YsS0FBSyxDQUFDYSxRQUFRLENBQUNDLFNBQVMsQ0FBQ0MsV0FBVztNQUNsRDtNQUNBO01BQ0E7TUFDQTtNQUNBSixlQUFlLEVBQUUsSUFBSSxDQUFDWCxLQUFLLENBQUNhLFFBQVEsQ0FBQ0MsU0FBUyxDQUFDSCxlQUFlO01BQzlESCxhQUFhLEVBQUVKLHVCQUFhLENBQUNFLE9BQU8sQ0FBRTtJQUMxQyxDQUFDO0lBQ0QsSUFBSSxDQUFDTixLQUFLLENBQUNhLFFBQVEsQ0FBQ0csRUFBRSxDQUFDQyx3QkFBWSxFQUFFLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUM7SUFDM0QsSUFBSSxDQUFDbEIsS0FBSyxDQUFDYSxRQUFRLENBQUNDLFNBQVMsQ0FBQ0ssUUFBUSxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDQyxZQUFZLENBQUM7RUFDdEU7RUFZT0MsTUFBTUEsQ0FBQSxFQUFvQjtJQUM3QixJQUFJWixPQUFPLEdBQUcsSUFBSSxDQUFDRSxLQUFLLENBQUNGLE9BQU87SUFDaEMsSUFBSSxJQUFJLENBQUNFLEtBQUssQ0FBQ0osYUFBYSxLQUFLSix1QkFBYSxDQUFDRSxPQUFPLEVBQUU7TUFDcEQsSUFBSWlCLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDLElBQUksQ0FBQ3hCLEtBQUssQ0FBQ3lCLHFCQUFxQixDQUFDLEVBQUU7UUFDbkRmLE9BQU8sR0FBRyxJQUFJLENBQUNWLEtBQUssQ0FBQ3lCLHFCQUFxQixJQUFJLElBQUksQ0FBQ3pCLEtBQUssQ0FBQ2EsUUFBUSxDQUFDRixlQUFlO01BQ3JGLENBQUMsTUFBTTtRQUNIRCxPQUFPLEdBQUcsSUFBSSxDQUFDRSxLQUFLLENBQUNELGVBQWU7TUFDeEM7SUFDSjtJQUNBLG9CQUFPckIsTUFBQSxDQUFBWSxPQUFBLENBQUF3QixhQUFBLENBQUNqQyxNQUFBLENBQUFTLE9BQUs7TUFBQ1EsT0FBTyxFQUFFQSxPQUFRO01BQUNpQixJQUFJLEVBQUM7SUFBTyxDQUFFLENBQUM7RUFDbkQ7QUFDSjtBQUFDQyxPQUFBLENBQUExQixPQUFBLEdBQUFOLGFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=