diff --git a/www/res/js/locutus.js b/www/res/js/locutus.js
index 66bd938..2645163 100644
--- a/www/res/js/locutus.js
+++ b/www/res/js/locutus.js
@@ -23,38 +23,86 @@ function createChatWindow() {
let win = document.createElement("div");
win.id = "chat-win";
+ console.log("Creating chat window");
+
win.innerHTML = `
-
+
`;
- win.getElementById("sendMessage").addEventListener("keyup", (evt) => {
- if (evt.keyCode === 13) {
- evt.preventDefault();
- //TODO: Send Message
- }
+
+ let messageForm = win.getElementsByTagName("form")[0];
+ messageForm.addEventListener("submit", (evt) => {
+ evt.preventDefault();
+ let messageInput = messageForm.elements['message-input'];
+
+ let message = JSON.stringify({
+ room_id: "60nc0XXDIYUh6QzX4p0rMpCdzDmxghZLZk8dLuQh628",
+ data: {
+ message: messageInput.value
+ }
+ })
+ sendEvent(message).then((evt => {
+ console.log(evt)
+ }));
+ let messageAdd = document.createElement("p");
+ messageAdd.innerHTML = `You: ${messageInput.value} `;
+ win.getElementsByTagName("div")[0].appendChild(messageAdd);
+ messageInput.value = "";
+
});
-
+ while (windows.lastChild) windows.removeChild(windows.lastChild);
+ windows.style.visibility = "hidden";
+ subscribeEvent();
main.appendChild(win);
}
async function sendEvent(message) {
- let res = await fetch(dest, {
+ return fetch(`${dest}/_usimp/send_event`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `usimp ${token}`,
+ 'From-Domain': domain,
+ 'To-Domain': domain,
},
body: message
});
-
- let result = await res;
- alert(result.message);
}
+async function subscribeEvent() {
+ let response = await fetch(`${dest}/_usimp/subscribe`, {
+ method: 'POST',
+ headers: {
+ 'To-Domain': domain,
+ 'From-Domain': domain
+ },
+ body: JSON.stringify({})
+ });
+
+ if (response.status !== 200) {
+ showMessage(response.statusText);
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ await subscribeEvent();
+ } else {
+ let message = await response.text();
+ console.log(message);
+ addMessage(JSON.parse(message).event.data.message);
+ await subscribeEvent();
+ }
+}
+
+function addMessage(message) {
+ let messageContainer = document.getElementById("message-win");
+ let messageP = document.createElement("p");
+ messageP.innerHTML = `Not You: ${message} `;
+ messageContainer.appendChild(messageP);
+}
function createLoginWindow() {
let win = document.createElement("div");
@@ -93,15 +141,20 @@ function createLoginWindow() {
console.log(data["domain"]);
let domainServer = usimp.chooseDomainServer(data["domain_servers"]);
console.log(domainServer);
- dest = "http://" + domainServer.host + ':' + domainServer.protocols.http + "/"
+ dest = `http://${domainServer.host}:${domainServer.protocols.http}`;
+ domain = form.elements["domain"].value
usimp.login(domainServer, data["domain"].id, form.elements["account"].value, form.elements["password"].value)
.then(res => res.json())
+ .catch((evt) => {
+ console.log("Serva ded");
+ console.log(evt);
+ })
.then(data => {
token = data.token;
console.log(data.token);
- })
-
+ createChatWindow();
+ });
})
.catch(reason => {
console.error(reason);
diff --git a/www/res/js/usimp.js b/www/res/js/usimp.js
index e7b5a15..4741024 100644
--- a/www/res/js/usimp.js
+++ b/www/res/js/usimp.js
@@ -33,7 +33,7 @@ usimp.chooseDomainServer = function (domainServers, invalidDomainServers = []) {
}
usimp.login = function (domainServer, domain, account, password) {
- return fetch('http://' + domainServer.host + ':' + domainServer.protocols.http + '/_usimp/authenticate', {
+ return fetch(`http://${domainServer.host}:${domainServer.protocols.http}/_usimp/authenticate`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',