diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-11-17 23:25:29 +0100 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-11-17 23:25:29 +0100 |
commit | 953ddd82e48dd206cef5ac94456549aed13b3ad5 (patch) | |
tree | 8f003106ee2e7f422e5a22d2ee04d0db302e66c0 /includes/external/matrix/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js | |
parent | 62a9199846b0c07c03218703b33e8385764f42d9 (diff) | |
download | pluralconnect-953ddd82e48dd206cef5ac94456549aed13b3ad5.tar.gz pluralconnect-953ddd82e48dd206cef5ac94456549aed13b3ad5.tar.bz2 pluralconnect-953ddd82e48dd206cef5ac94456549aed13b3ad5.zip |
Updated 30 files and deleted 2976 files (automated)
Diffstat (limited to 'includes/external/matrix/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js')
-rw-r--r-- | includes/external/matrix/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/includes/external/matrix/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js b/includes/external/matrix/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js deleted file mode 100644 index c043b40..0000000 --- a/includes/external/matrix/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js +++ /dev/null @@ -1,184 +0,0 @@ -"use strict"; - -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.GroupCallEventHandlerEvent = exports.GroupCallEventHandler = void 0; -var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); -var _client = require("../client"); -var _groupCall = require("./groupCall"); -var _roomState = require("../models/room-state"); -var _logger = require("../logger"); -var _event = require("../@types/event"); -var _sync = require("../sync"); -/* -Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -let GroupCallEventHandlerEvent; -exports.GroupCallEventHandlerEvent = GroupCallEventHandlerEvent; -(function (GroupCallEventHandlerEvent) { - GroupCallEventHandlerEvent["Incoming"] = "GroupCall.incoming"; - GroupCallEventHandlerEvent["Outgoing"] = "GroupCall.outgoing"; - GroupCallEventHandlerEvent["Ended"] = "GroupCall.ended"; - GroupCallEventHandlerEvent["Participants"] = "GroupCall.participants"; -})(GroupCallEventHandlerEvent || (exports.GroupCallEventHandlerEvent = GroupCallEventHandlerEvent = {})); -class GroupCallEventHandler { - // roomId -> GroupCall - - // All rooms we know about and whether we've seen a 'Room' event - // for them. The promise will be fulfilled once we've processed that - // event which means we're "up to date" on what calls are in a room - // and get - - constructor(client) { - this.client = client; - (0, _defineProperty2.default)(this, "groupCalls", new Map()); - (0, _defineProperty2.default)(this, "roomDeferreds", new Map()); - (0, _defineProperty2.default)(this, "onRoomsChanged", room => { - this.createGroupCallForRoom(room); - }); - (0, _defineProperty2.default)(this, "onRoomStateChanged", (event, state) => { - const eventType = event.getType(); - if (eventType === _event.EventType.GroupCallPrefix) { - const groupCallId = event.getStateKey(); - const content = event.getContent(); - const currentGroupCall = this.groupCalls.get(state.roomId); - if (!currentGroupCall && !content["m.terminated"] && !event.isRedacted()) { - this.createGroupCallFromRoomStateEvent(event); - } else if (currentGroupCall && currentGroupCall.groupCallId === groupCallId) { - if (content["m.terminated"] || event.isRedacted()) { - currentGroupCall.terminate(false); - } else if (content["m.type"] !== currentGroupCall.type) { - // TODO: Handle the callType changing when the room state changes - _logger.logger.warn(`GroupCallEventHandler onRoomStateChanged() currently does not support changing type (roomId=${state.roomId})`); - } - } else if (currentGroupCall && currentGroupCall.groupCallId !== groupCallId) { - // TODO: Handle new group calls and multiple group calls - _logger.logger.warn(`GroupCallEventHandler onRoomStateChanged() currently does not support multiple calls (roomId=${state.roomId})`); - } - } - }); - } - async start() { - // We wait until the client has started syncing for real. - // This is because we only support one call at a time, and want - // the latest. We therefore want the latest state of the room before - // we create a group call for the room so we can be fairly sure that - // the group call we create is really the latest one. - if (this.client.getSyncState() !== _sync.SyncState.Syncing) { - _logger.logger.debug("GroupCallEventHandler start() waiting for client to start syncing"); - await new Promise(resolve => { - const onSync = () => { - if (this.client.getSyncState() === _sync.SyncState.Syncing) { - this.client.off(_client.ClientEvent.Sync, onSync); - return resolve(); - } - }; - this.client.on(_client.ClientEvent.Sync, onSync); - }); - } - const rooms = this.client.getRooms(); - for (const room of rooms) { - this.createGroupCallForRoom(room); - } - this.client.on(_client.ClientEvent.Room, this.onRoomsChanged); - this.client.on(_roomState.RoomStateEvent.Events, this.onRoomStateChanged); - } - stop() { - this.client.removeListener(_roomState.RoomStateEvent.Events, this.onRoomStateChanged); - } - getRoomDeferred(roomId) { - let deferred = this.roomDeferreds.get(roomId); - if (deferred === undefined) { - let resolveFunc; - deferred = { - prom: new Promise(resolve => { - resolveFunc = resolve; - }) - }; - deferred.resolve = resolveFunc; - this.roomDeferreds.set(roomId, deferred); - } - return deferred; - } - waitUntilRoomReadyForGroupCalls(roomId) { - return this.getRoomDeferred(roomId).prom; - } - getGroupCallById(groupCallId) { - return [...this.groupCalls.values()].find(groupCall => groupCall.groupCallId === groupCallId); - } - createGroupCallForRoom(room) { - const callEvents = room.currentState.getStateEvents(_event.EventType.GroupCallPrefix); - const sortedCallEvents = callEvents.sort((a, b) => b.getTs() - a.getTs()); - for (const callEvent of sortedCallEvents) { - const content = callEvent.getContent(); - if (content["m.terminated"] || callEvent.isRedacted()) { - continue; - } - _logger.logger.debug(`GroupCallEventHandler createGroupCallForRoom() choosing group call from possible calls (stateKey=${callEvent.getStateKey()}, ts=${callEvent.getTs()}, roomId=${room.roomId}, numOfPossibleCalls=${callEvents.length})`); - this.createGroupCallFromRoomStateEvent(callEvent); - break; - } - _logger.logger.info(`GroupCallEventHandler createGroupCallForRoom() processed room (roomId=${room.roomId})`); - this.getRoomDeferred(room.roomId).resolve(); - } - createGroupCallFromRoomStateEvent(event) { - const roomId = event.getRoomId(); - const content = event.getContent(); - const room = this.client.getRoom(roomId); - if (!room) { - _logger.logger.warn(`GroupCallEventHandler createGroupCallFromRoomStateEvent() couldn't find room for call (roomId=${roomId})`); - return; - } - const groupCallId = event.getStateKey(); - const callType = content["m.type"]; - if (!Object.values(_groupCall.GroupCallType).includes(callType)) { - _logger.logger.warn(`GroupCallEventHandler createGroupCallFromRoomStateEvent() received invalid call type (type=${callType}, roomId=${roomId})`); - return; - } - const callIntent = content["m.intent"]; - if (!Object.values(_groupCall.GroupCallIntent).includes(callIntent)) { - _logger.logger.warn(`Received invalid group call intent (type=${callType}, roomId=${roomId})`); - return; - } - const isPtt = Boolean(content["io.element.ptt"]); - let dataChannelOptions; - if (content !== null && content !== void 0 && content.dataChannelsEnabled && content !== null && content !== void 0 && content.dataChannelOptions) { - // Pull out just the dataChannelOptions we want to support. - const { - ordered, - maxPacketLifeTime, - maxRetransmits, - protocol - } = content.dataChannelOptions; - dataChannelOptions = { - ordered, - maxPacketLifeTime, - maxRetransmits, - protocol - }; - } - const groupCall = new _groupCall.GroupCall(this.client, room, callType, isPtt, callIntent, groupCallId, - // Because without Media section a WebRTC connection is not possible, so need a RTCDataChannel to set up a - // no media WebRTC connection anyway. - (content === null || content === void 0 ? void 0 : content.dataChannelsEnabled) || this.client.isVoipWithNoMediaAllowed, dataChannelOptions, this.client.isVoipWithNoMediaAllowed); - this.groupCalls.set(room.roomId, groupCall); - this.client.emit(GroupCallEventHandlerEvent.Incoming, groupCall); - return groupCall; - } -} -exports.GroupCallEventHandler = GroupCallEventHandler; -//# sourceMappingURL=groupCallEventHandler.js.map
\ No newline at end of file |