diff --git a/res/css/_components.scss b/res/css/_components.scss
index e856fa8589..da1af75ec3 100644
--- a/res/css/_components.scss
+++ b/res/css/_components.scss
@@ -217,7 +217,5 @@
@import "./views/terms/_InlineTermsAgreement.scss";
@import "./views/verification/_VerificationShowSas.scss";
@import "./views/voip/_CallContainer.scss";
-@import "./views/voip/_CallView.scss";
@import "./views/voip/_CallView2.scss";
-@import "./views/voip/_IncomingCallbox.scss";
@import "./views/voip/_VideoView.scss";
diff --git a/res/css/views/voip/_CallView.scss b/res/css/views/voip/_CallView.scss
deleted file mode 100644
index 4650f30c1d..0000000000
--- a/res/css/views/voip/_CallView.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-Copyright 2015, 2016 OpenMarket Ltd
-
-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.
-*/
-
-.mx_CallView_voice {
- background-color: $accent-color;
- color: $accent-fg-color;
- cursor: pointer;
- text-align: center;
- padding: 6px;
- font-weight: bold;
- font-size: $font-13px;
-}
diff --git a/res/css/views/voip/_IncomingCallbox.scss b/res/css/views/voip/_IncomingCallbox.scss
deleted file mode 100644
index ed33de470d..0000000000
--- a/res/css/views/voip/_IncomingCallbox.scss
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Copyright 2015, 2016 OpenMarket Ltd
-
-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.
-*/
-
-.mx_IncomingCallBox {
- text-align: center;
- border: 1px solid #a4a4a4;
- border-radius: 8px;
- background-color: $primary-bg-color;
- position: fixed;
- z-index: 1000;
- padding: 6px;
- margin-top: -3px;
- margin-left: -20px;
- width: 200px;
-}
-
-.mx_IncomingCallBox_chevron {
- padding: 12px;
- position: absolute;
- left: -21px;
- top: 0px;
-}
-
-.mx_IncomingCallBox_title {
- padding: 6px;
- font-weight: bold;
-}
-
-.mx_IncomingCallBox_buttons {
- display: flex;
-}
-
-.mx_IncomingCallBox_buttons_cell {
- vertical-align: middle;
- padding: 6px;
- flex: 1;
-}
-
-.mx_IncomingCallBox_buttons_decline,
-.mx_IncomingCallBox_buttons_accept {
- vertical-align: middle;
- width: 80px;
- height: 36px;
- line-height: $font-36px;
- border-radius: 36px;
- color: $accent-fg-color;
- margin: auto;
-}
-
-.mx_IncomingCallBox_buttons_decline {
- background-color: $voip-decline-color;
-}
-
-.mx_IncomingCallBox_buttons_accept {
- background-color: $voip-accept-color;
-}
diff --git a/src/components/views/voip/CallPreview.js b/src/components/views/voip/CallPreview.js
deleted file mode 100644
index c465170950..0000000000
--- a/src/components/views/voip/CallPreview.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-Copyright 2017, 2018 New Vector Ltd
-Copyright 2019 The Matrix.org Foundation C.I.C.
-
-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.
-*/
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import createReactClass from 'create-react-class';
-import RoomViewStore from '../../../stores/RoomViewStore';
-import CallHandler from '../../../CallHandler';
-import dis from '../../../dispatcher/dispatcher';
-import * as sdk from '../../../index';
-
-export default createReactClass({
- displayName: 'CallPreview',
-
- propTypes: {
- // A Conference Handler implementation
- // Must have a function signature:
- // getConferenceCallForRoom(roomId: string): MatrixCall
- ConferenceHandler: PropTypes.object,
- },
-
- getInitialState: function() {
- return {
- roomId: RoomViewStore.getRoomId(),
- activeCall: CallHandler.getAnyActiveCall(),
- };
- },
-
- componentDidMount: function() {
- this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate);
- this.dispatcherRef = dis.register(this._onAction);
- },
-
- componentWillUnmount: function() {
- if (this._roomStoreToken) {
- this._roomStoreToken.remove();
- }
- dis.unregister(this.dispatcherRef);
- },
-
- _onRoomViewStoreUpdate: function(payload) {
- if (RoomViewStore.getRoomId() === this.state.roomId) return;
- this.setState({
- roomId: RoomViewStore.getRoomId(),
- });
- },
-
- _onAction: function(payload) {
- switch (payload.action) {
- // listen for call state changes to prod the render method, which
- // may hide the global CallView if the call it is tracking is dead
- case 'call_state':
- this.setState({
- activeCall: CallHandler.getAnyActiveCall(),
- });
- break;
- }
- },
-
- _onCallViewClick: function() {
- const call = CallHandler.getAnyActiveCall();
- if (call) {
- dis.dispatch({
- action: 'view_room',
- room_id: call.groupRoomId || call.roomId,
- });
- }
- },
-
- render: function() {
- const callForRoom = CallHandler.getCallForRoom(this.state.roomId);
- const showCall = (this.state.activeCall && this.state.activeCall.call_state === 'connected' && !callForRoom);
-
- if (showCall) {
- const CallView = sdk.getComponent('voip.CallView');
- return (
-
- );
- }
- const PersistentApp = sdk.getComponent('elements.PersistentApp');
- return ;
- },
-});
-
diff --git a/src/components/views/voip/CallView.js b/src/components/views/voip/CallView.js
deleted file mode 100644
index a0a566dfac..0000000000
--- a/src/components/views/voip/CallView.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
-Copyright 2015, 2016 OpenMarket Ltd
-Copyright 2019 The Matrix.org Foundation C.I.C.
-
-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.
-*/
-import React, {createRef} from 'react';
-import PropTypes from 'prop-types';
-import createReactClass from 'create-react-class';
-import dis from '../../../dispatcher/dispatcher';
-import CallHandler from '../../../CallHandler';
-import * as sdk from '../../../index';
-import {MatrixClientPeg} from '../../../MatrixClientPeg';
-import { _t } from '../../../languageHandler';
-
-export default createReactClass({
- displayName: 'CallView',
-
- propTypes: {
- // js-sdk room object. If set, we will only show calls for the given
- // room; if not, we will show any active call.
- room: PropTypes.object,
-
- // A Conference Handler implementation
- // Must have a function signature:
- // getConferenceCallForRoom(roomId: string): MatrixCall
- ConferenceHandler: PropTypes.object,
-
- // maxHeight style attribute for the video panel
- maxVideoHeight: PropTypes.number,
-
- // a callback which is called when the user clicks on the video div
- onClick: PropTypes.func,
-
- // a callback which is called when the content in the callview changes
- // in a way that is likely to cause a resize.
- onResize: PropTypes.func,
-
- // render ongoing audio call details - useful when in LeftPanel
- showVoice: PropTypes.bool,
- },
-
- getInitialState: function() {
- return {
- // the call this view is displaying (if any)
- call: null,
- };
- },
-
- // TODO: [REACT-WARNING] Replace component with real class, use constructor for refs
- UNSAFE_componentWillMount: function() {
- this._video = createRef();
- },
-
- componentDidMount: function() {
- this.dispatcherRef = dis.register(this.onAction);
- this.showCall();
- },
-
- componentWillUnmount: function() {
- dis.unregister(this.dispatcherRef);
- },
-
- onAction: function(payload) {
- // don't filter out payloads for room IDs other than props.room because
- // we may be interested in the conf 1:1 room
- if (payload.action !== 'call_state') {
- return;
- }
- this.showCall();
- },
-
- showCall: function() {
- let call;
-
- if (this.props.room) {
- const roomId = this.props.room.roomId;
- call = CallHandler.getCallForRoom(roomId) ||
- (this.props.ConferenceHandler ?
- this.props.ConferenceHandler.getConferenceCallForRoom(roomId) :
- null
- );
-
- if (this.call) {
- this.setState({ call: call });
- }
- } else {
- call = CallHandler.getAnyActiveCall();
- // Ignore calls if we can't get the room associated with them.
- // I think the underlying problem is that the js-sdk sends events
- // for calls before it has made the rooms available in the store,
- // although this isn't confirmed.
- if (MatrixClientPeg.get().getRoom(call.roomId) === null) {
- call = null;
- }
- this.setState({ call: call });
- }
-
- if (call) {
- call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());
- call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());
- // always use a separate element for audio stream playback.
- // this is to let us move CallView around the DOM without interrupting remote audio
- // during playback, by having the audio rendered by a top-level element.
- // rather than being rendered by the main remoteVideo element.
- call.setRemoteAudioElement(this.getVideoView().getRemoteAudioElement());
- }
- if (call && call.type === "video" && call.call_state !== "ended" && call.call_state !== "ringing") {
- // if this call is a conf call, don't display local video as the
- // conference will have us in it
- this.getVideoView().getLocalVideoElement().style.display = (
- call.confUserId ? "none" : "block"
- );
- this.getVideoView().getRemoteVideoElement().style.display = "block";
- } else {
- this.getVideoView().getLocalVideoElement().style.display = "none";
- this.getVideoView().getRemoteVideoElement().style.display = "none";
- dis.dispatch({action: 'video_fullscreen', fullscreen: false});
- }
-
- if (this.props.onResize) {
- this.props.onResize();
- }
- },
-
- getVideoView: function() {
- return this._video.current;
- },
-
- render: function() {
- const VideoView = sdk.getComponent('voip.VideoView');
- const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
-
- let voice;
- if (this.state.call && this.state.call.type === "voice" && this.props.showVoice) {
- const callRoom = MatrixClientPeg.get().getRoom(this.state.call.roomId);
- voice = (
-
- { _t("Active call (%(roomName)s)", {roomName: callRoom.name}) }
-
- );
- }
-
- return (
-
-
- { voice }
-
- );
- },
-});
-
diff --git a/src/components/views/voip/IncomingCallBox.js b/src/components/views/voip/IncomingCallBox.js
deleted file mode 100644
index bf28fa0157..0000000000
--- a/src/components/views/voip/IncomingCallBox.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-Copyright 2015, 2016 OpenMarket Ltd
-Copyright 2018 New Vector Ltd
-Copyright 2019 The Matrix.org Foundation C.I.C.
-
-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.
-*/
-import React from 'react';
-import PropTypes from 'prop-types';
-import createReactClass from 'create-react-class';
-import {MatrixClientPeg} from '../../../MatrixClientPeg';
-import dis from '../../../dispatcher/dispatcher';
-import { _t } from '../../../languageHandler';
-import * as sdk from '../../../index';
-
-export default createReactClass({
- displayName: 'IncomingCallBox',
-
- propTypes: {
- incomingCall: PropTypes.object,
- },
-
- onAnswerClick: function(e) {
- e.stopPropagation();
- dis.dispatch({
- action: 'answer',
- room_id: this.props.incomingCall.roomId,
- });
- },
-
- onRejectClick: function(e) {
- e.stopPropagation();
- dis.dispatch({
- action: 'hangup',
- room_id: this.props.incomingCall.roomId,
- });
- },
-
- render: function() {
- let room = null;
- if (this.props.incomingCall) {
- room = MatrixClientPeg.get().getRoom(this.props.incomingCall.roomId);
- }
-
- const caller = room ? room.name : _t("unknown caller");
-
- let incomingCallText = null;
- if (this.props.incomingCall) {
- if (this.props.incomingCall.type === "voice") {
- incomingCallText = _t("Incoming voice call from %(name)s", {name: caller});
- } else if (this.props.incomingCall.type === "video") {
- incomingCallText = _t("Incoming video call from %(name)s", {name: caller});
- } else {
- incomingCallText = _t("Incoming call from %(name)s", {name: caller});
- }
- }
-
- const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
- return (
-