s'more chat progress
This commit is contained in:
parent
acf96db186
commit
b4e6a3fe39
5 changed files with 33 additions and 4 deletions
|
@ -21,6 +21,20 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
document.getElementById('login-username').onkeypress = (e) => {
|
||||||
|
if(e.key == 'Enter') {
|
||||||
|
document.getElementById('login-pass').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.getElementById('login-pass').onkeypress = (e) => {
|
||||||
|
if(e.key == 'Enter') {
|
||||||
|
onLoginClick();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// focus on the username field for the sake of just pressing enter multiple times
|
||||||
|
document.getElementById('login-username').focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
tavern.onlogin = (s) => {
|
tavern.onlogin = (s) => {
|
||||||
|
@ -29,8 +43,8 @@
|
||||||
let game = document.getElementById('game');
|
let game = document.getElementById('game');
|
||||||
login.style.display = 'none';
|
login.style.display = 'none';
|
||||||
game.style.display = 'flex';
|
game.style.display = 'flex';
|
||||||
// get all chat history as soon as we get in
|
// get last 50 msgs (i think that is enough for now) when we get in
|
||||||
tavern.get_chat_history(0, 0);
|
tavern.get_last_msgs(50);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
alert("Invalid username or password!");
|
alert("Invalid username or password!");
|
||||||
|
@ -55,6 +69,7 @@
|
||||||
history.removeChild(exists);
|
history.removeChild(exists);
|
||||||
}
|
}
|
||||||
history.appendChild(msg);
|
history.appendChild(msg);
|
||||||
|
msg.scrollIntoView();
|
||||||
}
|
}
|
||||||
function onLoginClick() {
|
function onLoginClick() {
|
||||||
let username = document.getElementById('login-username').value;
|
let username = document.getElementById('login-username').value;
|
||||||
|
|
|
@ -37,4 +37,8 @@ tavern.simple_msg = (msg, token) => {
|
||||||
tavern.get_chat_history = (from, amount) => {
|
tavern.get_chat_history = (from, amount) => {
|
||||||
if(!tavern.connected || tavern.loggedIn) { return false; }
|
if(!tavern.connected || tavern.loggedIn) { return false; }
|
||||||
tavern.socket.send(JSON.stringify({ get_chat_history: { from: from, amount: amount } }))
|
tavern.socket.send(JSON.stringify({ get_chat_history: { from: from, amount: amount } }))
|
||||||
|
}
|
||||||
|
tavern.get_last_msgs = (amount) => {
|
||||||
|
if(!tavern.connected || tavern.loggedIn) { return false; }
|
||||||
|
tavern.socket.send(JSON.stringify({ get_last_messages: { amount: amount } }))
|
||||||
}
|
}
|
|
@ -14,6 +14,7 @@ pub enum Request {
|
||||||
Login(login::LoginRequest),
|
Login(login::LoginRequest),
|
||||||
Message(ChatMessage),
|
Message(ChatMessage),
|
||||||
GetChatHistory { amount: usize, from: usize },
|
GetChatHistory { amount: usize, from: usize },
|
||||||
|
GetLastMessages { amount: usize, },
|
||||||
Quit,
|
Quit,
|
||||||
Shutdown
|
Shutdown
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,15 @@ impl GameServer {
|
||||||
.collect();
|
.collect();
|
||||||
_ = broadcast.send(api::Response::GetChatHistory(history));
|
_ = broadcast.send(api::Response::GetChatHistory(history));
|
||||||
},
|
},
|
||||||
|
api::Request::GetLastMessages { mut amount } => {
|
||||||
|
if amount == 0 { amount = self.chat.len(); }
|
||||||
|
let start = if amount >= self.chat.len() { self.chat.len() } else { self.chat.len() - amount };
|
||||||
|
let history: Vec<ChatMessage> = self.chat.iter()
|
||||||
|
.skip(start)
|
||||||
|
.map(|m| m.1.clone())
|
||||||
|
.collect();
|
||||||
|
_ = broadcast.send(api::Response::GetChatHistory(history));
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ = broadcast.send(api::Response::Shutdown);
|
_ = broadcast.send(api::Response::Shutdown);
|
||||||
|
|
|
@ -70,11 +70,11 @@ async fn handle_socket(mut socket: ws::WebSocket, msend: mpsc::Sender<(String, R
|
||||||
println!("Got unauthorized message: {:?}", t);
|
println!("Got unauthorized message: {:?}", t);
|
||||||
match req {
|
match req {
|
||||||
// TODO: Actual signing in mechanism with multiple ids :)
|
// TODO: Actual signing in mechanism with multiple ids :)
|
||||||
Request::Login(r) => if r.username == "rusty" {
|
Request::Login(r) => if r.username == "rusty" || r.username == "honey" {
|
||||||
_ = socket.send(Message::Text(
|
_ = socket.send(Message::Text(
|
||||||
serde_json::to_string(&Response::Login(open_tavern::api::login::LoginResult { success: true })).unwrap()
|
serde_json::to_string(&Response::Login(open_tavern::api::login::LoginResult { success: true })).unwrap()
|
||||||
)).await;
|
)).await;
|
||||||
id = Some(String::from("rusty"));
|
id = Some(String::from(r.username));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in a new issue