* test: Add a failing test reproducing the multi messaging leak bug * fix: Missing widgetApi stop causing leaks
54 lines
1.5 KiB
HTML
54 lines
1.5 KiB
HTML
<!doctype html>
|
|
<style>
|
|
body {
|
|
background: rgb(139, 192, 253);
|
|
}
|
|
</style>
|
|
|
|
<!-- element-call.spec.ts will insert the widget API in this block -->
|
|
<script>
|
|
widgetCodeHere;
|
|
</script>
|
|
|
|
<div>
|
|
<p>Fake Element Call</p>
|
|
<p>State: <span id="state">Loading</span></p>
|
|
<button id="send-button">Send Room Message</button>
|
|
</div>
|
|
|
|
<!-- Minimal fake implementation of Element Call. Just enough for testing the leagkin widgets.-->
|
|
<script>
|
|
const stateIndicator = document.querySelector("#state");
|
|
const { WidgetApi, WidgetApiToWidgetAction, MatrixCapabilities } = mxwidgets();
|
|
const widgetId = new URLSearchParams(window.location.search).get("widgetId");
|
|
const params = new URLSearchParams(window.location.hash.slice(1));
|
|
|
|
const roomId = params.get("roomId");
|
|
const api = new WidgetApi(widgetId, "*");
|
|
|
|
document.querySelector("#send-button").onclick = async () => {
|
|
await api.sendRoomEvent(
|
|
"m.room.message",
|
|
{ msgtype: "m.text", body: "I sent this once!!" },
|
|
roomId,
|
|
undefined,
|
|
undefined,
|
|
undefined,
|
|
);
|
|
};
|
|
|
|
api.requestCapability(MatrixCapabilities.AlwaysOnScreen);
|
|
api.requestCapability(`org.matrix.msc2762.timeline:${roomId}`);
|
|
api.requestCapabilityToSendMessage("m.text");
|
|
|
|
api.on("ready", (ev) => {
|
|
stateIndicator.innerHTML = "Ready";
|
|
});
|
|
|
|
// Start the messaging
|
|
api.start();
|
|
|
|
// If waitForIframeLoad is false, tell the client that we're good to go
|
|
api.sendContentLoaded();
|
|
</script>
|