mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-04-25 14:22:32 +03:00
98 lines
2.9 KiB
JavaScript
98 lines
2.9 KiB
JavaScript
"use strict";
|
|
console.log("Loading browser sdk");
|
|
var BASE_URL = "https://matrix.org";
|
|
var TOKEN = "accesstokengoeshere";
|
|
var USER_ID = "@username:localhost";
|
|
var ROOM_ID = "!room:id";
|
|
|
|
|
|
var client = matrixcs.createClient({
|
|
baseUrl: BASE_URL,
|
|
accessToken: TOKEN,
|
|
userId: USER_ID
|
|
});
|
|
var call;
|
|
|
|
function disableButtons(place, answer, hangup) {
|
|
document.getElementById("hangup").disabled = hangup;
|
|
document.getElementById("answer").disabled = answer;
|
|
document.getElementById("call").disabled = place;
|
|
}
|
|
|
|
function addListeners(call) {
|
|
var lastError = "";
|
|
call.on("hangup", function() {
|
|
disableButtons(false, true, true);
|
|
document.getElementById("result").innerHTML = (
|
|
"<p>Call ended. Last error: "+lastError+"</p>"
|
|
);
|
|
});
|
|
call.on("error", function(err) {
|
|
lastError = err.message;
|
|
call.hangup();
|
|
disableButtons(false, true, true);
|
|
});
|
|
}
|
|
|
|
window.onload = function() {
|
|
document.getElementById("result").innerHTML = "<p>Please wait. Syncing...</p>";
|
|
document.getElementById("config").innerHTML = "<p>" +
|
|
"Homeserver: <code>"+BASE_URL+"</code><br/>"+
|
|
"Room: <code>"+ROOM_ID+"</code><br/>"+
|
|
"User: <code>"+USER_ID+"</code><br/>"+
|
|
"</p>";
|
|
disableButtons(true, true, true);
|
|
};
|
|
|
|
matrixClient.on("sync", function(state, prevState, data) {
|
|
switch (state) {
|
|
case "PREPARED":
|
|
syncComplete();
|
|
break;
|
|
}
|
|
});
|
|
|
|
function syncComplete() {
|
|
document.getElementById("result").innerHTML = "<p>Ready for calls.</p>";
|
|
disableButtons(false, true, true);
|
|
|
|
document.getElementById("call").onclick = function() {
|
|
console.log("Placing call...");
|
|
call = matrixcs.createNewMatrixCall(
|
|
client, ROOM_ID
|
|
);
|
|
console.log("Call => %s", call);
|
|
addListeners(call);
|
|
call.placeVideoCall(
|
|
document.getElementById("remote"),
|
|
document.getElementById("local")
|
|
);
|
|
document.getElementById("result").innerHTML = "<p>Placed call.</p>";
|
|
disableButtons(true, true, false);
|
|
};
|
|
|
|
document.getElementById("hangup").onclick = function() {
|
|
console.log("Hanging up call...");
|
|
console.log("Call => %s", call);
|
|
call.hangup();
|
|
document.getElementById("result").innerHTML = "<p>Hungup call.</p>";
|
|
};
|
|
|
|
document.getElementById("answer").onclick = function() {
|
|
console.log("Answering call...");
|
|
console.log("Call => %s", call);
|
|
call.answer();
|
|
disableButtons(true, true, false);
|
|
document.getElementById("result").innerHTML = "<p>Answered call.</p>";
|
|
};
|
|
|
|
client.on("Call.incoming", function(c) {
|
|
console.log("Call ringing");
|
|
disableButtons(true, false, false);
|
|
document.getElementById("result").innerHTML = "<p>Incoming call...</p>";
|
|
call = c;
|
|
addListeners(call);
|
|
});
|
|
}
|
|
client.startClient();
|