matrix-react-sdk
Version:
SDK for matrix.org using React
98 lines (95 loc) • 15.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CallView = void 0;
var _react = _interopRequireWildcard(require("react"));
var _Call = require("../../../models/Call");
var _useCall = require("../../../hooks/useCall");
var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext"));
var _AppTile = _interopRequireDefault(require("../elements/AppTile"));
var _CallStore = require("../../../stores/CallStore");
var _SDKContext = require("../../../contexts/SDKContext");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/*
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.
*/
const JoinCallView = ({
room,
resizing,
call,
skipLobby,
role
}) => {
const cli = (0, _react.useContext)(_MatrixClientContext.default);
(0, _react.useEffect)(() => {
// We'll take this opportunity to tidy up our room state
call.clean();
}, [call]);
(0, _react.useEffect)(() => {
// Always update the widget data so that we don't ignore "skipLobby" accidentally.
call.widget.data ??= {};
call.widget.data.skipLobby = skipLobby;
}, [call.widget, skipLobby]);
(0, _react.useEffect)(() => {
if (call.connectionState === _Call.ConnectionState.Disconnected) {
// immediately start the call
// (this will start the lobby view in the widget and connect to all required widget events)
call.start();
}
return () => {
// If we are connected the widget is sticky and we do not want to destroy the call.
if (!call.connected) call.destroy();
};
}, [call]);
const disconnectAllOtherCalls = (0, _react.useCallback)(async () => {
// The stickyPromise has to resolve before the widget actually becomes sticky.
// We only let the widget become sticky after disconnecting all other active calls.
const calls = [..._CallStore.CallStore.instance.connectedCalls].filter(call => _SDKContext.SdkContextClass.instance.roomViewStore.getRoomId() !== call.roomId);
await Promise.all(calls.map(async call => await call.disconnect()));
}, []);
return /*#__PURE__*/_react.default.createElement("div", {
className: "mx_CallView"
}, /*#__PURE__*/_react.default.createElement(_AppTile.default, {
app: call.widget,
room: room,
userId: cli.credentials.userId,
creatorUserId: call.widget.creatorUserId,
waitForIframeLoad: call.widget.waitForIframeLoad,
showMenubar: false,
pointerEvents: resizing ? "none" : undefined,
stickyPromise: disconnectAllOtherCalls
}));
};
const CallView = ({
room,
resizing,
waitForCall,
skipLobby,
role
}) => {
const call = (0, _useCall.useCall)(room.roomId);
(0, _react.useEffect)(() => {
if (call === null && !waitForCall) {
_Call.ElementCall.create(room, skipLobby);
}
}, [call, room, skipLobby, waitForCall]);
if (call === null) {
return null;
} else {
return /*#__PURE__*/_react.default.createElement(JoinCallView, {
room: room,
resizing: resizing,
call: call,
skipLobby: skipLobby,
role: role
});
}
};
exports.CallView = CallView;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfQ2FsbCIsIl91c2VDYWxsIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0FwcFRpbGUiLCJfQ2FsbFN0b3JlIiwiX1NES0NvbnRleHQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJKb2luQ2FsbFZpZXciLCJyb29tIiwicmVzaXppbmciLCJza2lwTG9iYnkiLCJyb2xlIiwiY2xpIiwidXNlQ29udGV4dCIsIk1hdHJpeENsaWVudENvbnRleHQiLCJ1c2VFZmZlY3QiLCJjbGVhbiIsIndpZGdldCIsImRhdGEiLCJjb25uZWN0aW9uU3RhdGUiLCJDb25uZWN0aW9uU3RhdGUiLCJEaXNjb25uZWN0ZWQiLCJzdGFydCIsImNvbm5lY3RlZCIsImRlc3Ryb3kiLCJkaXNjb25uZWN0QWxsT3RoZXJDYWxscyIsInVzZUNhbGxiYWNrIiwiY2FsbHMiLCJDYWxsU3RvcmUiLCJpbnN0YW5jZSIsImNvbm5lY3RlZENhbGxzIiwiZmlsdGVyIiwiU2RrQ29udGV4dENsYXNzIiwicm9vbVZpZXdTdG9yZSIsImdldFJvb21JZCIsInJvb21JZCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJkaXNjb25uZWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImFwcCIsInVzZXJJZCIsImNyZWRlbnRpYWxzIiwiY3JlYXRvclVzZXJJZCIsIndhaXRGb3JJZnJhbWVMb2FkIiwic2hvd01lbnViYXIiLCJwb2ludGVyRXZlbnRzIiwidW5kZWZpbmVkIiwic3RpY2t5UHJvbWlzZSIsIkNhbGxWaWV3Iiwid2FpdEZvckNhbGwiLCJ1c2VDYWxsIiwiRWxlbWVudENhbGwiLCJjcmVhdGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3Mvdm9pcC9DYWxsVmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIEFyaWFSb2xlLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFJvb20gfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5pbXBvcnQgeyBDYWxsLCBDb25uZWN0aW9uU3RhdGUsIEVsZW1lbnRDYWxsIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9DYWxsXCI7XG5pbXBvcnQgeyB1c2VDYWxsIH0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzL3VzZUNhbGxcIjtcbmltcG9ydCBNYXRyaXhDbGllbnRDb250ZXh0IGZyb20gXCIuLi8uLi8uLi9jb250ZXh0cy9NYXRyaXhDbGllbnRDb250ZXh0XCI7XG5pbXBvcnQgQXBwVGlsZSBmcm9tIFwiLi4vZWxlbWVudHMvQXBwVGlsZVwiO1xuaW1wb3J0IHsgQ2FsbFN0b3JlIH0gZnJvbSBcIi4uLy4uLy4uL3N0b3Jlcy9DYWxsU3RvcmVcIjtcbmltcG9ydCB7IFNka0NvbnRleHRDbGFzcyB9IGZyb20gXCIuLi8uLi8uLi9jb250ZXh0cy9TREtDb250ZXh0XCI7XG5cbmludGVyZmFjZSBKb2luQ2FsbFZpZXdQcm9wcyB7XG4gICAgcm9vbTogUm9vbTtcbiAgICByZXNpemluZzogYm9vbGVhbjtcbiAgICBjYWxsOiBDYWxsO1xuICAgIHNraXBMb2JieT86IGJvb2xlYW47XG4gICAgcm9sZT86IEFyaWFSb2xlO1xufVxuXG5jb25zdCBKb2luQ2FsbFZpZXc6IEZDPEpvaW5DYWxsVmlld1Byb3BzPiA9ICh7IHJvb20sIHJlc2l6aW5nLCBjYWxsLCBza2lwTG9iYnksIHJvbGUgfSkgPT4ge1xuICAgIGNvbnN0IGNsaSA9IHVzZUNvbnRleHQoTWF0cml4Q2xpZW50Q29udGV4dCk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBXZSdsbCB0YWtlIHRoaXMgb3Bwb3J0dW5pdHkgdG8gdGlkeSB1cCBvdXIgcm9vbSBzdGF0ZVxuICAgICAgICBjYWxsLmNsZWFuKCk7XG4gICAgfSwgW2NhbGxdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIEFsd2F5cyB1cGRhdGUgdGhlIHdpZGdldCBkYXRhIHNvIHRoYXQgd2UgZG9uJ3QgaWdub3JlIFwic2tpcExvYmJ5XCIgYWNjaWRlbnRhbGx5LlxuICAgICAgICBjYWxsLndpZGdldC5kYXRhID8/PSB7fTtcbiAgICAgICAgY2FsbC53aWRnZXQuZGF0YS5za2lwTG9iYnkgPSBza2lwTG9iYnk7XG4gICAgfSwgW2NhbGwud2lkZ2V0LCBza2lwTG9iYnldKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjYWxsLmNvbm5lY3Rpb25TdGF0ZSA9PT0gQ29ubmVjdGlvblN0YXRlLkRpc2Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHkgc3RhcnQgdGhlIGNhbGxcbiAgICAgICAgICAgIC8vICh0aGlzIHdpbGwgc3RhcnQgdGhlIGxvYmJ5IHZpZXcgaW4gdGhlIHdpZGdldCBhbmQgY29ubmVjdCB0byBhbGwgcmVxdWlyZWQgd2lkZ2V0IGV2ZW50cylcbiAgICAgICAgICAgIGNhbGwuc3RhcnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGNvbm5lY3RlZCB0aGUgd2lkZ2V0IGlzIHN0aWNreSBhbmQgd2UgZG8gbm90IHdhbnQgdG8gZGVzdHJveSB0aGUgY2FsbC5cbiAgICAgICAgICAgIGlmICghY2FsbC5jb25uZWN0ZWQpIGNhbGwuZGVzdHJveSgpO1xuICAgICAgICB9O1xuICAgIH0sIFtjYWxsXSk7XG4gICAgY29uc3QgZGlzY29ubmVjdEFsbE90aGVyQ2FsbHM6ICgpID0+IFByb21pc2U8dm9pZD4gPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIFRoZSBzdGlja3lQcm9taXNlIGhhcyB0byByZXNvbHZlIGJlZm9yZSB0aGUgd2lkZ2V0IGFjdHVhbGx5IGJlY29tZXMgc3RpY2t5LlxuICAgICAgICAvLyBXZSBvbmx5IGxldCB0aGUgd2lkZ2V0IGJlY29tZSBzdGlja3kgYWZ0ZXIgZGlzY29ubmVjdGluZyBhbGwgb3RoZXIgYWN0aXZlIGNhbGxzLlxuICAgICAgICBjb25zdCBjYWxscyA9IFsuLi5DYWxsU3RvcmUuaW5zdGFuY2UuY29ubmVjdGVkQ2FsbHNdLmZpbHRlcihcbiAgICAgICAgICAgIChjYWxsKSA9PiBTZGtDb250ZXh0Q2xhc3MuaW5zdGFuY2Uucm9vbVZpZXdTdG9yZS5nZXRSb29tSWQoKSAhPT0gY2FsbC5yb29tSWQsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNhbGxzLm1hcChhc3luYyAoY2FsbCkgPT4gYXdhaXQgY2FsbC5kaXNjb25uZWN0KCkpKTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9DYWxsVmlld1wiPlxuICAgICAgICAgICAgPEFwcFRpbGVcbiAgICAgICAgICAgICAgICBhcHA9e2NhbGwud2lkZ2V0fVxuICAgICAgICAgICAgICAgIHJvb209e3Jvb219XG4gICAgICAgICAgICAgICAgdXNlcklkPXtjbGkuY3JlZGVudGlhbHMudXNlcklkIX1cbiAgICAgICAgICAgICAgICBjcmVhdG9yVXNlcklkPXtjYWxsLndpZGdldC5jcmVhdG9yVXNlcklkfVxuICAgICAgICAgICAgICAgIHdhaXRGb3JJZnJhbWVMb2FkPXtjYWxsLndpZGdldC53YWl0Rm9ySWZyYW1lTG9hZH1cbiAgICAgICAgICAgICAgICBzaG93TWVudWJhcj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50cz17cmVzaXppbmcgPyBcIm5vbmVcIiA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICBzdGlja3lQcm9taXNlPXtkaXNjb25uZWN0QWxsT3RoZXJDYWxsc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5pbnRlcmZhY2UgQ2FsbFZpZXdQcm9wcyB7XG4gICAgcm9vbTogUm9vbTtcbiAgICByZXNpemluZzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlLCB0aGUgdmlldyB3aWxsIGJlIGJsYW5rIHVudGlsIGEgY2FsbCBhcHBlYXJzLiBPdGhlcndpc2UsIHRoZSBqb2luXG4gICAgICogYnV0dG9uIHdpbGwgY3JlYXRlIGEgY2FsbCBpZiB0aGVyZSBpc24ndCBhbHJlYWR5IG9uZS5cbiAgICAgKi9cbiAgICB3YWl0Rm9yQ2FsbDogYm9vbGVhbjtcbiAgICBza2lwTG9iYnk/OiBib29sZWFuO1xuICAgIHJvbGU/OiBBcmlhUm9sZTtcbn1cblxuZXhwb3J0IGNvbnN0IENhbGxWaWV3OiBGQzxDYWxsVmlld1Byb3BzPiA9ICh7IHJvb20sIHJlc2l6aW5nLCB3YWl0Rm9yQ2FsbCwgc2tpcExvYmJ5LCByb2xlIH0pID0+IHtcbiAgICBjb25zdCBjYWxsID0gdXNlQ2FsbChyb29tLnJvb21JZCk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY2FsbCA9PT0gbnVsbCAmJiAhd2FpdEZvckNhbGwpIHtcbiAgICAgICAgICAgIEVsZW1lbnRDYWxsLmNyZWF0ZShyb29tLCBza2lwTG9iYnkpO1xuICAgICAgICB9XG4gICAgfSwgW2NhbGwsIHJvb20sIHNraXBMb2JieSwgd2FpdEZvckNhbGxdKTtcbiAgICBpZiAoY2FsbCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gPEpvaW5DYWxsVmlldyByb29tPXtyb29tfSByZXNpemluZz17cmVzaXppbmd9IGNhbGw9e2NhbGx9IHNraXBMb2JieT17c2tpcExvYmJ5fSByb2xlPXtyb2xlfSAvPjtcbiAgICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsb0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUErRCxTQUFBUSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBVix3QkFBQVUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFdBQUFLLE9BQUEsRUFBQUwsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FB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