aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <tom.smeding@gmail.com>2020-09-29 22:51:34 +0200
committerTom Smeding <tom.smeding@gmail.com>2020-09-29 22:51:34 +0200
commitb01f6191b0354b605fb7703ae7e753a8c372a269 (patch)
tree24db374a90de47aca2de4c57805357d891d6b9e3
parenta8a0603375fa4c5c1e61bd8a0dc0ed7f3f77854e (diff)
webclient: Update to protocol version 3
-rw-r--r--webclient/client.html38
1 files changed, 36 insertions, 2 deletions
diff --git a/webclient/client.html b/webclient/client.html
index f88ee07..5d8ca6f 100644
--- a/webclient/client.html
+++ b/webclient/client.html
@@ -4,7 +4,7 @@
<meta charset="utf-8">
<title>tomsg webclient</title>
<script>
-var PROTOCOL_VERSION=2;
+var PROTOCOL_VERSION=3;
// Note: message id's are considered strings in this code. This is to not have to deal with full 64-bit integers.
@@ -20,6 +20,7 @@ var commandlist=[
{cmd:"login",usage:"/login <username> <password>"},
{cmd:"createroom",usage:"/createroom"},
{cmd:"invite",usage:"/invite <username> (adds to current room)"},
+ {cmd:"leave",usage:"/leave (leaves the current room)"},
{cmd:"shrug",usage:"/shrug (sends '¯\\_(ツ)_/¯')"},
{cmd:"help",usage:"/help (show list of commands)"}
];
@@ -130,12 +131,17 @@ function reconnect(){
var r=spl.word[2],inviter=spl.word[3];
roomlist.push(r);
roomlogs.set(r,[]);
- addRoomEntry(r,"notice",[now(),"User '"+inviter+"' invited you to this room"]);
+ if(inviter==username)addRoomEntry(r,"notice",[now(),"You created this room in another session"]);
+ else addRoomEntry(r,"notice",[now(),"User '"+inviter+"' invited you to this room"]);
fetchRoomHistory(r);
updateRoomList();
} else if(type=="join"){
var r=spl.word[2],u=spl.word[3];
addRoomEntry(r,"notice",[now(),"User '"+u+"' joined this room"]);
+ } else if(type=="leave"){
+ var r=spl.word[2],u=spl.word[3];
+ if(u==username)uiLeaveRoom(r);
+ else addRoomEntry(r,"notice",[now(),"User '"+u+"' left the room"]);
} else if(type=="ping"){
// Do nothing
} else if(type=="online"){
@@ -271,6 +277,15 @@ function updateRoomList(){
}
}
+function uiLeaveRoom(roomid){
+ roomlist.splice(roomlist.indexOf(roomid),1);
+ roomlogs.delete(roomid);
+ var isCurrent=currentroom==roomid;
+ if(isCurrent)currentroom=":console";
+ updateRoomList();
+ if(isCurrent)drawRoom(currentroom);
+}
+
function drawRoom(roomid){
var tbody=document.getElementById("roomlog");
var ch=tbody.children,len=ch.length;
@@ -465,6 +480,25 @@ function executeCommand(roomid,text){
});
break;
+ case "leave":
+ if(!username){
+ addRoomEntry(roomid,"error",[now(),"invite: not logged in"]);
+ break;
+ }
+ var roomtoleave=currentroom;
+ if(!roomtoleave||roomtoleave[0]==":"){
+ addRoomEntry(roomid,"error",[now(),"invite: cannot leave room '"+roomtoleave+"'"]);
+ break;
+ }
+ net_send("leave_room "+roomtoleave,function(ok,err){
+ if(err){
+ addRoomEntry(roomid,"error",[now(),"Unable to leave this room: "+err]);
+ } else {
+ uiLeaveRoom(roomtoleave);
+ }
+ });
+ break;
+
case "shrug":
sendMessage(roomid,"¯\\_(ツ)_/¯");
break;