Advertisement
banana111

client-side script of my real tiem chat

Dec 9th, 2020
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const socket = io("http://localhost:3000");
  2. message_form = document.getElementById("send_form");
  3.  
  4. function User(name_){
  5.     this.name = name_;
  6.     this.message= new Message();
  7.     this.create_new_message = true;
  8.     this.class_prefix = this.name;
  9.     this.username = "";
  10. }
  11.  
  12. function Message(){
  13.     this.parent = null;
  14.     this.backround = document.getElementById("test");
  15.     this.text = document.getElementById("test");
  16. }
  17.  
  18. this_user = new User("this");
  19. partner_user = new User("partner");
  20.  
  21. socket.on("new_partner", recieved_data => {
  22.     partner_user.username = recieved_data;
  23.     socket.emit("logged_in", this_user.username);
  24. });
  25.  
  26. socket.on("sent_message", data => {
  27.     DoMessage(data, partner_user);
  28. });
  29.  
  30. function DoMessage(message, user){
  31.     allowed_keys = " ¸1234567890'+qwertzuiopšđasdfghjklčćžyxcvbnm,.-<¨!\"#$%&/()=?*QWERTZUIOPŠĐASDFGHJKLČĆŽ>YXCVBNM;:_¨~ˇ^˘°˛`˙´˝¨¸|€÷×[]łŁß¤@{}<>";
  32.     console.log(message);
  33.  
  34.     if(allowed_keys.includes(message)||message==""){
  35.         if(user.create_new_message==true){
  36.             NewMessage(user);
  37.         }
  38.         PlayAnimation(user.message.backround, "type_anim");
  39.         user.message.text.innerHTML+=message;
  40.     }
  41.     else if(message == "Enter"){
  42.         if(user.message.text.innerHTML!=""){
  43.             SetEndAnimation(user);
  44.             PlayAnimation(user.message.backround, "end_message_anim");
  45.             user.create_new_message = true;
  46.             DoMessage("", user);
  47.            
  48.         }
  49.     }
  50.     else if(message == "Backspace"){
  51.         if(user.message.text.innerHTML!=""){
  52.             cur_message = user.message.text.innerHTML;
  53.             user.message.text.innerHTML=cur_message.substring(0,cur_message.length-1);
  54.         }
  55.     }
  56.     if(user.name=="this") socket.emit("send_message", message);
  57. }
  58.  
  59. function NewUsernameHeader(message_container_, user){
  60.     username_header_element = $("<div></div>");
  61.     $(username_header_element).attr("name", user.username);
  62.     class_ = user.class_prefix+"_username_parent";
  63.     $(username_header_element).addClass(class_);
  64.  
  65.     username_header_backround = $("<div></div>");
  66.     class_ = user.class_prefix+"_username_backround";
  67.     $(username_header_backround).addClass(class_);
  68.     $(username_header_element).append(username_header_backround);
  69.     user.message.backround = username_header_backround[0];
  70.  
  71.     username_header_text = $("<p>"+user.username+"</p>");
  72.     class_ = user.class_prefix+"_username_text";
  73.     $(username_header_text).addClass(class_);
  74.     $(username_header_element).append(username_header_text);
  75.     user.message.text = username_header_text[0];
  76.  
  77.     $(message_container_).append(username_header_element);
  78.     SetEndAnimation(user);
  79.     PlayAnimation(user.message.backround, "end_message_anim");
  80. }
  81.  
  82. function NewMessage(user){
  83.     user.create_new_message=false;
  84.  
  85.     message_container = document.getElementById("message_container");
  86.  
  87.     if($(message_container).children().length==0 || $(message_container.lastChild).attr("name")!=user.username){
  88.             NewUsernameHeader(message_container, user);
  89.     }
  90.     //NewUsernameHeader(message_container, user);
  91.  
  92.     message_element = document.createElement("div");
  93.     $(message_element).attr("name", user.username);
  94.     class_ = user.class_prefix+"_message_parent";
  95.     message_element.classList.add(class_);
  96.     user.message.parent = message_container.lastChild;
  97.    
  98.  
  99.     message_backround = document.createElement("div");
  100.     class_ = user.class_prefix+"_message_backround";
  101.     message_backround.classList.add(class_);
  102.     message_element.append(message_backround);
  103.     user.message.backround = message_backround;
  104.  
  105.  
  106.     message_text = document.createElement("p");
  107.     class_ = user.class_prefix+"_message_text";
  108.     message_text.classList.add(class_);
  109.     message_element.append(message_text);
  110.     user.message.text = message_text;
  111.  
  112.     message_container.append(message_element);
  113. }
  114.  
  115. function PlayAnimation(ellement, animation_class){
  116.     if(ellement.classList.contains(animation_class)){
  117.         ellement.classList.remove(animation_class);
  118.     }
  119.     ellement.offsetWidth;
  120.     ellement.classList.add(animation_class);
  121. }
  122.  
  123. function SetEndAnimation(user){
  124.     backround = user.message.backround;
  125.     if(!backround.classList.contains("end_message_anim")){
  126.         backround.classList.add("end_message_anim");
  127.     }
  128.     width =  user.message.text.offsetWidth;
  129.     console.log("width "+width);
  130.     backround.style.setProperty("--end_width", (width + 30)+"px");
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement