mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-17 14:05:04 +08:00
Fix the hangup button and other custom actions
This commit is contained in:
parent
9b984a35e0
commit
b46f58274e
@ -76,6 +76,8 @@ import QuestionDialog from "./components/views/dialogs/QuestionDialog";
|
|||||||
import ErrorDialog from "./components/views/dialogs/ErrorDialog";
|
import ErrorDialog from "./components/views/dialogs/ErrorDialog";
|
||||||
import WidgetStore from "./stores/WidgetStore";
|
import WidgetStore from "./stores/WidgetStore";
|
||||||
import ActiveWidgetStore from "./stores/ActiveWidgetStore";
|
import ActiveWidgetStore from "./stores/ActiveWidgetStore";
|
||||||
|
import { WidgetMessagingStore } from "./stores/widgets/WidgetMessagingStore";
|
||||||
|
import { ElementWidgetActions } from "./stores/widgets/ElementWidgetActions";
|
||||||
|
|
||||||
// until we ts-ify the js-sdk voip code
|
// until we ts-ify the js-sdk voip code
|
||||||
type Call = any;
|
type Call = any;
|
||||||
@ -495,13 +497,12 @@ export default class CallHandler {
|
|||||||
const roomInfo = WidgetStore.instance.getRoom(roomId);
|
const roomInfo = WidgetStore.instance.getRoom(roomId);
|
||||||
if (!roomInfo) return; // "should never happen" clauses go here
|
if (!roomInfo) return; // "should never happen" clauses go here
|
||||||
|
|
||||||
// TODO: [TravisR] Fix this
|
|
||||||
const jitsiWidgets = roomInfo.widgets.filter(w => WidgetType.JITSI.matches(w.type));
|
const jitsiWidgets = roomInfo.widgets.filter(w => WidgetType.JITSI.matches(w.type));
|
||||||
jitsiWidgets.forEach(w => {
|
jitsiWidgets.forEach(w => {
|
||||||
const messaging = ActiveWidgetStore.getWidgetMessaging(w.id);
|
const messaging = WidgetMessagingStore.instance.getMessagingForId(w.id);
|
||||||
if (!messaging) return; // more "should never happen" words
|
if (!messaging) return; // more "should never happen" words
|
||||||
|
|
||||||
messaging.hangup();
|
messaging.transport.send(ElementWidgetActions.HangupCall, {});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,7 @@ import {SettingLevel} from "../../../settings/SettingLevel";
|
|||||||
import WidgetStore from "../../../stores/WidgetStore";
|
import WidgetStore from "../../../stores/WidgetStore";
|
||||||
import {Action} from "../../../dispatcher/actions";
|
import {Action} from "../../../dispatcher/actions";
|
||||||
import {StopGapWidget} from "../../../stores/widgets/StopGapWidget";
|
import {StopGapWidget} from "../../../stores/widgets/StopGapWidget";
|
||||||
|
import {ElementWidgetActions} from "../../../stores/widgets/ElementWidgetActions";
|
||||||
|
|
||||||
export default class AppTile extends React.Component {
|
export default class AppTile extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -296,7 +297,7 @@ export default class AppTile extends React.Component {
|
|||||||
_onWidgetReady = () => {
|
_onWidgetReady = () => {
|
||||||
this.setState({loading: false});
|
this.setState({loading: false});
|
||||||
if (WidgetType.JITSI.matches(this.props.app.type)) {
|
if (WidgetType.JITSI.matches(this.props.app.type)) {
|
||||||
this._sgWidget.widgetApi.transport.send("im.vector.ready", {});
|
this._sgWidget.widgetApi.transport.send(ElementWidgetActions.ClientReady, {});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -213,7 +213,6 @@ export default class Stickerpicker extends React.Component {
|
|||||||
|
|
||||||
_sendVisibilityToWidget(visible) {
|
_sendVisibilityToWidget(visible) {
|
||||||
if (!this.state.stickerpickerWidget) return;
|
if (!this.state.stickerpickerWidget) return;
|
||||||
// TODO: [TravisR] Fix this
|
|
||||||
const messaging = WidgetMessagingStore.instance.getMessagingForId(this.state.stickerpickerWidget.id);
|
const messaging = WidgetMessagingStore.instance.getMessagingForId(this.state.stickerpickerWidget.id);
|
||||||
if (messaging && visible !== this._prevSentVisibility) {
|
if (messaging && visible !== this._prevSentVisibility) {
|
||||||
messaging.updateVisibility(visible).catch(err => {
|
messaging.updateVisibility(visible).catch(err => {
|
||||||
|
21
src/stores/widgets/ElementWidgetActions.ts
Normal file
21
src/stores/widgets/ElementWidgetActions.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2020 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export enum ElementWidgetActions {
|
||||||
|
ClientReady = "im.vector.ready",
|
||||||
|
HangupCall = "im.vector.hangup",
|
||||||
|
OpenIntegrationManager = "integration_manager_open",
|
||||||
|
}
|
@ -38,6 +38,7 @@ import ActiveWidgetStore from "../ActiveWidgetStore";
|
|||||||
import { objectShallowClone } from "../../utils/objects";
|
import { objectShallowClone } from "../../utils/objects";
|
||||||
import defaultDispatcher from "../../dispatcher/dispatcher";
|
import defaultDispatcher from "../../dispatcher/dispatcher";
|
||||||
import dis from "../../dispatcher/dispatcher";
|
import dis from "../../dispatcher/dispatcher";
|
||||||
|
import { ElementWidgetActions } from "./ElementWidgetActions";
|
||||||
|
|
||||||
// TODO: Destroy all of this code
|
// TODO: Destroy all of this code
|
||||||
|
|
||||||
@ -178,7 +179,7 @@ export class StopGapWidget extends EventEmitter {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
} else if (WidgetType.STICKERPICKER.matches(this.mockWidget.type)) {
|
} else if (WidgetType.STICKERPICKER.matches(this.mockWidget.type)) {
|
||||||
this.messaging.addEventListener("action:integration_manager_open",
|
this.messaging.addEventListener(`action:${ElementWidgetActions.OpenIntegrationManager}`,
|
||||||
(ev: CustomEvent<IWidgetApiRequest>) => {
|
(ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
// Acknowledge first
|
// Acknowledge first
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
Loading…
Reference in New Issue
Block a user