From bfc4b5dd9bf44f3935b31ed756b54ab183e1844b Mon Sep 17 00:00:00 2001 From: Karan Erry Date: Mon, 15 Apr 2019 04:35:17 -0400 Subject: [PATCH 1/4] spruced up chat list --- routes/chat.js | 13 ++++++++++++- views/chat.hbs | 28 +++++++++++++++++----------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/routes/chat.js b/routes/chat.js index 9d8e438d..a0a82155 100644 --- a/routes/chat.js +++ b/routes/chat.js @@ -20,7 +20,7 @@ router.use(bodyParser.urlencoded({ extended: false })) /* GET home page. */ -router.get('/' , function(req, res, next) { +router.get('/', checkAuthentication, function(req, res, next) { chatData.find({users: {$elemMatch : { @@ -72,5 +72,16 @@ router.post('/messages',async (req, res) => { }) +//authenticate a user is logged in +function checkAuthentication(req,res,next){ + if(req.isAuthenticated()){ + //req.isAuthenticated() will return true if user is logged in + next(); + } else{ + req.session.authorigin = 'chat'; + res.redirect('/auth/google/callback') + } +} + module.exports = router; diff --git a/views/chat.hbs b/views/chat.hbs index d7b13557..0d2602c6 100644 --- a/views/chat.hbs +++ b/views/chat.hbs @@ -51,11 +51,14 @@ img{ max-width:100%;} width: 88%; } -.chat_people{ overflow:hidden; clear:both;} +.chat_people{ + overflow:hidden; + clear:both; + padding: 20px 10px; +} .chat_list { border-bottom: 1px solid #c4c4c4; margin: 0; - padding: 18px 16px 10px; } .inbox_chat { height: 550px; overflow-y: scroll;} @@ -145,17 +148,19 @@ img{ max-width:100%;}
{{# each chats }} -
- +
sunil
-
{{this.selectedPersonSelling}} Dec 25
-

Item: {{this.selectedPostTitle}}

+ {{#ifEquals this.selectedPersonSelling ../currentSession.passport.user._json.email}} +
Interested buyer for "{{this.selectedPostTitle}}"Dec 25
+ {{/ifEquals}} + {{#ifEquals this.dateChatStartedBy ../currentSession.passport.user._json.email}} +
Seller of "{{this.selectedPostTitle}}"Dec 25
+ {{/ifEquals}}

-
{{/each}}
@@ -187,16 +192,17 @@ img{ max-width:100%;} // When send is pressed, get imporant values and run sendMessage function to save to DB $("#send_message").click(() => { // TODO: check to see if user has not selected a thread, dont allow to send if they are have not selected - var threadId = $("input[type='radio']:checked").val() + var threadId = window.sessionStorage.getItem('currentThread'); var chatMessage = { name: $("#username").val(), chat: $("#message").val(), thread: threadId } sendMessage(chatMessage) }) // if a thread is selected show the messages specific to that thread - $('input[type="radio"]').click(function(){ - var threadId = $("input[type='radio']:checked"). val() - console.log("Radio Button Selected", threadId); + $('.chat_people').click(function(){ + console.log('Chat Clicked'); + var threadId = $(this).attr('threadId'); + window.sessionStorage.setItem('currentThread', threadId); $("#chatroom").empty(); sendInfoForMessages(threadId); }) From 11bd1a3918c6d52dc8a3c5fef83de32314c8ec5a Mon Sep 17 00:00:00 2001 From: Karan Erry Date: Mon, 15 Apr 2019 10:27:51 -0400 Subject: [PATCH 2/4] better chat list UI, new chats now preselect --- .DS_Store | Bin 6148 -> 8196 bytes routes/chat.js | 15 ++++++----- views/chat.hbs | 70 +++++++++++++++++++++++++++++++------------------ 3 files changed, 54 insertions(+), 31 deletions(-) diff --git a/.DS_Store b/.DS_Store index 2687527c5cfe96f52449a922f8a2da2883ef5344..bfdac21edee5d5545124ce691cf7d01c1fe70134 100644 GIT binary patch delta 231 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAD6lbLH}hr%jz7$c**Q2SHn1=X zZ02F{WS*?e&aIqOUR;orlb;0Ca3-lBC$qT3z~DL~6Eh1d8#@Ol5b|z$V3}SM| z3rJU2>lzwa80aV%8JX1TC{#l@rUr(!wVWK{s)n|n3AvS3)it$sb0+t($xF`#8qCU2 z#*oR7%23WwTozoEmy@5D4ishF9K^GSnM;Bj$aV!ece5bJcjn3bBA%1|c{n&2AwFT) J9M3a{82}sMGg|-v delta 103 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jG-bU^g=(-)0^GPv(hbn-;Tk pa0oI36##(%H;`}zsohxkoq009j3-DZ0~5p)kiiU_<9X&V0{~`o5DNeR diff --git a/routes/chat.js b/routes/chat.js index a0a82155..9ac3140f 100644 --- a/routes/chat.js +++ b/routes/chat.js @@ -7,6 +7,7 @@ var bodyParser = require('body-parser') var $ = require("jquery"); var Long = require('mongodb').Long; var current_millies = new Date().getTime(); +var querystring = require('querystring'); @@ -21,6 +22,7 @@ router.use(bodyParser.urlencoded({ extended: false })) /* GET home page. */ router.get('/', checkAuthentication, function(req, res, next) { + preselectedThread = req.query.preselectedThread ? req.query.preselectedThread : ''; chatData.find({users: {$elemMatch : { @@ -29,11 +31,11 @@ router.get('/', checkAuthentication, function(req, res, next) { } } ).sort({ dateChatCreated: -1 }).then(function(doc) { - res.render('chat', { title: 'DrewUse', currentSession: req.session, chats:doc}); + res.render('chat', { title: 'DrewUse', currentSession: req.session, chats:doc, preselectedThread:preselectedThread}); }); }); -router.post('/newMessage', function(req,res){ +router.post('/newMessage', checkAuthentication, function(req,res){ var current_timestamp = Long.fromNumber(current_millies); var date = new Date(current_millies); var dateReadable = date.toString(); @@ -47,12 +49,13 @@ router.post('/newMessage', function(req,res){ selectedPersonSelling: req.body.selectedPersonSelling } var data = new chatData(chat); - data.save(); - res.redirect('/chat'); + data.save((err, doc) => { + res.redirect('/chat?' + querystring.stringify({'preselectedThread':doc.id})); + }); }); -router.post('/messages/getInfo', (req, res) => { +router.post('/messages/getInfo', checkAuthentication, (req, res) => { console.log(req.body.threadId); chatData.find({_id: req.body.threadId}) .then(function(doc) { @@ -63,7 +66,7 @@ router.post('/messages/getInfo', (req, res) => { }); -router.post('/messages',async (req, res) => { +router.post('/messages', checkAuthentication, async (req, res) => { var current_timestamp = Long.fromNumber(current_millies); console.log("post messages route"); console.log(req.body); diff --git a/views/chat.hbs b/views/chat.hbs index 0d2602c6..996c3328 100644 --- a/views/chat.hbs +++ b/views/chat.hbs @@ -2,7 +2,7 @@ .container{max-width:1170px; margin:auto;} img{ max-width:100%;} .inbox_people { - background: #f8f8f8 none repeat scroll 0 0; + background: none repeat scroll 0 0; float: left; overflow: hidden; width: 40%; border-right:1px solid #c4c4c4; @@ -43,26 +43,32 @@ img{ max-width:100%;} .chat_ib p{ font-size:14px; color:#989898; margin:auto} .chat_img { float: left; - width: 11%; + width: 30%; } .chat_ib { float: left; - padding: 0 0 0 15px; - width: 88%; + padding: 10px 0 0 15px; + width: 70%; } .chat_people{ + background: #e8eaef; overflow:hidden; clear:both; - padding: 20px 10px; + padding: 0 0 15px; } .chat_list { border-bottom: 1px solid #c4c4c4; margin: 0; } -.inbox_chat { height: 550px; overflow-y: scroll;} +.inbox_chat { height: 595px; overflow-y: scroll;} -.active_chat{ background:#ebebeb;} +.active_chat{ + /*background:#ebebeb;*/ + background: white; +} + +.inactive_chat{ background: #e8eaef;} .incoming_msg_img { display: inline-block; @@ -132,7 +138,9 @@ img{ max-width:100%;} top: 11px; width: 33px; } -.messaging { padding: 0 0 50px 0;} +.messaging { + padding: 0 0 50px 0; +} .msg_history { height: 516px; overflow-y: auto; @@ -149,18 +157,17 @@ img{ max-width:100%;}
{{# each chats }}
-
sunil
-
+ sunil + {{#ifEquals this.selectedPersonSelling ../currentSession.passport.user._json.email}}
Interested buyer for "{{this.selectedPostTitle}}"Dec 25
{{/ifEquals}} {{#ifEquals this.dateChatStartedBy ../currentSession.passport.user._json.email}} -
Seller of "{{this.selectedPostTitle}}"Dec 25
+
Seller of "{{this.selectedPostTitle}}"
Dec 25 {{/ifEquals}} -
+
-
{{/each}}
@@ -187,31 +194,44 @@ img{ max-width:100%;} + var xhttp = new XMLHttpRequest(); + xhttp.open("POST", "/chat/messages", true); + xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); + xhttp.send("senderName="+senderName+"&message="+message+"&threadId="+threadId); + } + // display messages sent on message dialog + function addMessages(message){ + $("#chatroom").append("

" + $("#username").val()+ ": " + $("#message").val()+ "

") + $("#message").val(" "); + } + function addAllMessages(message){ + var messagesArray= message[0].messages; + var i; + for (i in messagesArray) { + console.log(JSON.stringify(messagesArray[i])); + message= JSON.stringify(messagesArray[i].message); + byWho = JSON.stringify(messagesArray[i].byWho); + $("#chatroom").append("

"+eval(byWho)+": "+eval(message)+"

"); + } + + $("#message").val(" "); + } + // sends get request to server to get thread messages when the radio button is selected + function sendInfoForMessages(threadId){ + console.log("Inside getMessages:",threadId); + var xhttp = new XMLHttpRequest(); + xhttp.open('POST', '/chat/messages/getInfo', true); + xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); + xhttp.send('threadId='+threadId); + } + \ No newline at end of file From 561d59ec1eafdafa207d955885cc4ada73ef3591 Mon Sep 17 00:00:00 2001 From: Karan Erry Date: Mon, 15 Apr 2019 22:51:34 -0400 Subject: [PATCH 4/4] added badges to chat list --- .DS_Store | Bin 8196 -> 8196 bytes views/chat.hbs | 18 ++++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.DS_Store b/.DS_Store index bfdac21edee5d5545124ce691cf7d01c1fe70134..762b4ed3853ad53cdae4e75e6673e4c7ab2950f0 100644 GIT binary patch delta 67 zcmZp1XmQw(Ej;S|pB9R*#3$v=hVCie=dh_f=3F=R5NGL$nEmjxH) X<>cq3GcYhPZuaBZ$-J3e;x9V@(-jm} delta 95 zcmZp1XmQw(EzEdka*l9=j&yakuAz~IfsTTakx8wNLN$bAYG7Df%gG_GYG~`3kXu<* tT~k{(XL6sAy!2cK1_oA!GKNfsREBbf;
-

Messaging

+

Chat

@@ -187,12 +191,14 @@ img{ max-width:100%;} sunil +
{{this.selectedPostTitle}}
{{#ifEquals this.selectedPersonSelling ../currentSession.passport.user._json.email}} -
Interested buyer for "{{this.selectedPostTitle}}"Dec 25
+ Interested Buyer {{/ifEquals}} {{#ifEquals this.dateChatStartedBy ../currentSession.passport.user._json.email}} -
Seller of "{{this.selectedPostTitle}}"
Dec 25 + Product Seller {{/ifEquals}} +

Last chatted:

{{/each}}