Reduce video rooms log spam (#8913)
* Reduce video rooms log spam If you forget to call preventDefault in widget action handlers, matrix-widget-api logs a bunch of errors complaining that the action is unsupported/unhandled, even if it isn't. * Fix tests
This commit is contained in:
parent
2bbd542140
commit
3c14d93237
3 changed files with 15 additions and 5 deletions
|
@ -202,6 +202,7 @@ export default class VideoChannelStore extends AsyncStoreWithClient<null> {
|
||||||
messaging,
|
messaging,
|
||||||
`action:${ElementWidgetActions.JoinCall}`,
|
`action:${ElementWidgetActions.JoinCall}`,
|
||||||
(ev: CustomEvent<IWidgetApiRequest>) => {
|
(ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
ev.preventDefault();
|
||||||
this.ack(ev);
|
this.ack(ev);
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
@ -290,42 +291,49 @@ export default class VideoChannelStore extends AsyncStoreWithClient<null> {
|
||||||
await removeOurDevice(room);
|
await removeOurDevice(room);
|
||||||
};
|
};
|
||||||
|
|
||||||
private ack = (ev: CustomEvent<IWidgetApiRequest>) => {
|
private ack = (ev: CustomEvent<IWidgetApiRequest>, messaging = this.activeChannel) => {
|
||||||
// Even if we don't have a reply to a given widget action, we still need
|
// Even if we don't have a reply to a given widget action, we still need
|
||||||
// to give the widget API something to acknowledge receipt
|
// to give the widget API something to acknowledge receipt
|
||||||
this.activeChannel.transport.reply(ev.detail, {});
|
messaging.transport.reply(ev.detail, {});
|
||||||
};
|
};
|
||||||
|
|
||||||
private onHangup = async (ev: CustomEvent<IWidgetApiRequest>) => {
|
private onHangup = async (ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
this.ack(ev);
|
ev.preventDefault();
|
||||||
|
const messaging = this.activeChannel;
|
||||||
// In case this hangup is caused by Jitsi Meet crashing at startup,
|
// In case this hangup is caused by Jitsi Meet crashing at startup,
|
||||||
// wait for the connection event in order to avoid racing
|
// wait for the connection event in order to avoid racing
|
||||||
if (!this.connected) await waitForEvent(this, VideoChannelEvent.Connect);
|
if (!this.connected) await waitForEvent(this, VideoChannelEvent.Connect);
|
||||||
await this.setDisconnected();
|
await this.setDisconnected();
|
||||||
|
this.ack(ev, messaging);
|
||||||
};
|
};
|
||||||
|
|
||||||
private onParticipants = (ev: CustomEvent<IWidgetApiRequest>) => {
|
private onParticipants = (ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
ev.preventDefault();
|
||||||
this.participants = ev.detail.data.participants as IJitsiParticipant[];
|
this.participants = ev.detail.data.participants as IJitsiParticipant[];
|
||||||
this.emit(VideoChannelEvent.Participants, this.roomId, ev.detail.data.participants);
|
this.emit(VideoChannelEvent.Participants, this.roomId, ev.detail.data.participants);
|
||||||
this.ack(ev);
|
this.ack(ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
private onMuteAudio = (ev: CustomEvent<IWidgetApiRequest>) => {
|
private onMuteAudio = (ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
ev.preventDefault();
|
||||||
this.audioMuted = true;
|
this.audioMuted = true;
|
||||||
this.ack(ev);
|
this.ack(ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
private onUnmuteAudio = (ev: CustomEvent<IWidgetApiRequest>) => {
|
private onUnmuteAudio = (ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
ev.preventDefault();
|
||||||
this.audioMuted = false;
|
this.audioMuted = false;
|
||||||
this.ack(ev);
|
this.ack(ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
private onMuteVideo = (ev: CustomEvent<IWidgetApiRequest>) => {
|
private onMuteVideo = (ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
ev.preventDefault();
|
||||||
this.videoMuted = true;
|
this.videoMuted = true;
|
||||||
this.ack(ev);
|
this.ack(ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
private onUnmuteVideo = (ev: CustomEvent<IWidgetApiRequest>) => {
|
private onUnmuteVideo = (ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
ev.preventDefault();
|
||||||
this.videoMuted = false;
|
this.videoMuted = false;
|
||||||
this.ack(ev);
|
this.ack(ev);
|
||||||
};
|
};
|
||||||
|
|
|
@ -374,6 +374,7 @@ export class StopGapWidget extends EventEmitter {
|
||||||
if (WidgetType.JITSI.matches(this.mockWidget.type)) {
|
if (WidgetType.JITSI.matches(this.mockWidget.type)) {
|
||||||
this.messaging.on(`action:${ElementWidgetActions.HangupCall}`,
|
this.messaging.on(`action:${ElementWidgetActions.HangupCall}`,
|
||||||
(ev: CustomEvent<IHangupCallApiRequest>) => {
|
(ev: CustomEvent<IHangupCallApiRequest>) => {
|
||||||
|
ev.preventDefault();
|
||||||
if (ev.detail.data?.errorMessage) {
|
if (ev.detail.data?.errorMessage) {
|
||||||
Modal.createDialog(ErrorDialog, {
|
Modal.createDialog(ErrorDialog, {
|
||||||
title: _t("Connection lost"),
|
title: _t("Connection lost"),
|
||||||
|
@ -382,6 +383,7 @@ export class StopGapWidget extends EventEmitter {
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
this.messaging.transport.reply(ev.detail, <IWidgetApiRequestEmptyData>{});
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ describe("VideoChannelStore", () => {
|
||||||
const waitForConnect = new Promise<void>(resolve =>
|
const waitForConnect = new Promise<void>(resolve =>
|
||||||
store.once(VideoChannelEvent.Connect, resolve),
|
store.once(VideoChannelEvent.Connect, resolve),
|
||||||
);
|
);
|
||||||
join({ detail: {} } as unknown as CustomEvent<IWidgetApiRequest>);
|
join(new CustomEvent("widgetapirequest", { detail: {} }) as CustomEvent<IWidgetApiRequest>);
|
||||||
await waitForConnect;
|
await waitForConnect;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ describe("VideoChannelStore", () => {
|
||||||
const waitForHangup = new Promise<void>(resolve =>
|
const waitForHangup = new Promise<void>(resolve =>
|
||||||
store.once(VideoChannelEvent.Disconnect, resolve),
|
store.once(VideoChannelEvent.Disconnect, resolve),
|
||||||
);
|
);
|
||||||
hangup({ detail: {} } as unknown as CustomEvent<IWidgetApiRequest>);
|
hangup(new CustomEvent("widgetapirequest", { detail: {} }) as CustomEvent<IWidgetApiRequest>);
|
||||||
await waitForHangup;
|
await waitForHangup;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue