diff --git a/.gitignore b/.gitignore index b6f2f37..7b290b6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /target -/vecmap/target \ No newline at end of file +/vecmap/target +# Local Netlify folder +.netlify \ No newline at end of file diff --git a/api.txt b/api.txt deleted file mode 100644 index aaccdd2..0000000 --- a/api.txt +++ /dev/null @@ -1,32 +0,0 @@ -Set Info: -{ - cmd: "seinfo", - name: name, - kunjika: kunjika, - tags: tags -} - -Join Grih: -{ - cmd: "join", - kunjika: id, - length: number of members allowed (optional) -} - -Leave: -{ - cmd: "leave" -} - -Send Message: -{ - cmd: "text", - text: message -} - -RandomUser: -{ - cmd: "rnd" -} - - diff --git a/functions b/functions new file mode 100755 index 0000000..54625ae --- /dev/null +++ b/functions @@ -0,0 +1,2 @@ +#!/usr/bin/bash +lupt/target/release/lupt -s ./static -a $URL \ No newline at end of file diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..29eb192 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,20 @@ +# example netlify.toml +[build] + command = "cargo build --release" + functions = "functions" + + ## Uncomment to use this redirect for Single Page Applications like create-react-app. + ## Not needed for static site generators. + #[[redirects]] + # from = "/*" + # to = "/index.html" + # status = 200 + + ## (optional) Settings for Netlify Dev + ## https://github.com/netlify/cli/blob/master/docs/netlify-dev.md#project-detection + #[dev] + # command = "yarn start" # Command to start your dev server + # port = 3000 # Port that the dev server will be listening on + # publish = "dist" # Folder with the static content for _redirect file + + ## more info on configuring this file: https://www.netlify.com/docs/netlify-toml-reference/ diff --git a/rust-toolchain b/rust-toolchain new file mode 100644 index 0000000..31578d3 --- /dev/null +++ b/rust-toolchain @@ -0,0 +1,2 @@ +[toolchain] +channel = "stable" \ No newline at end of file diff --git a/src/chat_pinnd.rs b/src/chat_pinnd.rs index 55befec..810ca3a 100644 --- a/src/chat_pinnd.rs +++ b/src/chat_pinnd.rs @@ -56,12 +56,11 @@ impl Handler for ChatPinnd { fn handle(&mut self, msg: ms::JoinGrih, _: &mut Self::Context) -> Self::Result { // check if user exist if let Some(_) = self.vyaktigat_waitlist.iter().position(|vk| vk.kunjika == msg.kunjika) { - println!("got in watchlist"); return Resp::Err("Kunjika already exist".to_owned()); } if let Some(_) = self.grih.iter().position(|(_,g)| { - match g.loog.iter().position(|a| {println!("Got in grih {:?} {:?}", a.kunjika, msg.kunjika); a.kunjika == msg.kunjika}) { + match g.loog.iter().position(|a| a.kunjika == msg.kunjika) { Some(_) => true, None => false } @@ -297,6 +296,9 @@ impl Handler for ChatPinnd { fn handle(&mut self, msg: ms::SendStatus, _: &mut Self::Context) -> Self::Result { if let Some(grih) = self.grih.get(&msg.grih_kunjika) { grih.loog.iter().for_each(|c| { + if c.kunjika == msg.kunjika { + return; + } c.addr.do_send(ms::WsStatus { sender_kunjika: msg.kunjika.to_owned(), status: msg.status.to_owned(), diff --git a/src/ws_sansad.rs b/src/ws_sansad.rs index 843b7a5..808030a 100644 --- a/src/ws_sansad.rs +++ b/src/ws_sansad.rs @@ -172,7 +172,6 @@ impl WsSansad { // check client heartbeats if Instant::now().duration_since(act.hb) > CLIENT_TIMEOUT { // heartbeat timed out - println!("Websocket Client heartbeat failed, disconnecting!"); // stop actor ctx.stop(); @@ -258,8 +257,7 @@ impl WsSansad { if let Some(val ) = validate(vec![vl::NonEmpty, vl::NoSpace, vl::NoHashtag], &kunjika, "Kunjika") { self.send_err_response(&val); return; - } - if let Some(val ) = validate(vec![vl::NonEmpty], &name, "Name") { + } else if let Some(val ) = validate(vec![vl::NonEmpty], &name, "Name") { self.send_err_response(&val); return; } @@ -366,17 +364,15 @@ impl WsSansad { // Validate - if let Some(val ) = validate(vec![vl::NonEmpty, vl::NoSpace, vl::NoHashtag], &kunjika, "Kunjika") { - self.send_err_response(&val); - return; - } - if let Some(val ) = validate(vec![vl::NonEmpty], &name, "Name") { - self.send_err_response(&val); - return; - } if let Some(val ) = validate(vec![vl::NonEmpty, vl::NoGupt, vl::NoSpace], &grih_kunjika, "Grih Kunjika") { self.send_err_response(&val); return; + } else if let Some(val ) = validate(vec![vl::NonEmpty, vl::NoSpace, vl::NoHashtag], &kunjika, "Kunjika") { + self.send_err_response(&val); + return; + } else if let Some(val ) = validate(vec![vl::NonEmpty], &name, "Name") { + self.send_err_response(&val); + return; } // request diff --git a/static/js/app.js b/static/js/app.js index c2e7284..354fe44 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -29,15 +29,7 @@ $(document).ready(() => { var send_typing = false; var timeout = null; - $('#send_box').keypress(function(e) { - if(e.originalEvent.charCode == 13 && !e.shiftKey) { - send(); - e.preventDefault(); - clearTimeout(timeout); - send_typing = false; - sendTypingEnd() - return - } + $('#send_box').keydown(function(e) { if (!send_typing) { sendTyping(); send_typing = true; @@ -49,6 +41,16 @@ $(document).ready(() => { sendTypingEnd(); },3000); }); + $('#send_box').keypress(function(e) { + if(e.originalEvent.charCode == 13 && !e.shiftKey) { + send(); + e.preventDefault(); + clearTimeout(timeout); + send_typing = false; + sendTypingEnd() + return + } + }); $('#send_box').bind('input propertychange keyup', function() { var height = ($(window).height()*0.0165).toFixed(0)*20; @@ -110,6 +112,7 @@ socket.addEventListener('message', function (event) { $('[name="error_msg"]').text(j.message); $('[name="error_msg"]').removeClass('hidden'); $('#progressbar').addClass('hidden'); + joining = false; callbacks = []; } else { pushStatus(j.message); @@ -144,11 +147,11 @@ socket.addEventListener('message', function (event) { break; case 'connected': vayakti[j.kunjika] = j.name; - pushStatus('Vyakti '+j.name+' connected as '+j.kunjika); + pushStatus('Vyakti '+j.name+' connected as '+j.kunjika+' at '+currentTime()); break; case 'disconnected': delete vayakti[j.kunjika]; - pushStatus('Vyakti '+j.name+' disconnected as '+j.kunjika); + pushStatus('Vyakti '+j.name+' disconnected as '+j.kunjika+' at '+currentTime()); break; case 'list': JSON.parse(j.vayakti).forEach(function(usr) { @@ -184,6 +187,7 @@ function connect(frm) { myinfo.name = data.name; no_name_message = false; joining = false; + pushStatus('Connected at '+currentTime()); socket.send(JSON.stringify({cmd: 'list'})); }); socket.send(JSON.stringify(Object.assign({cmd: frm.attr('cmd')}, data))); @@ -347,7 +351,7 @@ function cleanMessage() { function vayaktiList() { var v = $('#vayakti_list'); v.empty(); - Object.keys(vayaktiList).forEach((key) => { + Object.keys(vayakti).forEach((key) => { v.append($('
', {class: 'siimple-table-row'}) .append($('
', {class: 'siimple-table-cell'}).append(key)) .append($('
', {class: 'siimple-table-cell'}).append(vayakti[key]))); @@ -355,3 +359,8 @@ function vayaktiList() { $('#vayakti_model').removeClass('hidden'); $('#action_clip').addClass('hidden'); } + +function currentTime() { + var today = new Date(); + return today.getHours()+':'+today.getMinutes(); +} \ No newline at end of file