matrix-react-sdk
Version:
SDK for matrix.org using React
68 lines (65 loc) • 9.27 kB
JavaScript
"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=