mirror of
				https://github.com/vector-im/element-web.git
				synced 2025-11-04 02:02:14 +01:00 
			
		
		
		
	Merge remote-tracking branch 'origin/develop' into release-v0.13.0
This commit is contained in:
		
						commit
						c35dec93e5
					
				@ -61,7 +61,6 @@ import Matrix from 'matrix-js-sdk';
 | 
				
			|||||||
import dis from './dispatcher';
 | 
					import dis from './dispatcher';
 | 
				
			||||||
import SdkConfig from './SdkConfig';
 | 
					import SdkConfig from './SdkConfig';
 | 
				
			||||||
import { showUnknownDeviceDialogForCalls } from './cryptodevices';
 | 
					import { showUnknownDeviceDialogForCalls } from './cryptodevices';
 | 
				
			||||||
import SettingsStore from "./settings/SettingsStore";
 | 
					 | 
				
			||||||
import WidgetUtils from './utils/WidgetUtils';
 | 
					import WidgetUtils from './utils/WidgetUtils';
 | 
				
			||||||
import WidgetEchoStore from './stores/WidgetEchoStore';
 | 
					import WidgetEchoStore from './stores/WidgetEchoStore';
 | 
				
			||||||
import ScalarAuthClient from './ScalarAuthClient';
 | 
					import ScalarAuthClient from './ScalarAuthClient';
 | 
				
			||||||
@ -301,67 +300,7 @@ function _onAction(payload) {
 | 
				
			|||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 'place_conference_call':
 | 
					        case 'place_conference_call':
 | 
				
			||||||
            console.log("Place conference call in %s", payload.room_id);
 | 
					            console.log("Place conference call in %s", payload.room_id);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (SettingsStore.isFeatureEnabled('feature_jitsi')) {
 | 
					 | 
				
			||||||
            _startCallApp(payload.room_id, payload.type);
 | 
					            _startCallApp(payload.room_id, payload.type);
 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                if (MatrixClientPeg.get().isRoomEncrypted(payload.room_id)) {
 | 
					 | 
				
			||||||
                    // Conference calls are implemented by sending the media to central
 | 
					 | 
				
			||||||
                    // server which combines the audio from all the participants together
 | 
					 | 
				
			||||||
                    // into a single stream. This is incompatible with end-to-end encryption
 | 
					 | 
				
			||||||
                    // because a central server would be decrypting the audio for each
 | 
					 | 
				
			||||||
                    // participant.
 | 
					 | 
				
			||||||
                    // Therefore we disable conference calling in E2E rooms.
 | 
					 | 
				
			||||||
                    const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
 | 
					 | 
				
			||||||
                    Modal.createTrackedDialog('Call Handler', 'Conference calls unsupported e2e', ErrorDialog, {
 | 
					 | 
				
			||||||
                        description: _t('Conference calls are not supported in encrypted rooms'),
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                    return;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (!ConferenceHandler) {
 | 
					 | 
				
			||||||
                    const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
 | 
					 | 
				
			||||||
                    Modal.createTrackedDialog('Call Handler', 'Conference call unsupported client', ErrorDialog, {
 | 
					 | 
				
			||||||
                        description: _t('Conference calls are not supported in this client'),
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                } else if (!MatrixClientPeg.get().supportsVoip()) {
 | 
					 | 
				
			||||||
                    const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
 | 
					 | 
				
			||||||
                    Modal.createTrackedDialog('Call Handler', 'VoIP is unsupported', ErrorDialog, {
 | 
					 | 
				
			||||||
                        title: _t('VoIP is unsupported'),
 | 
					 | 
				
			||||||
                        description: _t('You cannot place VoIP calls in this browser.'),
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
 | 
					 | 
				
			||||||
                    Modal.createTrackedDialog('Call Handler', 'Conference calling in development', QuestionDialog, {
 | 
					 | 
				
			||||||
                        title: _t('Warning!'),
 | 
					 | 
				
			||||||
                        description: _t('Conference calling is in development and may not be reliable.'),
 | 
					 | 
				
			||||||
                        onFinished: (confirm)=>{
 | 
					 | 
				
			||||||
                            if (confirm) {
 | 
					 | 
				
			||||||
                                ConferenceHandler.createNewMatrixCall(
 | 
					 | 
				
			||||||
                                    MatrixClientPeg.get(), payload.room_id,
 | 
					 | 
				
			||||||
                                ).done(function(call) {
 | 
					 | 
				
			||||||
                                    placeCall(call);
 | 
					 | 
				
			||||||
                                }, function(err) {
 | 
					 | 
				
			||||||
                                    const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
 | 
					 | 
				
			||||||
                                    console.error("Conference call failed: " + err);
 | 
					 | 
				
			||||||
                                    Modal.createTrackedDialog(
 | 
					 | 
				
			||||||
                                        'Call Handler',
 | 
					 | 
				
			||||||
                                        'Failed to set up conference call',
 | 
					 | 
				
			||||||
                                        ErrorDialog,
 | 
					 | 
				
			||||||
                                        {
 | 
					 | 
				
			||||||
                                            title: _t('Failed to set up conference call'),
 | 
					 | 
				
			||||||
                                            description: (
 | 
					 | 
				
			||||||
                                                _t('Conference call failed.') +
 | 
					 | 
				
			||||||
                                                ' ' + ((err && err.message) ? err.message : '')
 | 
					 | 
				
			||||||
                                            ),
 | 
					 | 
				
			||||||
                                        },
 | 
					 | 
				
			||||||
                                    );
 | 
					 | 
				
			||||||
                                });
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case 'incoming_call':
 | 
					        case 'incoming_call':
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -543,6 +482,24 @@ const callHandler = {
 | 
				
			|||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The conference handler is a module that deals with implementation-specific
 | 
				
			||||||
 | 
					     * multi-party calling implementations. Riot passes in its own which creates
 | 
				
			||||||
 | 
					     * a one-to-one call with a freeswitch conference bridge. As of July 2018,
 | 
				
			||||||
 | 
					     * the de-facto way of conference calling is a Jitsi widget, so this is
 | 
				
			||||||
 | 
					     * deprecated. It reamins here for two reasons:
 | 
				
			||||||
 | 
					     *  1. So Riot still supports joining existing freeswitch conference calls
 | 
				
			||||||
 | 
					     *     (but doesn't support creating them). After a transition period, we can
 | 
				
			||||||
 | 
					     *     remove support for joining them too.
 | 
				
			||||||
 | 
					     *  2. To hide the one-to-one rooms that old-style conferencing creates. This
 | 
				
			||||||
 | 
					     *     is much harder to remove: probably either we make Riot leave & forget these
 | 
				
			||||||
 | 
					     *     rooms after we remove support for joining freeswitch conferences, or we
 | 
				
			||||||
 | 
					     *     accept that random rooms with cryptic users will suddently appear for
 | 
				
			||||||
 | 
					     *     anyone who's ever used conference calling, or we are stuck with this
 | 
				
			||||||
 | 
					     *     code forever.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param {object} confHandler The conference handler object
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    setConferenceHandler: function(confHandler) {
 | 
					    setConferenceHandler: function(confHandler) {
 | 
				
			||||||
        ConferenceHandler = confHandler;
 | 
					        ConferenceHandler = confHandler;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
				
			|||||||
@ -83,12 +83,6 @@ export const SETTINGS = {
 | 
				
			|||||||
        supportedLevels: LEVELS_FEATURE,
 | 
					        supportedLevels: LEVELS_FEATURE,
 | 
				
			||||||
        default: false,
 | 
					        default: false,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "feature_jitsi": {
 | 
					 | 
				
			||||||
        isFeature: true,
 | 
					 | 
				
			||||||
        displayName: _td("Jitsi Conference Calling"),
 | 
					 | 
				
			||||||
        supportedLevels: LEVELS_FEATURE,
 | 
					 | 
				
			||||||
        default: false,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "MessageComposerInput.dontSuggestEmoji": {
 | 
					    "MessageComposerInput.dontSuggestEmoji": {
 | 
				
			||||||
        supportedLevels: LEVELS_ACCOUNT_SETTINGS,
 | 
					        supportedLevels: LEVELS_ACCOUNT_SETTINGS,
 | 
				
			||||||
        displayName: _td('Disable Emoji suggestions while typing'),
 | 
					        displayName: _td('Disable Emoji suggestions while typing'),
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user