From 34830541cbbb76e6309249e744d32006df7efb5a Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 09:54:15 -0400 Subject: [PATCH 01/32] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 299362a..23dc9e2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ +Dan Donato + # project_superchat Build a realtime multi-room chat application. Make it super. From ae76b7f70a918af43c92fec1276b2af8f0a09336 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 09:59:39 -0400 Subject: [PATCH 02/32] first commit --- .gitignore | 1 + index.js | 0 2 files changed, 1 insertion(+) create mode 100644 .gitignore create mode 100644 index.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..e69de29 From 1abb2dc19a7bb4a240b59b50340d70ebe1c1989c Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 10:40:48 -0400 Subject: [PATCH 03/32] planning --- index.js | 9 +++++++++ plan.txt | 20 ++++++++++++++++++++ views/index.handlebars | 26 ++++++++++++++++++++++++++ views/layouts/main.handlebars | 11 +++++++++++ 4 files changed, 66 insertions(+) create mode 100644 plan.txt create mode 100644 views/index.handlebars create mode 100644 views/layouts/main.handlebars diff --git a/index.js b/index.js index e69de29..16afe13 100644 --- a/index.js +++ b/index.js @@ -0,0 +1,9 @@ +var express = require("express"); +var bodyParser = require("body-parser"); +var hbs = require("express-handlebars"); +var server = require("http").createServer(app); +var io = require("socket.io")(server); + +app.use(bodyParser.urlencoded({ extended: false })); +app.engine("handlebars", hbs({ defaultLayout: "main" })); +app.set("view engine", "handlebars"); diff --git a/plan.txt b/plan.txt new file mode 100644 index 0000000..1aa19c0 --- /dev/null +++ b/plan.txt @@ -0,0 +1,20 @@ +Login screen: +message [rm# user: text] +counter when 10 +///later on save: move all the messages to external file + +message list push pop +[] of last n messages + + +ChatRoom: +{message: {user: +text: }} + Display previous n messages + display username next to messages + +redisserver. +rediserver.users if user exists append x +redisserver.rooms.messages[room:msg1,msg2] +>>>save user with cookie +jack: im the all thin::::::::king all seeing diff --git a/views/index.handlebars b/views/index.handlebars new file mode 100644 index 0000000..c0c3420 --- /dev/null +++ b/views/index.handlebars @@ -0,0 +1,26 @@ +
+ + +
+ +
+ {{#each chats as |chatText|}} +
+ {{chatText.name}} +

{{chatText}}

+
+ {{/each}} +
+ diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars new file mode 100644 index 0000000..f672463 --- /dev/null +++ b/views/layouts/main.handlebars @@ -0,0 +1,11 @@ + + + + + + Chat Room + + +{{{body}}} + + From 0ed6ba71ca564b2034f996e4db801903b455b26f Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 11:05:20 -0400 Subject: [PATCH 04/32] nom --- package.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 0000000..7584514 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "project_superchat", + "version": "1.0.0", + "description": "Dan Donato", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/KaraThrash/project_superchat.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/KaraThrash/project_superchat/issues" + }, + "homepage": "https://github.com/KaraThrash/project_superchat#readme" +} From 6faf6749475806e41f55d8b2ad18a08dadac75fd Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Wed, 26 Jul 2017 10:35:21 -0500 Subject: [PATCH 05/32] started added functionality --- index.js | 28 +++++++++++++++++++++++----- lib/index.js | 5 +++++ lib/redis_tools.js | 17 +++++++++++++++++ package.json | 22 ++++++++++++++++++++++ 4 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 lib/index.js create mode 100644 lib/redis_tools.js create mode 100644 package.json diff --git a/index.js b/index.js index 16afe13..da39793 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,27 @@ -var express = require("express"); -var bodyParser = require("body-parser"); -var hbs = require("express-handlebars"); -var server = require("http").createServer(app); -var io = require("socket.io")(server); +const express = require("express"); +const bodyParser = require("body-parser"); +const hbs = require("express-handlebars"); +const server = require("http").createServer(app); +const io = require("socket.io")(server); +const cookieParser = require("cookie-parser"); + +app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); + +let cookieArray = []; + +app.get('/', (req, res) => { + + let usernameExist = cookieArray.reduce((exist, cookie) => { + return exist || (cookie.username === req.body.username); + }, false); + + + + let cookieObj = req.cookies.cookieObj || {}; + + cookieObj.username = req.body.username; +}) diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..45944f5 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,5 @@ +const redisTools = require("./redis_tools"); + +module.exports = { + redisTools +} diff --git a/lib/redis_tools.js b/lib/redis_tools.js new file mode 100644 index 0000000..ab52f02 --- /dev/null +++ b/lib/redis_tools.js @@ -0,0 +1,17 @@ +const redisClient = require("redis").createClient(); + +const { storeUsername } = { + storeUsername: (username) => { + return new Promise((resolve, reject) => { + redisClient.lpush("usernames", username, (err, reply) => { + if(err) reject(err); + // User data storage worked correctly + // redisClient.end() => do this if not working correctly + resolve(); + }) + }) + }, + + + // TODO add a way to get the data +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b8ae3a4 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "project_superchat", + "version": "1.0.0", + "description": "Dan Donato", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Alex-Willenbrink/project_superchat.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Alex-Willenbrink/project_superchat/issues" + }, + "homepage": "https://github.com/Alex-Willenbrink/project_superchat#readme", + "dependencies": { + "redis": "^2.7.1" + } +} From bd06ca244c0c0f4a8e2ac0a8a3e41547532452f0 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 12:05:46 -0400 Subject: [PATCH 06/32] post from login works --- index.js | 40 ++++++++++++++++++++++-------------- package.json | 12 +---------- views/loginScreen.handlebars | 4 ++++ 3 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 views/loginScreen.handlebars diff --git a/index.js b/index.js index da39793..29a136c 100644 --- a/index.js +++ b/index.js @@ -1,27 +1,37 @@ const express = require("express"); +const app = express(); const bodyParser = require("body-parser"); const hbs = require("express-handlebars"); const server = require("http").createServer(app); const io = require("socket.io")(server); const cookieParser = require("cookie-parser"); - - +const port = 4000; app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); let cookieArray = []; - -app.get('/', (req, res) => { - - let usernameExist = cookieArray.reduce((exist, cookie) => { - return exist || (cookie.username === req.body.username); - }, false); - - - - let cookieObj = req.cookies.cookieObj || {}; - - cookieObj.username = req.body.username; -}) +var myUserName = "Word Eater was Here"; +app.get("/", (req, res) => { + console.log(req.cookie); + if (req.cookie !== undefined) { + //go to chat + myUserName = req.cookie.username; + res.render("chatScreen"); + } else { + //cont go to chat //login? + //post data//then check the name they enter against names saved + res.render("loginScreen"); + } +}); +app.post("/", (req, res) => { + //check username that is entered + //TODO: confirm req.body.name as syntax + console.log(req.body.name); + res.cookie["username"] = req.body.name; + console.log(res.cookie["username"]); +}); +app.listen(port, () => { + console.log("Serving!"); +}); diff --git a/package.json b/package.json index 9914092..082f2f6 100644 --- a/package.json +++ b/package.json @@ -8,25 +8,15 @@ }, "repository": { "type": "git", -<<<<<<< HEAD - "url": "git+https://github.com/KaraThrash/project_superchat.git" -======= "url": "git+https://github.com/Alex-Willenbrink/project_superchat.git" ->>>>>>> 6faf6749475806e41f55d8b2ad18a08dadac75fd }, "author": "", "license": "ISC", "bugs": { -<<<<<<< HEAD - "url": "https://github.com/KaraThrash/project_superchat/issues" - }, - "homepage": "https://github.com/KaraThrash/project_superchat#readme" -======= "url": "https://github.com/Alex-Willenbrink/project_superchat/issues" }, "homepage": "https://github.com/Alex-Willenbrink/project_superchat#readme", "dependencies": { "redis": "^2.7.1" } ->>>>>>> 6faf6749475806e41f55d8b2ad18a08dadac75fd -} +} \ No newline at end of file diff --git a/views/loginScreen.handlebars b/views/loginScreen.handlebars new file mode 100644 index 0000000..3699ae2 --- /dev/null +++ b/views/loginScreen.handlebars @@ -0,0 +1,4 @@ +
+ + +
From 164ba05784fb6fbef4c8308814607cec45ee59df Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Wed, 26 Jul 2017 12:07:43 -0500 Subject: [PATCH 07/32] trying username stuff --- index.js | 34 ++++++++++++++++++++++++++++------ lib/redis_tools.js | 17 ++++++++++++++--- package.json | 8 +++++--- 3 files changed, 47 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index 29a136c..766cfec 100644 --- a/index.js +++ b/index.js @@ -6,32 +6,54 @@ const server = require("http").createServer(app); const io = require("socket.io")(server); const cookieParser = require("cookie-parser"); const port = 4000; +const redisTools = require("./lib/redis_tools"); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); -let cookieArray = []; var myUserName = "Word Eater was Here"; + app.get("/", (req, res) => { - console.log(req.cookie); - if (req.cookie !== undefined) { + if (req.cookies.username) { + console.log(`username: ${req.cookies["username"]}`); //go to chat - myUserName = req.cookie.username; + myUserName = req.cookies.username; + console.log("Cookie was stored"); res.render("chatScreen"); } else { + //cont go to chat //login? //post data//then check the name they enter against names saved res.render("loginScreen"); } }); + + app.post("/", (req, res) => { //check username that is entered //TODO: confirm req.body.name as syntax - console.log(req.body.name); - res.cookie["username"] = req.body.name; + if(!checkUserNameExist(req.body.name)) { + res.cookie("username", req.body.name); + + res.redirect('/'); + } else { + window.alert("Your username exists"); + res.end(); + } + + console.log(res.cookie["username"]); + }); + +const checkUsernameExist = ( name ) => { + return redisTools.getUsernames().includes(name); +} + + + + app.listen(port, () => { console.log("Serving!"); }); diff --git a/lib/redis_tools.js b/lib/redis_tools.js index ab52f02..82d29bd 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -1,5 +1,6 @@ const redisClient = require("redis").createClient(); + const { storeUsername } = { storeUsername: (username) => { return new Promise((resolve, reject) => { @@ -7,11 +8,21 @@ const { storeUsername } = { if(err) reject(err); // User data storage worked correctly // redisClient.end() => do this if not working correctly + redisClient.push(username); resolve(); }) }) - }, + } +} + +getUsernames () => { + return redisClient.usernames; +} + +redisClient.usernames = []; +storeUsername.usernames = redisClient.usernames; - - // TODO add a way to get the data +module.exports = { + storeUsername, + getUsernames } diff --git a/package.json b/package.json index 082f2f6..ff2dd13 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Dan Donato", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "start": "nodemon index.js" }, "repository": { "type": "git", @@ -17,6 +18,7 @@ }, "homepage": "https://github.com/Alex-Willenbrink/project_superchat#readme", "dependencies": { - "redis": "^2.7.1" + "redis": "^2.7.1", + "socket.io": "^2.0.3" } -} \ No newline at end of file +} From 363f352c72237b930b39725934bf9acd2c6e7bb5 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 13:32:23 -0400 Subject: [PATCH 08/32] fun with sockets --- index.js | 33 +++++++++++++++++---------------- lib/redis_tools.js | 36 ++++++++++++++++-------------------- views/chatScreen.handlebars | 21 +++++++++++++++++++++ 3 files changed, 54 insertions(+), 36 deletions(-) create mode 100644 views/chatScreen.handlebars diff --git a/index.js b/index.js index 766cfec..0abc7eb 100644 --- a/index.js +++ b/index.js @@ -13,6 +13,13 @@ app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); var myUserName = "Word Eater was Here"; +io.on("connection", client => { + console.log("connection"); + io.on("newChat", newMessage => { + console.log("new chat"); + io.emit(newMessage); + }); +}); app.get("/", (req, res) => { if (req.cookies.username) { @@ -20,39 +27,33 @@ app.get("/", (req, res) => { //go to chat myUserName = req.cookies.username; console.log("Cookie was stored"); - res.render("chatScreen"); + res.render("chatScreen", { username: myUserName }); } else { - //cont go to chat //login? //post data//then check the name they enter against names saved res.render("loginScreen"); } }); - app.post("/", (req, res) => { //check username that is entered //TODO: confirm req.body.name as syntax - if(!checkUserNameExist(req.body.name)) { + if (!checkUsernameExist(req.body.name)) { res.cookie("username", req.body.name); - - res.redirect('/'); + redisTools.storeUsername(req.body.name); + res.redirect("/"); } else { - window.alert("Your username exists"); - res.end(); + console.log("exists"); + //window.alert("Your username exists"); + //res.end(); } - - console.log(res.cookie["username"]); - + //console.log(res.cookie["username"]); }); -const checkUsernameExist = ( name ) => { +var checkUsernameExist = function(name) { return redisTools.getUsernames().includes(name); -} - - - +}; app.listen(port, () => { console.log("Serving!"); diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 82d29bd..210c84b 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -1,28 +1,24 @@ const redisClient = require("redis").createClient(); +redisClient.usernames = []; - -const { storeUsername } = { - storeUsername: (username) => { - return new Promise((resolve, reject) => { - redisClient.lpush("usernames", username, (err, reply) => { - if(err) reject(err); - // User data storage worked correctly - // redisClient.end() => do this if not working correctly - redisClient.push(username); - resolve(); - }) - }) - } -} - -getUsernames () => { +var storeUsername = function(username) { + return new Promise((resolve, reject) => { + redisClient.lpush("usernames", username, (err, reply) => { + if (err) reject(err); + // User data storage worked correctly + // redisClient.end() => do this if not working correctly + redisClient.usernames.push(username); + console.log(redisClient.usernames); + resolve(); + }); + }); +}; +var getUsernames = () => { return redisClient.usernames; -} - -redisClient.usernames = []; +}; storeUsername.usernames = redisClient.usernames; module.exports = { storeUsername, getUsernames -} +}; diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars new file mode 100644 index 0000000..fad5048 --- /dev/null +++ b/views/chatScreen.handlebars @@ -0,0 +1,21 @@ +Chat Here +
{{username}}
+

Chat Message here

+
+ + +
+ + From c50999b89959d5c56d1779b9591ee199661d9a45 Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Wed, 26 Jul 2017 13:03:51 -0500 Subject: [PATCH 09/32] working with sockets --- index.js | 23 +++++++++++++++++------ views/chatScreen.handlebars | 18 ++++++++++-------- views/layouts/main.handlebars | 11 ++++++++++- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index 0abc7eb..9782849 100644 --- a/index.js +++ b/index.js @@ -12,15 +12,26 @@ app.use(bodyParser.urlencoded({ extended: false })); app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); -var myUserName = "Word Eater was Here"; +let pathname = `${__dirname}/node_modules/socket.io-client/dist/`; +console.log(pathname); +app.use("/socket.io", express.static(pathname)); +app.use(bodyParser.urlencoded({extended: true})); + io.on("connection", client => { - console.log("connection"); - io.on("newChat", newMessage => { - console.log("new chat"); - io.emit(newMessage); - }); + console.log("connection made"); +//http://localhost:4000/socket.io/?EIO=3&transport=polling&t=Ls01klf 404 (Not Found) + // client.on("newChat", newMessage => { + // console.log("new chat"); + // io.emit("newChat", newMessage); + // }); + }); + +var myUserName = "Word Eater was Here"; + + + app.get("/", (req, res) => { if (req.cookies.username) { console.log(`username: ${req.cookies["username"]}`); diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index fad5048..870e36a 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -7,15 +7,17 @@ Chat Here diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars index f672463..648f9c5 100644 --- a/views/layouts/main.handlebars +++ b/views/layouts/main.handlebars @@ -6,6 +6,15 @@ Chat Room -{{{body}}} + {{{body}}} + + From 8a918df9abd0411a1da0233e4ae23cc69a022664 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 15:42:55 -0400 Subject: [PATCH 10/32] chat submitworks --- index.js | 18 +++++++----------- views/chatScreen.handlebars | 26 +++++++++++++------------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/index.js b/index.js index 9782849..d7fbebe 100644 --- a/index.js +++ b/index.js @@ -15,23 +15,19 @@ app.set("view engine", "handlebars"); let pathname = `${__dirname}/node_modules/socket.io-client/dist/`; console.log(pathname); app.use("/socket.io", express.static(pathname)); -app.use(bodyParser.urlencoded({extended: true})); +app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { console.log("connection made"); -//http://localhost:4000/socket.io/?EIO=3&transport=polling&t=Ls01klf 404 (Not Found) - // client.on("newChat", newMessage => { - // console.log("new chat"); - // io.emit("newChat", newMessage); - // }); - + //http://localhost:4000/socket.io/?EIO=3&transport=polling&t=Ls01klf 404 (Not Found) + client.on("newChat", newMessage => { + console.log(newMessage); + io.emit("newCshat", newMessage); + }); }); - var myUserName = "Word Eater was Here"; - - app.get("/", (req, res) => { if (req.cookies.username) { console.log(`username: ${req.cookies["username"]}`); @@ -66,6 +62,6 @@ var checkUsernameExist = function(name) { return redisTools.getUsernames().includes(name); }; -app.listen(port, () => { +server.listen(port, () => { console.log("Serving!"); }); diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index 870e36a..0498679 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -1,23 +1,23 @@ Chat Here
{{username}}

Chat Message here

-
- - -
+
+ + +
From 5404fbc269d3dfb7b346f2a5e34b99df2064471a Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Wed, 26 Jul 2017 14:59:26 -0500 Subject: [PATCH 11/32] socket is up to date --- index.js | 30 ++++++++++++------------------ public/js/chat_room.js | 20 ++++++++++++++++++++ views/chatScreen.handlebars | 25 ++++++------------------- views/layouts/main.handlebars | 9 --------- 4 files changed, 38 insertions(+), 46 deletions(-) create mode 100644 public/js/chat_room.js diff --git a/index.js b/index.js index 9782849..bbb6e05 100644 --- a/index.js +++ b/index.js @@ -2,35 +2,32 @@ const express = require("express"); const app = express(); const bodyParser = require("body-parser"); const hbs = require("express-handlebars"); + const server = require("http").createServer(app); const io = require("socket.io")(server); const cookieParser = require("cookie-parser"); -const port = 4000; const redisTools = require("./lib/redis_tools"); +const port = 4000; + app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); +app.use(express.static(`${__dirname}/public`)); let pathname = `${__dirname}/node_modules/socket.io-client/dist/`; console.log(pathname); app.use("/socket.io", express.static(pathname)); app.use(bodyParser.urlencoded({extended: true})); -io.on("connection", client => { - console.log("connection made"); -//http://localhost:4000/socket.io/?EIO=3&transport=polling&t=Ls01klf 404 (Not Found) - // client.on("newChat", newMessage => { - // console.log("new chat"); - // io.emit("newChat", newMessage); - // }); - -}); - - -var myUserName = "Word Eater was Here"; +io.on("connection", (client) => { + client.on("message", newMessage => { + console.log("new chat"); + io.emit("message", newMessage); + }); +}); app.get("/", (req, res) => { if (req.cookies.username) { @@ -46,6 +43,7 @@ app.get("/", (req, res) => { } }); + app.post("/", (req, res) => { //check username that is entered //TODO: confirm req.body.name as syntax @@ -55,17 +53,13 @@ app.post("/", (req, res) => { res.redirect("/"); } else { console.log("exists"); - //window.alert("Your username exists"); - //res.end(); } - - //console.log(res.cookie["username"]); }); var checkUsernameExist = function(name) { return redisTools.getUsernames().includes(name); }; -app.listen(port, () => { +server.listen(4000, () => { console.log("Serving!"); }); diff --git a/public/js/chat_room.js b/public/js/chat_room.js new file mode 100644 index 0000000..c4166d9 --- /dev/null +++ b/public/js/chat_room.js @@ -0,0 +1,20 @@ +const socket = io.connect("http://localhost:4000"); + +// $("#submitPost").submit((e) => { +// e.preventDefault(); +// socket.emit("newChat", $("#message").val()); +// console.log("also working"); +// }); + +$("#submitPost").on("click", (e) => { + e.preventDefault(); + socket.emit("message", $(".message").val()); +}); + + +socket.on("newMessage", (newChatMessage) => { + console.log("working"); + $("#PostedMessages").val() += newChatMessage; +}) + +// diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index 870e36a..e554862 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -1,23 +1,10 @@ Chat Here
{{username}}
-

Chat Message here

-
- - -
- - + diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars index 648f9c5..8babb37 100644 --- a/views/layouts/main.handlebars +++ b/views/layouts/main.handlebars @@ -8,13 +8,4 @@ {{{body}}} - - From 0a06459fc7c5f6d48bcdcf8581924f02f6ada35c Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 16:29:46 -0400 Subject: [PATCH 12/32] chat log works --- index.js | 7 ++++--- public/js/chat_room.js | 20 +++++++++++--------- views/chatScreen.handlebars | 4 ++-- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/index.js b/index.js index 0619ff6..f14da03 100644 --- a/index.js +++ b/index.js @@ -21,9 +21,10 @@ app.use("/socket.io", express.static(pathname)); app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { - client.on("message", newMessage => { - console.log("new chat"); - io.emit("message", newMessage); + client.on("newChatMessage", newMessage => { + console.log(newMessage); + + io.emit("newChatMessageFromServer", newMessage); }); }); diff --git a/public/js/chat_room.js b/public/js/chat_room.js index c4166d9..3b53297 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -6,15 +6,17 @@ const socket = io.connect("http://localhost:4000"); // console.log("also working"); // }); -$("#submitPost").on("click", (e) => { - e.preventDefault(); - socket.emit("message", $(".message").val()); +$("#submitPost").on("click", e => { + e.preventDefault(); + socket.emit("newChatMessage", { + userName: $(".storedName").text(), + message: $(".message").val() + }); }); +socket.on("newChatMessageFromServer", newChatMessage => { + console.log("working"); + $("#PostedMessages").text($("#PostedMessages").text() + newChatMessage); +}); -socket.on("newMessage", (newChatMessage) => { - console.log("working"); - $("#PostedMessages").val() += newChatMessage; -}) - -// +// diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index e554862..49b5fb1 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -1,7 +1,7 @@ Chat Here -
{{username}}
+
{{username}}
-

Chat Message here

+

Chat Message here

From 8367f04dfb084ceeb9b6b6799e1b778c4f46d86c Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Wed, 26 Jul 2017 16:01:11 -0500 Subject: [PATCH 13/32] added messages to redis --- index.js | 2 +- lib/redis_tools.js | 24 ++++++++++++++++++++++-- public/js/chat_room.js | 5 ++++- views/chatScreen.handlebars | 5 ++++- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index f14da03..c672d99 100644 --- a/index.js +++ b/index.js @@ -22,7 +22,7 @@ app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { client.on("newChatMessage", newMessage => { - console.log(newMessage); + redisTools.storeMessage(newMessage); io.emit("newChatMessageFromServer", newMessage); }); diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 210c84b..7e8fd6a 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -1,7 +1,7 @@ const redisClient = require("redis").createClient(); redisClient.usernames = []; -var storeUsername = function(username) { +const storeUsername = function(username) { return new Promise((resolve, reject) => { redisClient.lpush("usernames", username, (err, reply) => { if (err) reject(err); @@ -13,6 +13,25 @@ var storeUsername = function(username) { }); }); }; + +const storeMessage = function(messageObj) { + return new Promise((resolve, reject) => { + // console.log(messageObj); + // console.log(Object.keys(messageObj)); + redisClient.lpush("messages", { + username: messageObj.username, + message: messageObj.message + }) + if(err) reject(err); + console.log("working maybe"); + resolve(); + }) +} + +const getMessages = function() { + +} + var getUsernames = () => { return redisClient.usernames; }; @@ -20,5 +39,6 @@ storeUsername.usernames = redisClient.usernames; module.exports = { storeUsername, - getUsernames + getUsernames, + storeMessage }; diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 3b53297..59fd4c6 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -14,9 +14,12 @@ $("#submitPost").on("click", e => { }); }); + + socket.on("newChatMessageFromServer", newChatMessage => { console.log("working"); - $("#PostedMessages").text($("#PostedMessages").text() + newChatMessage); + $(".messages").append($(`

Author: ${newChatMessage.userName}

`)) + $(".messages").append($(`

Message: ${newChatMessage.message}

`)) }); // diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index 49b5fb1..6530a14 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -1,5 +1,7 @@ Chat Here -
{{username}}
+
{{username}}
+
+

Chat Message here

@@ -7,4 +9,5 @@ Chat Here
+ From 59abea383c350614591588ae57cc5d8b90a523f3 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 17:27:03 -0400 Subject: [PATCH 14/32] LRANGE 0 -1 for redis --- lib/redis_tools.js | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 7e8fd6a..4658acf 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -1,5 +1,5 @@ const redisClient = require("redis").createClient(); -redisClient.usernames = []; +//redisClient.usernames = redisClient.usernames || []; const storeUsername = function(username) { return new Promise((resolve, reject) => { @@ -7,8 +7,7 @@ const storeUsername = function(username) { if (err) reject(err); // User data storage worked correctly // redisClient.end() => do this if not working correctly - redisClient.usernames.push(username); - console.log(redisClient.usernames); + resolve(); }); }); @@ -18,19 +17,19 @@ const storeMessage = function(messageObj) { return new Promise((resolve, reject) => { // console.log(messageObj); // console.log(Object.keys(messageObj)); - redisClient.lpush("messages", { - username: messageObj.username, - message: messageObj.message - }) - if(err) reject(err); - console.log("working maybe"); - resolve(); - }) -} -const getMessages = function() { + // redisClient.lpush("messages", { + // username: messageObj.username, + // message: messageObj.message + // }); + redisClient.lpush("messages", messageObj.message); + if (err) reject(err); + console.log(redisClient.messages); + resolve(); + }); +}; -} +const getMessages = function() {}; var getUsernames = () => { return redisClient.usernames; From f7498f77cca9b3041af3d75fb3fa8251388f8651 Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Wed, 26 Jul 2017 17:08:40 -0500 Subject: [PATCH 15/32] get messages --- index.js | 28 ++++++++++++++++++++-------- lib/redis_tools.js | 44 +++++++++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/index.js b/index.js index c672d99..8214bd8 100644 --- a/index.js +++ b/index.js @@ -22,7 +22,15 @@ app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { client.on("newChatMessage", newMessage => { - redisTools.storeMessage(newMessage); + redisTools.storeMessage(newMessage) + .then(() => { + redisTools.getMessages() + }) + .then((data) => { + console.log(`data: ${data}`); + }, (err) => { + console.error(err); + }) io.emit("newChatMessageFromServer", newMessage); }); @@ -45,13 +53,17 @@ app.get("/", (req, res) => { app.post("/", (req, res) => { //check username that is entered //TODO: confirm req.body.name as syntax - if (!checkUsernameExist(req.body.name)) { - res.cookie("username", req.body.name); - redisTools.storeUsername(req.body.name); - res.redirect("/"); - } else { - console.log("exists"); - } + redisTools.getUsernames() + .then((usernames) => { + console.log(usernames); + if(!usernames.includes(req.body.name)) { + res.cookie("username", req.body.name); + redisTools.storeUsername(req.body.name); + res.redirect("/"); + } else { + res.end(); + } + }) }); var checkUsernameExist = function(name) { diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 4658acf..95e5a40 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -13,31 +13,41 @@ const storeUsername = function(username) { }); }; +// { +// username: messageObj.username, +// message: messageObj.message +// }.toString() + const storeMessage = function(messageObj) { return new Promise((resolve, reject) => { - // console.log(messageObj); - // console.log(Object.keys(messageObj)); - - // redisClient.lpush("messages", { - // username: messageObj.username, - // message: messageObj.message - // }); - redisClient.lpush("messages", messageObj.message); - if (err) reject(err); - console.log(redisClient.messages); - resolve(); + redisClient.lpush("messages", messageObj.message, (err, replay) => { + resolve(); + }); }); }; -const getMessages = function() {}; +const getMessages = () => { + return new Promise((resolve, reject) => { + redisClient.lrange("messages", 0, -1, (err, data) => { + if(err) reject(err); + console.log(data); + resolve(data); + }) + }) +} -var getUsernames = () => { - return redisClient.usernames; -}; -storeUsername.usernames = redisClient.usernames; +const getUsernames = () => { + return new Promise((resolve, reject) => { + redisClient.lrange("usernames", 0, -1, (err, data) => { + if(err) reject(err); + resolve(data); + }) + }) +} module.exports = { storeUsername, getUsernames, - storeMessage + storeMessage, + getMessages }; From f2c9bf4c447b376846581662b7ffdea14cf6f59e Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 18:09:08 -0400 Subject: [PATCH 16/32] what broke --- index.js | 94 ++++++++++++++++++---------------------------- lib/redis_tools.js | 2 +- 2 files changed, 38 insertions(+), 58 deletions(-) diff --git a/index.js b/index.js index c672d99..4658acf 100644 --- a/index.js +++ b/index.js @@ -1,63 +1,43 @@ -const express = require("express"); -const app = express(); -const bodyParser = require("body-parser"); -const hbs = require("express-handlebars"); - -const server = require("http").createServer(app); -const io = require("socket.io")(server); -const cookieParser = require("cookie-parser"); -const redisTools = require("./lib/redis_tools"); -const port = 4000; - -app.use(cookieParser()); -app.use(bodyParser.urlencoded({ extended: false })); -app.engine("handlebars", hbs({ defaultLayout: "main" })); -app.set("view engine", "handlebars"); -app.use(express.static(`${__dirname}/public`)); - -let pathname = `${__dirname}/node_modules/socket.io-client/dist/`; -console.log(pathname); -app.use("/socket.io", express.static(pathname)); -app.use(bodyParser.urlencoded({ extended: true })); - -io.on("connection", client => { - client.on("newChatMessage", newMessage => { - redisTools.storeMessage(newMessage); - - io.emit("newChatMessageFromServer", newMessage); +const redisClient = require("redis").createClient(); +//redisClient.usernames = redisClient.usernames || []; + +const storeUsername = function(username) { + return new Promise((resolve, reject) => { + redisClient.lpush("usernames", username, (err, reply) => { + if (err) reject(err); + // User data storage worked correctly + // redisClient.end() => do this if not working correctly + + resolve(); + }); }); -}); +}; -app.get("/", (req, res) => { - if (req.cookies.username) { - console.log(`username: ${req.cookies["username"]}`); - //go to chat - myUserName = req.cookies.username; - console.log("Cookie was stored"); - res.render("chatScreen", { username: myUserName }); - } else { - //cont go to chat //login? - //post data//then check the name they enter against names saved - res.render("loginScreen"); - } -}); +const storeMessage = function(messageObj) { + return new Promise((resolve, reject) => { + // console.log(messageObj); + // console.log(Object.keys(messageObj)); + + // redisClient.lpush("messages", { + // username: messageObj.username, + // message: messageObj.message + // }); + redisClient.lpush("messages", messageObj.message); + if (err) reject(err); + console.log(redisClient.messages); + resolve(); + }); +}; -app.post("/", (req, res) => { - //check username that is entered - //TODO: confirm req.body.name as syntax - if (!checkUsernameExist(req.body.name)) { - res.cookie("username", req.body.name); - redisTools.storeUsername(req.body.name); - res.redirect("/"); - } else { - console.log("exists"); - } -}); +const getMessages = function() {}; -var checkUsernameExist = function(name) { - return redisTools.getUsernames().includes(name); +var getUsernames = () => { + return redisClient.usernames; }; +storeUsername.usernames = redisClient.usernames; -server.listen(4000, () => { - console.log("Serving!"); -}); +module.exports = { + storeUsername, + getUsernames, + storeMessage +}; diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 4658acf..861273a 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -22,7 +22,7 @@ const storeMessage = function(messageObj) { // username: messageObj.username, // message: messageObj.message // }); - redisClient.lpush("messages", messageObj.message); + redisClient.lpush("messages", if (err) reject(err); console.log(redisClient.messages); resolve(); From 5f8969e8af58937d5e06fdf2a14d04a67173c6ad Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 18:32:57 -0400 Subject: [PATCH 17/32] loads last 10 on login --- index.js | 99 ++++++++++++++++--------------------- lib/redis_tools.js | 36 +++++--------- public/js/chat_room.js | 18 +++++-- views/chatScreen.handlebars | 10 ++-- 4 files changed, 75 insertions(+), 88 deletions(-) diff --git a/index.js b/index.js index 924719e..ced0f82 100644 --- a/index.js +++ b/index.js @@ -1,17 +1,3 @@ -<<<<<<< HEAD -const redisClient = require("redis").createClient(); -//redisClient.usernames = redisClient.usernames || []; - -const storeUsername = function(username) { - return new Promise((resolve, reject) => { - redisClient.lpush("usernames", username, (err, reply) => { - if (err) reject(err); - // User data storage worked correctly - // redisClient.end() => do this if not working correctly - - resolve(); - }); -======= const express = require("express"); const app = express(); const bodyParser = require("body-parser"); @@ -35,65 +21,66 @@ app.use("/socket.io", express.static(pathname)); app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { + redisTools.getMessages().then( + newData => { + io.emit("ChatFromLogin", newData); + console.log(newData); + } + // resolve(); + ); + client.on("newChatMessage", newMessage => { - redisTools.storeMessage(newMessage) - .then(() => { - redisTools.getMessages() - }) - .then((data) => { - console.log(`data: ${data}`); - }, (err) => { - console.error(err); - }) + redisTools + .storeMessage(newMessage) + .then(() => { + redisTools.getMessages(); + }) + .then( + data => { + console.log(`data: ${data}`); + }, + err => { + console.error(err); + } + ); io.emit("newChatMessageFromServer", newMessage); ->>>>>>> f7498f77cca9b3041af3d75fb3fa8251388f8651 }); -}; - -const storeMessage = function(messageObj) { - return new Promise((resolve, reject) => { - // console.log(messageObj); - // console.log(Object.keys(messageObj)); +}); - // redisClient.lpush("messages", { - // username: messageObj.username, - // message: messageObj.message - // }); - redisClient.lpush("messages", messageObj.message); - if (err) reject(err); - console.log(redisClient.messages); - resolve(); - }); -}; +app.get("/", (req, res) => { + if (req.cookies.username) { + console.log(`username: ${req.cookies["username"]}`); + //go to chat + myUserName = req.cookies.username; + console.log("Cookie was stored"); + res.render("chatScreen", { username: myUserName }); + } else { + //cont go to chat //login? + //post data//then check the name they enter against names saved + res.render("loginScreen"); + } +}); -<<<<<<< HEAD -const getMessages = function() {}; -======= app.post("/", (req, res) => { //check username that is entered //TODO: confirm req.body.name as syntax - redisTools.getUsernames() - .then((usernames) => { + redisTools.getUsernames().then(usernames => { console.log(usernames); - if(!usernames.includes(req.body.name)) { + if (!usernames.includes(req.body.name)) { res.cookie("username", req.body.name); redisTools.storeUsername(req.body.name); res.redirect("/"); } else { res.end(); } - }) + }); }); ->>>>>>> f7498f77cca9b3041af3d75fb3fa8251388f8651 -var getUsernames = () => { - return redisClient.usernames; +var checkUsernameExist = function(name) { + return redisTools.getUsernames().includes(name); }; -storeUsername.usernames = redisClient.usernames; -module.exports = { - storeUsername, - getUsernames, - storeMessage -}; +server.listen(4000, () => { + console.log("Serving!"); +}); diff --git a/lib/redis_tools.js b/lib/redis_tools.js index afab353..758b097 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -20,44 +20,32 @@ const storeUsername = function(username) { const storeMessage = function(messageObj) { return new Promise((resolve, reject) => { -<<<<<<< HEAD - // console.log(messageObj); - // console.log(Object.keys(messageObj)); - - // redisClient.lpush("messages", { - // username: messageObj.username, - // message: messageObj.message - // }); - redisClient.lpush("messages", - if (err) reject(err); - console.log(redisClient.messages); - resolve(); -======= - redisClient.lpush("messages", messageObj.message, (err, replay) => { + var str = messageObj.userName + " : " + messageObj.message; + redisClient.lpush("messages", str, (err, replay) => { resolve(); }); ->>>>>>> f7498f77cca9b3041af3d75fb3fa8251388f8651 }); }; const getMessages = () => { return new Promise((resolve, reject) => { - redisClient.lrange("messages", 0, -1, (err, data) => { - if(err) reject(err); + redisClient.lrange("messages", 0, -10, (err, data) => { + if (err) reject(err); console.log(data); resolve(data); - }) - }) -} + }); + }); +}; const getUsernames = () => { return new Promise((resolve, reject) => { redisClient.lrange("usernames", 0, -1, (err, data) => { - if(err) reject(err); + if (err) reject(err); + resolve(data); - }) - }) -} + }); + }); +}; module.exports = { storeUsername, diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 59fd4c6..36f6004 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -13,13 +13,23 @@ $("#submitPost").on("click", e => { message: $(".message").val() }); }); +socket.on("ChatFromLogin", newChatMessageArray => { + console.log("working"); + let k = 0; + while (k < newChatMessageArray.length) { + $(".messages").append($(`

${newChatMessageArray[k]}

`)); - - + k++; + } +}); socket.on("newChatMessageFromServer", newChatMessage => { console.log("working"); - $(".messages").append($(`

Author: ${newChatMessage.userName}

`)) - $(".messages").append($(`

Message: ${newChatMessage.message}

`)) + $(".messages").append( + $(`

Author: ${newChatMessage.userName}

`) + ); + $(".messages").append( + $(`

Message: ${newChatMessage.message}

`) + ); }); // diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index 6530a14..8f9711e 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -1,13 +1,15 @@ -Chat Here +Welcome
{{username}}
-
-
-

Chat Message here

+=============================
+============================= +
+
+

Chat Message here

From fbf1622e298a5086bf5979a36d383d88b0f68aef Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Wed, 26 Jul 2017 19:11:34 -0400 Subject: [PATCH 18/32] new message populate to top --- index.js | 8 ++++---- lib/redis_tools.js | 2 +- public/js/chat_room.js | 22 ++++++++++------------ styles.css | 3 +++ views/chatScreen.handlebars | 4 ++-- views/layouts/main.handlebars | 1 + 6 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 styles.css diff --git a/index.js b/index.js index ced0f82..ea492c9 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ app.set("view engine", "handlebars"); app.use(express.static(`${__dirname}/public`)); let pathname = `${__dirname}/node_modules/socket.io-client/dist/`; -console.log(pathname); +//console.log(pathname); app.use("/socket.io", express.static(pathname)); app.use(bodyParser.urlencoded({ extended: true })); @@ -24,7 +24,7 @@ io.on("connection", client => { redisTools.getMessages().then( newData => { io.emit("ChatFromLogin", newData); - console.log(newData); + //console.log(newData); } // resolve(); ); @@ -37,7 +37,7 @@ io.on("connection", client => { }) .then( data => { - console.log(`data: ${data}`); + //console.log(`data: ${data}`); }, err => { console.error(err); @@ -72,7 +72,7 @@ app.post("/", (req, res) => { redisTools.storeUsername(req.body.name); res.redirect("/"); } else { - res.end(); + //res.end(); } }); }); diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 758b097..5683dc5 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -31,7 +31,7 @@ const getMessages = () => { return new Promise((resolve, reject) => { redisClient.lrange("messages", 0, -10, (err, data) => { if (err) reject(err); - console.log(data); + //console.log(data); resolve(data); }); }); diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 36f6004..40a1380 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -1,11 +1,5 @@ const socket = io.connect("http://localhost:4000"); -// $("#submitPost").submit((e) => { -// e.preventDefault(); -// socket.emit("newChat", $("#message").val()); -// console.log("also working"); -// }); - $("#submitPost").on("click", e => { e.preventDefault(); socket.emit("newChatMessage", { @@ -23,13 +17,17 @@ socket.on("ChatFromLogin", newChatMessageArray => { } }); socket.on("newChatMessageFromServer", newChatMessage => { - console.log("working"); - $(".messages").append( - $(`

Author: ${newChatMessage.userName}

`) - ); - $(".messages").append( - $(`

Message: ${newChatMessage.message}

`) + var list = document.getElementById("msgList"); + var newItem = document.createElement("LI"); + + var textnode = document.createTextNode( + newChatMessage.userName + " : " + newChatMessage.message ); + newItem.appendChild(textnode); + list.insertBefore(newItem, list.childNodes[0]); + + //$(".messages").append($(`
  • Author: ${newChatMessage.userName}
  • `)); + //$(".messages").append($(`
  • Message: ${newChatMessage.message}
  • `)); }); // diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..2c2fb24 --- /dev/null +++ b/styles.css @@ -0,0 +1,3 @@ +li { + border: 3px solid #73ad21; +} diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index 8f9711e..a9bb151 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -7,8 +7,8 @@ Welcome
    ============================= -
    -
    +
      +

    Chat Message here

    diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars index 8babb37..b5b9a57 100644 --- a/views/layouts/main.handlebars +++ b/views/layouts/main.handlebars @@ -3,6 +3,7 @@ + Chat Room From 3dc22dbcc60168535faad932e0375dbcb01c662d Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 10:40:17 -0500 Subject: [PATCH 19/32] updated database --- index.js | 126 ++++++++++++++++++++--------------- lib/get_user_info.js | 28 ++++++++ lib/get_user_info_helpers.js | 20 ++++++ lib/redis_tools.js | 63 +++--------------- package.json | 5 ++ public/js/chat_room.js | 2 +- 6 files changed, 137 insertions(+), 107 deletions(-) create mode 100644 lib/get_user_info.js create mode 100644 lib/get_user_info_helpers.js diff --git a/index.js b/index.js index ced0f82..f9f8749 100644 --- a/index.js +++ b/index.js @@ -2,12 +2,13 @@ const express = require("express"); const app = express(); const bodyParser = require("body-parser"); const hbs = require("express-handlebars"); - const server = require("http").createServer(app); const io = require("socket.io")(server); const cookieParser = require("cookie-parser"); const redisTools = require("./lib/redis_tools"); -const port = 4000; + +// const { getUserIds, getUsername } = require("./lib/getUserInfo"); +const { getUsernames } = require("./lib/login_redis"); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); @@ -15,72 +16,91 @@ app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); app.use(express.static(`${__dirname}/public`)); -let pathname = `${__dirname}/node_modules/socket.io-client/dist/`; -console.log(pathname); -app.use("/socket.io", express.static(pathname)); -app.use(bodyParser.urlencoded({ extended: true })); - -io.on("connection", client => { - redisTools.getMessages().then( - newData => { - io.emit("ChatFromLogin", newData); - console.log(newData); - } - // resolve(); - ); - client.on("newChatMessage", newMessage => { - redisTools - .storeMessage(newMessage) - .then(() => { - redisTools.getMessages(); - }) - .then( - data => { - console.log(`data: ${data}`); - }, - err => { - console.error(err); - } - ); +app.use("/socket.io", express.static(`${__dirname}/node_modules/socket.io-client/dist/`)); +app.use(bodyParser.urlencoded({ extended: true })); - io.emit("newChatMessageFromServer", newMessage); - }); -}); +// io.on("connection", client => { +// redisTools.storeMessage("messages", +// +// ); +// console.log("working"); +// redisTools.getMessages() +// .then((messages) => { +// console.log(typeof messages[6]); +// }) +// +// redisTools.getMessages().then( +// newData => { +// io.emit("ChatFromLogin", newData); +// console.log(newData); +// } +// // resolve(); +// ); +// +// client.on("newChatMessage", newMessage => { +// redisTools +// .storeMessage(newMessage) +// .then(() => { +// redisTools.getMessages(); +// }) +// .then( +// data => { +// console.log(`data: ${data}`); +// }, +// err => { +// console.error(err); +// } +// ); +// +// io.emit("newChatMessageFromServer", newMessage); +// }); +// }); app.get("/", (req, res) => { if (req.cookies.username) { console.log(`username: ${req.cookies["username"]}`); - //go to chat myUserName = req.cookies.username; - console.log("Cookie was stored"); res.render("chatScreen", { username: myUserName }); } else { - //cont go to chat //login? - //post data//then check the name they enter against names saved res.render("loginScreen"); } }); app.post("/", (req, res) => { - //check username that is entered - //TODO: confirm req.body.name as syntax - redisTools.getUsernames().then(usernames => { - console.log(usernames); - if (!usernames.includes(req.body.name)) { - res.cookie("username", req.body.name); - redisTools.storeUsername(req.body.name); - res.redirect("/"); - } else { - res.end(); - } - }); + + // redisTools.generateUserInfo(req.body.name) + // .then(() => { + // console.log("successfully stored data"); + // console.log("getting userids"); + // return getUserIds() + // }) + // .then((userIds) => { + // console.log(`userIds: ${userIds}`); + // console.log(`randId: ${userIds[2]}`); + // return getUsername(userIds[2]) + // }) + // .then((randUsername) => { + // console.log(randUsername); + // res.end(); + // }) + + // redisTools.getUsernames().then(usernames => { + // console.log(usernames); + // if (!usernames.includes(req.body.name)) { + // res.cookie("username", req.body.name); + // redisTools.storeUsername(req.body.name); + // res.redirect("/"); + // } else { + // res.end(); + // } + // }); }); -var checkUsernameExist = function(name) { - return redisTools.getUsernames().includes(name); -}; +// var checkUsernameExist = function(name) { +// return redisTools.getUsernames().includes(name); +// }; -server.listen(4000, () => { - console.log("Serving!"); +server.listen(3000, () => { + console.log("Serving gormet lobster!"); }); diff --git a/lib/get_user_info.js b/lib/get_user_info.js new file mode 100644 index 0000000..9d71c7d --- /dev/null +++ b/lib/get_user_info.js @@ -0,0 +1,28 @@ +const redisClient = require("redis").createClient(); +const { getUsername, getUserIds } = require("./getUserInfo"); + +module.exports = { + storeUserId: (userId) => { + return new Promise((resolve, reject) => { + redisClient.lpush("USER_IDS", userId, (err, reply) => { + (err) ? reject(err) : resolve(userId); + }) + }) + }, + + storeUsername: (userId, username) => { + return new Promise((resolve, reject) => { + redisClient.set(userId, username, (err, reply) => { + (err) ? reject(err) : resolve(); + }); + }) + }, + + getUsernames: () => { + return(getUserIds().then((userIds) => { + return Promise.all(userIds.map((userId) => { + return getUsername(userId); + })) + })) + } +} diff --git a/lib/get_user_info_helpers.js b/lib/get_user_info_helpers.js new file mode 100644 index 0000000..af3a6d4 --- /dev/null +++ b/lib/get_user_info_helpers.js @@ -0,0 +1,20 @@ +const redisClient = require("redis").createClient(); + +module.exports = { + getUsername: (userId) => { + return new Promise((resolve, reject) => { + redisClient.get(userId, (err, username) => { + // console.log(username); + (err) ? reject(err) : resolve(username); + }) + }) + }, + + getUserIds: () => { + return new Promise((resolve, reject) => { + redisClient.lrange("USER_IDS", 0, -1, (err, userIds) => { + (err) ? reject(err) : resolve(userIds); + }) + }) + } +} diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 758b097..0dfcee3 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -1,55 +1,12 @@ -const redisClient = require("redis").createClient(); -//redisClient.usernames = redisClient.usernames || []; - -const storeUsername = function(username) { - return new Promise((resolve, reject) => { - redisClient.lpush("usernames", username, (err, reply) => { - if (err) reject(err); - // User data storage worked correctly - // redisClient.end() => do this if not working correctly - - resolve(); - }); - }); -}; - -// { -// username: messageObj.username, -// message: messageObj.message -// }.toString() - -const storeMessage = function(messageObj) { - return new Promise((resolve, reject) => { - var str = messageObj.userName + " : " + messageObj.message; - redisClient.lpush("messages", str, (err, replay) => { - resolve(); - }); - }); -}; - -const getMessages = () => { - return new Promise((resolve, reject) => { - redisClient.lrange("messages", 0, -10, (err, data) => { - if (err) reject(err); - console.log(data); - resolve(data); - }); - }); -}; - -const getUsernames = () => { - return new Promise((resolve, reject) => { - redisClient.lrange("usernames", 0, -1, (err, data) => { - if (err) reject(err); - - resolve(data); - }); - }); -}; +const loginRedisHelpers = require("./login_redis"); +const shortid = require("shortid"); module.exports = { - storeUsername, - getUsernames, - storeMessage, - getMessages -}; + generateUserInfo: (username) => { + const userId = shortid.generate(); + return (loginRedisHelpers.storeUserId(userId) + .then(userId => loginRedisHelpers.storeUsername(userId, username))) + } + + // GET ROOMS +} diff --git a/package.json b/package.json index ff2dd13..2db9eaa 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,12 @@ }, "homepage": "https://github.com/Alex-Willenbrink/project_superchat#readme", "dependencies": { + "body-parser": "^1.17.2", + "cookie-parser": "^1.4.3", + "express": "^4.15.3", + "express-handlebars": "^3.0.0", "redis": "^2.7.1", + "shortid": "^2.2.8", "socket.io": "^2.0.3" } } diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 36f6004..9d59a19 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -1,4 +1,4 @@ -const socket = io.connect("http://localhost:4000"); +const socket = io.connect("http://localhost:3000"); // $("#submitPost").submit((e) => { // e.preventDefault(); From edc3bedeb2e17a33cbf8b087af22f750055e67a1 Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 11:39:32 -0500 Subject: [PATCH 20/32] message memory updated --- index.js | 38 +++++++++++++++++++++++++++------- lib/get_room_info_helpers.js | 20 ++++++++++++++++++ lib/get_user_info.js | 2 +- lib/redis_tools.js | 15 +++++++++----- lib/room_info.js | 32 ++++++++++++++++++++++++++++ views/rooms_display.handlebars | 15 ++++++++++++++ 6 files changed, 108 insertions(+), 14 deletions(-) create mode 100644 lib/get_room_info_helpers.js create mode 100644 lib/room_info.js create mode 100644 views/rooms_display.handlebars diff --git a/index.js b/index.js index f9f8749..5fba1d6 100644 --- a/index.js +++ b/index.js @@ -7,8 +7,9 @@ const io = require("socket.io")(server); const cookieParser = require("cookie-parser"); const redisTools = require("./lib/redis_tools"); -// const { getUserIds, getUsername } = require("./lib/getUserInfo"); -const { getUsernames } = require("./lib/login_redis"); +// const { getUserIds, getUsername } = require("./lib/get_user_info"); +const { getUsernames } = require("./lib/get_user_info"); +const { generateUserInfo } = require("./lib/redis_tools"); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); @@ -59,15 +60,36 @@ app.use(bodyParser.urlencoded({ extended: true })); app.get("/", (req, res) => { if (req.cookies.username) { - console.log(`username: ${req.cookies["username"]}`); - myUserName = req.cookies.username; - res.render("chatScreen", { username: myUserName }); + res.redirect("/chatrooms"); } else { res.render("loginScreen"); } }); app.post("/", (req, res) => { + res.cookie("username", res.body.name); + + // Safety make sure we don't make 2 USER_IDS + getUsernames() + .then((usernames) => { + if(usernames.include(req.body.name)) { + res.cookie("username", res.body.name) + res.redirect("/"); + } else { + generateUserInfo() + .then(() => { + res.redirect("/"); + }) + } + }) +} + + + +app.get("/chatrooms", (req, res) => { + +}) + // redisTools.generateUserInfo(req.body.name) // .then(() => { @@ -97,9 +119,9 @@ app.post("/", (req, res) => { // }); }); -// var checkUsernameExist = function(name) { -// return redisTools.getUsernames().includes(name); -// }; + checkUsernameExist = function(name) { + +}; server.listen(3000, () => { console.log("Serving gormet lobster!"); diff --git a/lib/get_room_info_helpers.js b/lib/get_room_info_helpers.js new file mode 100644 index 0000000..4318dbb --- /dev/null +++ b/lib/get_room_info_helpers.js @@ -0,0 +1,20 @@ +const redisClient = require("redis").createClient(); + +module.exports = { + getRoomName: (roomId) => { + return new Promise((resolve, reject) => { + redisClient.get(roomId, (err, username) => { + // console.log(username); + (err) ? reject(err) : resolve(username); + }) + }) + }, + + getRoomIds: () => { + return new Promise((resolve, reject) => { + redisClient.lrange("ROOM_IDS", 0, -1, (err, roomIds) => { + (err) ? reject(err) : resolve(roomIds); + }) + }) + } +} diff --git a/lib/get_user_info.js b/lib/get_user_info.js index 9d71c7d..5d0707a 100644 --- a/lib/get_user_info.js +++ b/lib/get_user_info.js @@ -1,5 +1,5 @@ const redisClient = require("redis").createClient(); -const { getUsername, getUserIds } = require("./getUserInfo"); +const { getUsername, getUserIds } = require("./get_user_info_helpers"); module.exports = { storeUserId: (userId) => { diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 0dfcee3..5ff9e95 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -1,12 +1,17 @@ -const loginRedisHelpers = require("./login_redis"); +const usernameHelpers = require("./get_user_info"); +const chatroomHelpers = require("./room_info"); const shortid = require("shortid"); module.exports = { generateUserInfo: (username) => { const userId = shortid.generate(); - return (loginRedisHelpers.storeUserId(userId) - .then(userId => loginRedisHelpers.storeUsername(userId, username))) - } + return (usernameHelpers.storeUserId(userId) + .then(userId => usernameHelpers.storeUsername(userId, username))) + }, - // GET ROOMS + generateRoomInfo: (roomName) => { + const userId = shortid.generate(); + return (chatroomHelpers.storeRoomId(roomId) + .then(roomId => chatroomHelpers.storeRoomName(roomId, roomName))) + } } diff --git a/lib/room_info.js b/lib/room_info.js new file mode 100644 index 0000000..3ca0b5d --- /dev/null +++ b/lib/room_info.js @@ -0,0 +1,32 @@ +const redisClient = require("redis").createClient(); +const { getRoomName, getRoomIds } = require("./get_room_info_helpers"); + +module.exports = { + storeRoomId: (roomId) => { + return new Promise((resolve, reject) => { + redisClient.lpush("ROOM_IDS", roomId, (err, reply) => { + (err) + ? reject(err) + : resolve(userId); + }) + }) + }, + + storeRoomName: (roomId, roomName) => { + return new Promise((resolve, reject) => { + redisClient.set(roomId, roomName, (err, reply) => { + (err) + ? reject(err) + : resolve(); + }); + }) + }, + + getRooms: () => { + return (getRoomIds().then((userIds) => { + return Promise.all(userIds.map((userId) => { + return getUsername(userId); + })) + })) + } +} diff --git a/views/rooms_display.handlebars b/views/rooms_display.handlebars new file mode 100644 index 0000000..ee3b064 --- /dev/null +++ b/views/rooms_display.handlebars @@ -0,0 +1,15 @@ + +

    Chat Lobby

    +
    {{username}}
    + +
    + + +
    + + +
    + +
    + + From 72e2d2c11538717fd700e72a5f6190eaf9f293da Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Thu, 27 Jul 2017 13:30:33 -0400 Subject: [PATCH 21/32] unique login check --- index.js | 141 ++++++++++++------------------------- lib/get_user_info.js | 28 ++++---- lib/redis_tools.js | 22 ++---- public/js/chat_room.js | 7 ++ views/chatLobby.handlebars | 14 ++++ 5 files changed, 89 insertions(+), 123 deletions(-) create mode 100644 views/chatLobby.handlebars diff --git a/index.js b/index.js index bab8cf6..512f4aa 100644 --- a/index.js +++ b/index.js @@ -17,41 +17,12 @@ app.engine("handlebars", hbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); app.use(express.static(`${__dirname}/public`)); -<<<<<<< HEAD -let pathname = `${__dirname}/node_modules/socket.io-client/dist/`; -//console.log(pathname); -app.use("/socket.io", express.static(pathname)); +app.use( + "/socket.io", + express.static(`${__dirname}/node_modules/socket.io-client/dist/`) +); app.use(bodyParser.urlencoded({ extended: true })); -io.on("connection", client => { - redisTools.getMessages().then( - newData => { - io.emit("ChatFromLogin", newData); - //console.log(newData); - } - // resolve(); - ); - - client.on("newChatMessage", newMessage => { - redisTools - .storeMessage(newMessage) - .then(() => { - redisTools.getMessages(); - }) - .then( - data => { - //console.log(`data: ${data}`); - }, - err => { - console.error(err); - } - ); -======= - -app.use("/socket.io", express.static(`${__dirname}/node_modules/socket.io-client/dist/`)); -app.use(bodyParser.urlencoded({ extended: true })); ->>>>>>> 3dc22dbcc60168535faad932e0375dbcb01c662d - // io.on("connection", client => { // redisTools.storeMessage("messages", // @@ -90,6 +61,7 @@ app.use(bodyParser.urlencoded({ extended: true })); // }); app.get("/", (req, res) => { + console.log(req.cookies); if (req.cookies.username) { res.redirect("/chatrooms"); } else { @@ -98,79 +70,56 @@ app.get("/", (req, res) => { }); app.post("/", (req, res) => { -<<<<<<< HEAD -<<<<<<< HEAD - //check username that is entered - //TODO: confirm req.body.name as syntax - redisTools.getUsernames().then(usernames => { - console.log(usernames); - if (!usernames.includes(req.body.name)) { - res.cookie("username", req.body.name); - redisTools.storeUsername(req.body.name); - res.redirect("/"); - } else { - //res.end(); - } - }); -======= -======= - res.cookie("username", res.body.name); + console.log(req.body.name); + //res.cookie("username", req.body.name); // Safety make sure we don't make 2 USER_IDS - getUsernames() - .then((usernames) => { - if(usernames.include(req.body.name)) { - res.cookie("username", res.body.name) + getUsernames().then(usernames => { + console.log(usernames); + if (usernames.includes(req.body.name)) { res.redirect("/"); } else { - generateUserInfo() - .then(() => { - res.redirect("/"); - }) + res.cookie("username", req.body.name); + generateUserInfo(req.body.name).then(() => { + res.redirect("/"); + }); } - }) -} - - + }); +}); app.get("/chatrooms", (req, res) => { - -}) - ->>>>>>> edc3bedeb2e17a33cbf8b087af22f750055e67a1 - - // redisTools.generateUserInfo(req.body.name) - // .then(() => { - // console.log("successfully stored data"); - // console.log("getting userids"); - // return getUserIds() - // }) - // .then((userIds) => { - // console.log(`userIds: ${userIds}`); - // console.log(`randId: ${userIds[2]}`); - // return getUsername(userIds[2]) - // }) - // .then((randUsername) => { - // console.log(randUsername); - // res.end(); - // }) - - // redisTools.getUsernames().then(usernames => { - // console.log(usernames); - // if (!usernames.includes(req.body.name)) { - // res.cookie("username", req.body.name); - // redisTools.storeUsername(req.body.name); - // res.redirect("/"); - // } else { - // res.end(); - // } - // }); ->>>>>>> 3dc22dbcc60168535faad932e0375dbcb01c662d + res.render("chatLobby", { username: req.cookie.username }); }); - checkUsernameExist = function(name) { +// redisTools.generateUserInfo(req.body.name) +// .then(() => { +// console.log("successfully stored data"); +// console.log("getting userids"); +// return getUserIds() +// }) +// .then((userIds) => { +// console.log(`userIds: ${userIds}`); +// console.log(`randId: ${userIds[2]}`); +// return getUsername(userIds[2]) +// }) +// .then((randUsername) => { +// console.log(randUsername); +// res.end(); +// }) + +// redisTools.getUsernames().then(usernames => { +// console.log(usernames); +// if (!usernames.includes(req.body.name)) { +// res.cookie("username", req.body.name); +// redisTools.storeUsername(req.body.name); +// res.redirect("/"); +// } else { +// res.end(); +// } +// }); +//}); -}; +checkUsernameExist = function(name) {}; server.listen(3000, () => { console.log("Serving gormet lobster!"); diff --git a/lib/get_user_info.js b/lib/get_user_info.js index 5d0707a..05d7229 100644 --- a/lib/get_user_info.js +++ b/lib/get_user_info.js @@ -2,27 +2,31 @@ const redisClient = require("redis").createClient(); const { getUsername, getUserIds } = require("./get_user_info_helpers"); module.exports = { - storeUserId: (userId) => { + storeUserId: userId => { return new Promise((resolve, reject) => { redisClient.lpush("USER_IDS", userId, (err, reply) => { - (err) ? reject(err) : resolve(userId); - }) - }) + err ? reject(err) : resolve(userId); + }); + }); }, storeUsername: (userId, username) => { return new Promise((resolve, reject) => { + console.log(userId); + console.log(username); redisClient.set(userId, username, (err, reply) => { - (err) ? reject(err) : resolve(); + err ? reject(err) : resolve(); }); - }) + }); }, getUsernames: () => { - return(getUserIds().then((userIds) => { - return Promise.all(userIds.map((userId) => { - return getUsername(userId); - })) - })) + return getUserIds().then(userIds => { + return Promise.all( + userIds.map(userId => { + return getUsername(userId); + }) + ); + }); } -} +}; diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 3df9567..c135eaa 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -5,23 +5,15 @@ const shortid = require("shortid"); module.exports = { generateUserInfo: username => { const userId = shortid.generate(); -<<<<<<< HEAD - return loginRedisHelpers + return usernameHelpers .storeUserId(userId) - .then(userId => loginRedisHelpers.storeUsername(userId, username)); - } - - // GET ROOMS -}; -======= - return (usernameHelpers.storeUserId(userId) - .then(userId => usernameHelpers.storeUsername(userId, username))) + .then(userId => usernameHelpers.storeUsername(userId, username)); }, - generateRoomInfo: (roomName) => { + generateRoomInfo: roomName => { const userId = shortid.generate(); - return (chatroomHelpers.storeRoomId(roomId) - .then(roomId => chatroomHelpers.storeRoomName(roomId, roomName))) + return chatroomHelpers + .storeRoomId(roomId) + .then(roomId => chatroomHelpers.storeRoomName(roomId, roomName)); } -} ->>>>>>> edc3bedeb2e17a33cbf8b087af22f750055e67a1 +}; diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 15f07b5..a2f86c0 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -1,5 +1,12 @@ const socket = io.connect("http://localhost:3000"); +$("#createRoom").on("click", e => { + e.preventDefault(); + socket.emit("newChatRoom", { + roomName: $(".roomName").text() + }); +}); + $("#submitPost").on("click", e => { e.preventDefault(); socket.emit("newChatMessage", { diff --git a/views/chatLobby.handlebars b/views/chatLobby.handlebars new file mode 100644 index 0000000..da9121b --- /dev/null +++ b/views/chatLobby.handlebars @@ -0,0 +1,14 @@ +Welcome +
    {{username}}
    + +============================= +
    + + +
    +============================= +
      +
    + + + From aa75a75eaa253e6b2d9ea5fb9d8d4f6d5d4a92ae Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 12:59:31 -0500 Subject: [PATCH 22/32] still working --- index.js | 83 +++++++---------------------------- public/js/chat_room.js | 44 +++++++++---------- views/chatLobby.handlebars | 2 +- views/layouts/main.handlebars | 1 - 4 files changed, 38 insertions(+), 92 deletions(-) diff --git a/index.js b/index.js index 512f4aa..684ae98 100644 --- a/index.js +++ b/index.js @@ -9,7 +9,7 @@ const redisTools = require("./lib/redis_tools"); // const { getUserIds, getUsername } = require("./lib/get_user_info"); const { getUsernames } = require("./lib/get_user_info"); -const { generateUserInfo } = require("./lib/redis_tools"); +const { generateUserInfo, generateRoomInfo } = require("./lib/redis_tools"); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); @@ -23,42 +23,17 @@ app.use( ); app.use(bodyParser.urlencoded({ extended: true })); -// io.on("connection", client => { -// redisTools.storeMessage("messages", -// -// ); -// console.log("working"); -// redisTools.getMessages() -// .then((messages) => { -// console.log(typeof messages[6]); -// }) -// -// redisTools.getMessages().then( -// newData => { -// io.emit("ChatFromLogin", newData); -// console.log(newData); -// } -// // resolve(); -// ); -// -// client.on("newChatMessage", newMessage => { -// redisTools -// .storeMessage(newMessage) -// .then(() => { -// redisTools.getMessages(); -// }) -// .then( -// data => { -// console.log(`data: ${data}`); -// }, -// err => { -// console.error(err); -// } -// ); -// -// io.emit("newChatMessageFromServer", newMessage); -// }); -// }); +io.on("connection", client => { + + client.on("newChatRoom", newChatRoom => { + io.emit("newChatRoomFromServer", newChatRoom); + console.log(`newchatRoom: ${newChatRoom}`); + generateRoomInfo(newChatRoom) + .then(() => { + console.log("worked"); + }) + }); +}); app.get("/", (req, res) => { console.log(req.cookies); @@ -71,6 +46,7 @@ app.get("/", (req, res) => { app.post("/", (req, res) => { console.log(req.body.name); + res.cookie("username", req.body.name); //res.cookie("username", req.body.name); // Safety make sure we don't make 2 USER_IDS @@ -79,7 +55,7 @@ app.post("/", (req, res) => { if (usernames.includes(req.body.name)) { res.redirect("/"); } else { - res.cookie("username", req.body.name); + generateUserInfo(req.body.name).then(() => { res.redirect("/"); }); @@ -88,38 +64,9 @@ app.post("/", (req, res) => { }); app.get("/chatrooms", (req, res) => { - res.render("chatLobby", { username: req.cookie.username }); + res.render("chatLobby", { username: req.cookies.username }); }); -// redisTools.generateUserInfo(req.body.name) -// .then(() => { -// console.log("successfully stored data"); -// console.log("getting userids"); -// return getUserIds() -// }) -// .then((userIds) => { -// console.log(`userIds: ${userIds}`); -// console.log(`randId: ${userIds[2]}`); -// return getUsername(userIds[2]) -// }) -// .then((randUsername) => { -// console.log(randUsername); -// res.end(); -// }) - -// redisTools.getUsernames().then(usernames => { -// console.log(usernames); -// if (!usernames.includes(req.body.name)) { -// res.cookie("username", req.body.name); -// redisTools.storeUsername(req.body.name); -// res.redirect("/"); -// } else { -// res.end(); -// } -// }); -//}); - -checkUsernameExist = function(name) {}; server.listen(3000, () => { console.log("Serving gormet lobster!"); diff --git a/public/js/chat_room.js b/public/js/chat_room.js index a2f86c0..acbfca9 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -2,28 +2,13 @@ const socket = io.connect("http://localhost:3000"); $("#createRoom").on("click", e => { e.preventDefault(); - socket.emit("newChatRoom", { - roomName: $(".roomName").text() - }); + console.log($(".roomName").text()); + socket.emit("newChatRoom", $(".roomName").text()); }); -$("#submitPost").on("click", e => { - e.preventDefault(); - socket.emit("newChatMessage", { - userName: $(".storedName").text(), - message: $(".message").val() - }); -}); -socket.on("ChatFromLogin", newChatMessageArray => { - console.log("working"); - let k = 0; - while (k < newChatMessageArray.length) { - $(".messages").append($(`

    ${newChatMessageArray[k]}

    `)); - k++; - } -}); -socket.on("newChatMessageFromServer", newChatMessage => { +socket.on("newChatRoomFromServer", newChatRoom => { + console.log("working Here"); var list = document.getElementById("msgList"); var newItem = document.createElement("LI"); @@ -32,9 +17,24 @@ socket.on("newChatMessageFromServer", newChatMessage => { ); newItem.appendChild(textnode); list.insertBefore(newItem, list.childNodes[0]); - - //$(".messages").append($(`
  • Author: ${newChatMessage.userName}
  • `)); - //$(".messages").append($(`
  • Message: ${newChatMessage.message}
  • `)); }); +// $("#submitPost").on("click", e => { +// e.preventDefault(); +// socket.emit("newChatMessage", { +// userName: $(".storedName").text(), +// message: $(".message").val() +// }); +// }); +// socket.on("ChatFromLogin", newChatMessageArray => { +// console.log("working"); +// let k = 0; +// while (k < newChatMessageArray.length) { +// $(".messages").append($(`

    ${newChatMessageArray[k]}

    `)); +// +// k++; +// } +// }); + + // diff --git a/views/chatLobby.handlebars b/views/chatLobby.handlebars index da9121b..d343c5a 100644 --- a/views/chatLobby.handlebars +++ b/views/chatLobby.handlebars @@ -3,7 +3,7 @@ Welcome =============================
    - +
    ============================= diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars index b5b9a57..8babb37 100644 --- a/views/layouts/main.handlebars +++ b/views/layouts/main.handlebars @@ -3,7 +3,6 @@ - Chat Room From bf773d7342de1ded7c025660a419552274c7d495 Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 13:41:02 -0500 Subject: [PATCH 23/32] working version (show for demonstration purposes) --- index.js | 9 ++++++++ lib/get_room_info_helpers.js | 1 - lib/redis_tools.js | 2 +- lib/room_info.js | 10 ++++----- npm-debug.log | 27 ++++++++++++++++++++++++ public/js/chat_room.js | 40 +++++++++--------------------------- views/chatLobby.handlebars | 4 ++-- 7 files changed, 54 insertions(+), 39 deletions(-) create mode 100644 npm-debug.log diff --git a/index.js b/index.js index 684ae98..a0b9b11 100644 --- a/index.js +++ b/index.js @@ -9,6 +9,7 @@ const redisTools = require("./lib/redis_tools"); // const { getUserIds, getUsername } = require("./lib/get_user_info"); const { getUsernames } = require("./lib/get_user_info"); +const { getRoomNames } = require("./lib/room_info"); const { generateUserInfo, generateRoomInfo } = require("./lib/redis_tools"); app.use(cookieParser()); @@ -25,6 +26,14 @@ app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { + // send all current chats to rooms + + getRoomNames() + .then((roomNames) => { + client.emit("updateRooms", roomNames); + }) + + client.on("newChatRoom", newChatRoom => { io.emit("newChatRoomFromServer", newChatRoom); console.log(`newchatRoom: ${newChatRoom}`); diff --git a/lib/get_room_info_helpers.js b/lib/get_room_info_helpers.js index 4318dbb..436bfeb 100644 --- a/lib/get_room_info_helpers.js +++ b/lib/get_room_info_helpers.js @@ -4,7 +4,6 @@ module.exports = { getRoomName: (roomId) => { return new Promise((resolve, reject) => { redisClient.get(roomId, (err, username) => { - // console.log(username); (err) ? reject(err) : resolve(username); }) }) diff --git a/lib/redis_tools.js b/lib/redis_tools.js index c135eaa..02c7ca8 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -11,7 +11,7 @@ module.exports = { }, generateRoomInfo: roomName => { - const userId = shortid.generate(); + const roomId = shortid.generate(); return chatroomHelpers .storeRoomId(roomId) .then(roomId => chatroomHelpers.storeRoomName(roomId, roomName)); diff --git a/lib/room_info.js b/lib/room_info.js index 3ca0b5d..71b5c0c 100644 --- a/lib/room_info.js +++ b/lib/room_info.js @@ -7,7 +7,7 @@ module.exports = { redisClient.lpush("ROOM_IDS", roomId, (err, reply) => { (err) ? reject(err) - : resolve(userId); + : resolve(roomId); }) }) }, @@ -22,10 +22,10 @@ module.exports = { }) }, - getRooms: () => { - return (getRoomIds().then((userIds) => { - return Promise.all(userIds.map((userId) => { - return getUsername(userId); + getRoomNames: () => { + return (getRoomIds().then((roomIds) => { + return Promise.all(roomIds.map((roomId) => { + return getRoomName(roomId); })) })) } diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 0000000..9e8bcb3 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,27 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/home/alex/.nvm/versions/node/v6.0.0/bin/node', +1 verbose cli '/home/alex/.nvm/versions/node/v6.0.0/bin/npm', +1 verbose cli 'run', +1 verbose cli 'init' ] +2 info using npm@3.8.6 +3 info using node@v6.0.0 +4 verbose stack Error: missing script: init +4 verbose stack at run (/home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/lib/run-script.js:147:19) +4 verbose stack at /home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/lib/run-script.js:57:5 +4 verbose stack at /home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:345:5 +4 verbose stack at checkBinReferences_ (/home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:309:45) +4 verbose stack at final (/home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:343:3) +4 verbose stack at then (/home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:113:5) +4 verbose stack at /home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/node_modules/read-package-json/read-json.js:300:12 +4 verbose stack at /home/alex/.nvm/versions/node/v6.0.0/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16 +4 verbose stack at tryToString (fs.js:449:3) +4 verbose stack at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436:12) +5 verbose cwd /home/alex/vcs/assignments_course/project_superchat +6 error Linux 4.10.0-27-generic +7 error argv "/home/alex/.nvm/versions/node/v6.0.0/bin/node" "/home/alex/.nvm/versions/node/v6.0.0/bin/npm" "run" "init" +8 error node v6.0.0 +9 error npm v3.8.6 +10 error missing script: init +11 error If you need help, you may report this error at: +11 error +12 verbose exit [ 1, true ] diff --git a/public/js/chat_room.js b/public/js/chat_room.js index acbfca9..9389080 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -2,39 +2,19 @@ const socket = io.connect("http://localhost:3000"); $("#createRoom").on("click", e => { e.preventDefault(); - console.log($(".roomName").text()); - socket.emit("newChatRoom", $(".roomName").text()); + socket.emit("newChatRoom", $(".roomName").val()); }); - +// Will add button of new chat room socket.on("newChatRoomFromServer", newChatRoom => { console.log("working Here"); - var list = document.getElementById("msgList"); - var newItem = document.createElement("LI"); - - var textnode = document.createTextNode( - newChatMessage.userName + " : " + newChatMessage.message - ); - newItem.appendChild(textnode); - list.insertBefore(newItem, list.childNodes[0]); + $("#ChatRoomList").append($(``)); }); -// $("#submitPost").on("click", e => { -// e.preventDefault(); -// socket.emit("newChatMessage", { -// userName: $(".storedName").text(), -// message: $(".message").val() -// }); -// }); -// socket.on("ChatFromLogin", newChatMessageArray => { -// console.log("working"); -// let k = 0; -// while (k < newChatMessageArray.length) { -// $(".messages").append($(`

    ${newChatMessageArray[k]}

    `)); -// -// k++; -// } -// }); - - -// +socket.on("updateRooms", roomNames => { + console.log(roomNames); + console.log("Wow, so many rooms"); + roomNames.forEach((roomName) => { + $("#ChatRoomList").append($(``)); + }) +}) diff --git a/views/chatLobby.handlebars b/views/chatLobby.handlebars index d343c5a..0782ac0 100644 --- a/views/chatLobby.handlebars +++ b/views/chatLobby.handlebars @@ -7,8 +7,8 @@ Welcome ============================= -
      -
    +
    +
    From d74df601d750fa61d1ab68d0449efa4bef4c0184 Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 14:53:51 -0500 Subject: [PATCH 24/32] started messages --- index.js | 3 +-- lib/redis_messages.js | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 lib/redis_messages.js diff --git a/index.js b/index.js index a0b9b11..fd50113 100644 --- a/index.js +++ b/index.js @@ -25,9 +25,8 @@ app.use( app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { - + // send all current chats to rooms - getRoomNames() .then((roomNames) => { client.emit("updateRooms", roomNames); diff --git a/lib/redis_messages.js b/lib/redis_messages.js new file mode 100644 index 0000000..e33a61d --- /dev/null +++ b/lib/redis_messages.js @@ -0,0 +1,25 @@ +// get messages by room +// get message by id +// get all messages +// store message +const redisClient = require("redis").createClient(); + +module.exports = { + storeMessageId: (messageId) { + return new Promise((resolve, reject) => { + redisClient.lpush("MESSAGE") + }) + } + + + storeMessage: (messageId, message, userId, roomId) { + return new Promise((resolve, reject) => { + redisClient.hmset(messageId, { + message: message, + userId: userId, + roomId: roomId + }) + }) + }, + +} From bb566062840e00a24ced24e59f3ae5ba9a3e28ce Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Thu, 27 Jul 2017 16:09:29 -0400 Subject: [PATCH 25/32] borked --- index.js | 87 ++++++++++++-------------------------------------------- 1 file changed, 18 insertions(+), 69 deletions(-) diff --git a/index.js b/index.js index 512f4aa..9f1b993 100644 --- a/index.js +++ b/index.js @@ -9,7 +9,8 @@ const redisTools = require("./lib/redis_tools"); // const { getUserIds, getUsername } = require("./lib/get_user_info"); const { getUsernames } = require("./lib/get_user_info"); -const { generateUserInfo } = require("./lib/redis_tools"); +const { getRoomNames } = require("./lib/room_info"); +const { generateUserInfo, generateRoomInfo } = require("./lib/redis_tools"); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); @@ -23,42 +24,20 @@ app.use( ); app.use(bodyParser.urlencoded({ extended: true })); -// io.on("connection", client => { -// redisTools.storeMessage("messages", -// -// ); -// console.log("working"); -// redisTools.getMessages() -// .then((messages) => { -// console.log(typeof messages[6]); -// }) -// -// redisTools.getMessages().then( -// newData => { -// io.emit("ChatFromLogin", newData); -// console.log(newData); -// } -// // resolve(); -// ); -// -// client.on("newChatMessage", newMessage => { -// redisTools -// .storeMessage(newMessage) -// .then(() => { -// redisTools.getMessages(); -// }) -// .then( -// data => { -// console.log(`data: ${data}`); -// }, -// err => { -// console.error(err); -// } -// ); -// -// io.emit("newChatMessageFromServer", newMessage); -// }); -// }); +io.on("connection", client => { + // send all current chats to rooms + getRoomNames().then(roomNames => { + client.emit("updateRooms", roomNames); + }); + + client.on("newChatRoom", newChatRoom => { + io.emit("newChatRoomFromServer", newChatRoom); + console.log(`newchatRoom: ${newChatRoom}`); + generateRoomInfo(newChatRoom).then(() => { + console.log("worked"); + }); + }); +}); app.get("/", (req, res) => { console.log(req.cookies); @@ -71,6 +50,7 @@ app.get("/", (req, res) => { app.post("/", (req, res) => { console.log(req.body.name); + res.cookie("username", req.body.name); //res.cookie("username", req.body.name); // Safety make sure we don't make 2 USER_IDS @@ -79,7 +59,6 @@ app.post("/", (req, res) => { if (usernames.includes(req.body.name)) { res.redirect("/"); } else { - res.cookie("username", req.body.name); generateUserInfo(req.body.name).then(() => { res.redirect("/"); }); @@ -88,39 +67,9 @@ app.post("/", (req, res) => { }); app.get("/chatrooms", (req, res) => { - res.render("chatLobby", { username: req.cookie.username }); + res.render("chatLobby", { username: req.cookies.username }); }); -// redisTools.generateUserInfo(req.body.name) -// .then(() => { -// console.log("successfully stored data"); -// console.log("getting userids"); -// return getUserIds() -// }) -// .then((userIds) => { -// console.log(`userIds: ${userIds}`); -// console.log(`randId: ${userIds[2]}`); -// return getUsername(userIds[2]) -// }) -// .then((randUsername) => { -// console.log(randUsername); -// res.end(); -// }) - -// redisTools.getUsernames().then(usernames => { -// console.log(usernames); -// if (!usernames.includes(req.body.name)) { -// res.cookie("username", req.body.name); -// redisTools.storeUsername(req.body.name); -// res.redirect("/"); -// } else { -// res.end(); -// } -// }); -//}); - -checkUsernameExist = function(name) {}; - server.listen(3000, () => { console.log("Serving gormet lobster!"); }); From 321da3a69899fc16881a8b0b304b7754e9a9b0d8 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Thu, 27 Jul 2017 16:11:44 -0400 Subject: [PATCH 26/32] should work --- index.js | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/index.js b/index.js index 2b84879..9f1b993 100644 --- a/index.js +++ b/index.js @@ -25,34 +25,17 @@ app.use( app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { -<<<<<<< HEAD // send all current chats to rooms getRoomNames().then(roomNames => { client.emit("updateRooms", roomNames); }); -======= - - // send all current chats to rooms - getRoomNames() - .then((roomNames) => { - client.emit("updateRooms", roomNames); - }) - ->>>>>>> d74df601d750fa61d1ab68d0449efa4bef4c0184 client.on("newChatRoom", newChatRoom => { io.emit("newChatRoomFromServer", newChatRoom); console.log(`newchatRoom: ${newChatRoom}`); -<<<<<<< HEAD generateRoomInfo(newChatRoom).then(() => { console.log("worked"); }); -======= - generateRoomInfo(newChatRoom) - .then(() => { - console.log("worked"); - }) ->>>>>>> d74df601d750fa61d1ab68d0449efa4bef4c0184 }); }); @@ -76,10 +59,6 @@ app.post("/", (req, res) => { if (usernames.includes(req.body.name)) { res.redirect("/"); } else { -<<<<<<< HEAD -======= - ->>>>>>> d74df601d750fa61d1ab68d0449efa4bef4c0184 generateUserInfo(req.body.name).then(() => { res.redirect("/"); }); @@ -91,10 +70,6 @@ app.get("/chatrooms", (req, res) => { res.render("chatLobby", { username: req.cookies.username }); }); -<<<<<<< HEAD -======= - ->>>>>>> d74df601d750fa61d1ab68d0449efa4bef4c0184 server.listen(3000, () => { console.log("Serving gormet lobster!"); }); From b5d6ca8c634c074ba299d3534369267706d9433c Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 15:36:26 -0500 Subject: [PATCH 27/32] adding chatscreen --- index.js | 19 ++++++++++++++----- public/js/chat_room.js | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 9f1b993..fc451af 100644 --- a/index.js +++ b/index.js @@ -22,6 +22,7 @@ app.use( "/socket.io", express.static(`${__dirname}/node_modules/socket.io-client/dist/`) ); + app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { @@ -39,13 +40,10 @@ io.on("connection", client => { }); }); + app.get("/", (req, res) => { console.log(req.cookies); - if (req.cookies.username) { - res.redirect("/chatrooms"); - } else { - res.render("loginScreen"); - } + (req.cookies.username) ? (res.redirect("/chatrooms")) : (res.render("loginScreen")) }); app.post("/", (req, res) => { @@ -70,6 +68,17 @@ app.get("/chatrooms", (req, res) => { res.render("chatLobby", { username: req.cookies.username }); }); +app.get("/chatrooms/:chatroom", (req, res) => { + let chatRoom = req.params.chatroom; + console.log(req.params.chatroom); + if(req.cookies.username) { + res.redirect("/"); + } + + res.render("chatScreen", { roomName: chatRoom }); + +}) + server.listen(3000, () => { console.log("Serving gormet lobster!"); }); diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 9389080..a6c9a2b 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -8,6 +8,7 @@ $("#createRoom").on("click", e => { // Will add button of new chat room socket.on("newChatRoomFromServer", newChatRoom => { console.log("working Here"); + let chatButton = createRoom(roomName); $("#ChatRoomList").append($(``)); }); @@ -15,6 +16,18 @@ socket.on("updateRooms", roomNames => { console.log(roomNames); console.log("Wow, so many rooms"); roomNames.forEach((roomName) => { - $("#ChatRoomList").append($(``)); + let chatButton = createRoom(roomName); + console.log(chatButton); + $("#ChatRoomList").append($(`${chatButton}`)); }) }) + +function createRoom(roomName) { + return` +
    +
    + +
    +
    + ` +} From 5c07ef8728b570e1fec781f383e2b2324a57d782 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Thu, 27 Jul 2017 17:02:04 -0400 Subject: [PATCH 28/32] working on messages --- index.js | 16 +++++++++------- lib/redis_messages.js | 8 +++++--- lib/redis_tools.js | 4 ++++ public/js/chat_room.js | 14 +++++++------- views/chatScreen.handlebars | 2 +- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/index.js b/index.js index fc451af..3cb5d35 100644 --- a/index.js +++ b/index.js @@ -26,6 +26,7 @@ app.use( app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { + // /client.on(); // send all current chats to rooms getRoomNames().then(roomNames => { client.emit("updateRooms", roomNames); @@ -40,10 +41,9 @@ io.on("connection", client => { }); }); - app.get("/", (req, res) => { console.log(req.cookies); - (req.cookies.username) ? (res.redirect("/chatrooms")) : (res.render("loginScreen")) + req.cookies.username ? res.redirect("/chatrooms") : res.render("loginScreen"); }); app.post("/", (req, res) => { @@ -71,13 +71,15 @@ app.get("/chatrooms", (req, res) => { app.get("/chatrooms/:chatroom", (req, res) => { let chatRoom = req.params.chatroom; console.log(req.params.chatroom); - if(req.cookies.username) { + if (!req.cookies.username) { res.redirect("/"); + } else { + res.render("chatScreen", { + roomName: chatRoom, + username: req.cookies.username + }); } - - res.render("chatScreen", { roomName: chatRoom }); - -}) +}); server.listen(3000, () => { console.log("Serving gormet lobster!"); diff --git a/lib/redis_messages.js b/lib/redis_messages.js index e33a61d..93f6859 100644 --- a/lib/redis_messages.js +++ b/lib/redis_messages.js @@ -7,9 +7,10 @@ const redisClient = require("redis").createClient(); module.exports = { storeMessageId: (messageId) { return new Promise((resolve, reject) => { - redisClient.lpush("MESSAGE") + redisClient.lpush("MESSAGE",messageId, + (error,data) => {if(error) throw error; resolve();}); }) - } + }, storeMessage: (messageId, message, userId, roomId) { @@ -18,7 +19,8 @@ module.exports = { message: message, userId: userId, roomId: roomId - }) + }, (error,data) => {if(error) throw error; resolve();}) + }) }, diff --git a/lib/redis_tools.js b/lib/redis_tools.js index 02c7ca8..dd1ecbc 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -1,5 +1,6 @@ const usernameHelpers = require("./get_user_info"); const chatroomHelpers = require("./room_info"); +const messageHelpers = require("./redis_messages"); const shortid = require("shortid"); module.exports = { @@ -15,5 +16,8 @@ module.exports = { return chatroomHelpers .storeRoomId(roomId) .then(roomId => chatroomHelpers.storeRoomName(roomId, roomName)); + }, + generateMessageInfo: message => { + const messageId = shortid.generate(); } }; diff --git a/public/js/chat_room.js b/public/js/chat_room.js index a6c9a2b..27a9da5 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -8,26 +8,26 @@ $("#createRoom").on("click", e => { // Will add button of new chat room socket.on("newChatRoomFromServer", newChatRoom => { console.log("working Here"); - let chatButton = createRoom(roomName); - $("#ChatRoomList").append($(``)); + let chatButton = createRoom(newChatRoom); + $("#ChatRoomList").append(chatButton); }); socket.on("updateRooms", roomNames => { console.log(roomNames); console.log("Wow, so many rooms"); - roomNames.forEach((roomName) => { + roomNames.forEach(roomName => { let chatButton = createRoom(roomName); console.log(chatButton); $("#ChatRoomList").append($(`${chatButton}`)); - }) -}) + }); +}); function createRoom(roomName) { - return` + return `

    - ` + `; } diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index a9bb151..0f94ea5 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -1,4 +1,4 @@ -Welcome +Welcome to {{roomName}}
    {{username}}
    ============================= From 3cd68362ca169bec31cb0fc61eef0019708545f4 Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 16:44:11 -0500 Subject: [PATCH 29/32] working along --- index.js | 8 ++++++-- lib/get_message_helpers.js | 19 ++++++++++++++++++ lib/get_room_info_helpers.js | 1 + lib/redis_messages.js | 29 +++++++++++++++++---------- lib/redis_tools.js | 8 ++++++-- public/js/chat_room.js | 39 +++++++++--------------------------- public/js/lobby.js | 33 ++++++++++++++++++++++++++++++ views/chatLobby.handlebars | 4 ++-- views/chatScreen.handlebars | 2 +- 9 files changed, 96 insertions(+), 47 deletions(-) create mode 100644 lib/get_message_helpers.js create mode 100644 public/js/lobby.js diff --git a/index.js b/index.js index 3cb5d35..e31be9a 100644 --- a/index.js +++ b/index.js @@ -10,7 +10,8 @@ const redisTools = require("./lib/redis_tools"); // const { getUserIds, getUsername } = require("./lib/get_user_info"); const { getUsernames } = require("./lib/get_user_info"); const { getRoomNames } = require("./lib/room_info"); -const { generateUserInfo, generateRoomInfo } = require("./lib/redis_tools"); +const { generateUserInfo, generateRoomInfo, } = require("./lib/redis_tools"); + app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); @@ -39,6 +40,10 @@ io.on("connection", client => { console.log("worked"); }); }); + + client.on("newMessage", newMessage => { + console.log(newMessage); + }) }); app.get("/", (req, res) => { @@ -49,7 +54,6 @@ app.get("/", (req, res) => { app.post("/", (req, res) => { console.log(req.body.name); res.cookie("username", req.body.name); - //res.cookie("username", req.body.name); // Safety make sure we don't make 2 USER_IDS getUsernames().then(usernames => { diff --git a/lib/get_message_helpers.js b/lib/get_message_helpers.js new file mode 100644 index 0000000..1d9cb72 --- /dev/null +++ b/lib/get_message_helpers.js @@ -0,0 +1,19 @@ +const redisClient = require("redis").createClient(); + +module.exports = { + getMessage: (messageId) => { + return new Promise((resolve, reject) => { + redisClient.hmget(messageId, (err, message) => { + (err) ? reject(err) : resolve(message); + }) + }) + }, + + getMessageIds: () => { + return new Promise((resolve, reject) => { + redisClient.lrange("MESSAGE_IDS", 0, -1, (err, messageIds) => { + (err) ? reject(err) : resolve(messageIds); + }) + }) + } +} diff --git a/lib/get_room_info_helpers.js b/lib/get_room_info_helpers.js index 436bfeb..c239420 100644 --- a/lib/get_room_info_helpers.js +++ b/lib/get_room_info_helpers.js @@ -1,3 +1,4 @@ + const redisClient = require("redis").createClient(); module.exports = { diff --git a/lib/redis_messages.js b/lib/redis_messages.js index 93f6859..c2c4287 100644 --- a/lib/redis_messages.js +++ b/lib/redis_messages.js @@ -1,27 +1,34 @@ -// get messages by room -// get message by id -// get all messages -// store message const redisClient = require("redis").createClient(); +const { getMessageIds, getMessage } = require("./get_message_helpers"); module.exports = { - storeMessageId: (messageId) { + storeMessageId: (messageId) => { return new Promise((resolve, reject) => { redisClient.lpush("MESSAGE",messageId, (error,data) => {if(error) throw error; resolve();}); }) }, - - storeMessage: (messageId, message, userId, roomId) { + storeMessage: (messageId, message, username, roomName) => { return new Promise((resolve, reject) => { redisClient.hmset(messageId, { message: message, - userId: userId, - roomId: roomId - }, (error,data) => {if(error) throw error; resolve();}) - + username: username, + roomName: roomName + }, (error,data) => { + if(error) throw error; + resolve(); + }) }) }, + getMessages: () => { + return getMessageIds.then(messageIds => { + return Promise.all( + messagesIds.map(messageId => { + return getMessage(messageId); + }) + ) + }) + } } diff --git a/lib/redis_tools.js b/lib/redis_tools.js index dd1ecbc..9e6a94c 100644 --- a/lib/redis_tools.js +++ b/lib/redis_tools.js @@ -17,7 +17,11 @@ module.exports = { .storeRoomId(roomId) .then(roomId => chatroomHelpers.storeRoomName(roomId, roomName)); }, - generateMessageInfo: message => { - const messageId = shortid.generate(); + + generateMessageInfo: (message, username, roomName) => { + const messageId = shortid.generate() + return messageHelpers + .storeMessageId(messageId) + .then(messageId => messageHelpers.storeMessage(messageId, message, username, roomName)); } }; diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 27a9da5..7f9d9ac 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -1,33 +1,14 @@ const socket = io.connect("http://localhost:3000"); -$("#createRoom").on("click", e => { - e.preventDefault(); - socket.emit("newChatRoom", $(".roomName").val()); -}); - -// Will add button of new chat room -socket.on("newChatRoomFromServer", newChatRoom => { - console.log("working Here"); - let chatButton = createRoom(newChatRoom); - $("#ChatRoomList").append(chatButton); -}); +// $(".roomName").text(); +// $(".storedName").text(); -socket.on("updateRooms", roomNames => { - console.log(roomNames); - console.log("Wow, so many rooms"); - roomNames.forEach(roomName => { - let chatButton = createRoom(roomName); - console.log(chatButton); - $("#ChatRoomList").append($(`${chatButton}`)); - }); -}); -function createRoom(roomName) { - return ` -
    -
    - -
    -
    - `; -} +$("#createMessage").on("click", e => { + e.preventDefault(); + socket.emit("newMessage", { + roomName: ($(".roomName").val()), + username: ($(".storedName").text()), + message: ($("message").val()) + } + diff --git a/public/js/lobby.js b/public/js/lobby.js new file mode 100644 index 0000000..27a9da5 --- /dev/null +++ b/public/js/lobby.js @@ -0,0 +1,33 @@ +const socket = io.connect("http://localhost:3000"); + +$("#createRoom").on("click", e => { + e.preventDefault(); + socket.emit("newChatRoom", $(".roomName").val()); +}); + +// Will add button of new chat room +socket.on("newChatRoomFromServer", newChatRoom => { + console.log("working Here"); + let chatButton = createRoom(newChatRoom); + $("#ChatRoomList").append(chatButton); +}); + +socket.on("updateRooms", roomNames => { + console.log(roomNames); + console.log("Wow, so many rooms"); + roomNames.forEach(roomName => { + let chatButton = createRoom(roomName); + console.log(chatButton); + $("#ChatRoomList").append($(`${chatButton}`)); + }); +}); + +function createRoom(roomName) { + return ` +
    +
    + +
    +
    + `; +} diff --git a/views/chatLobby.handlebars b/views/chatLobby.handlebars index 0782ac0..25d657b 100644 --- a/views/chatLobby.handlebars +++ b/views/chatLobby.handlebars @@ -3,7 +3,7 @@ Welcome =============================
    - +
    ============================= @@ -11,4 +11,4 @@ Welcome - + diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index 0f94ea5..135d2b6 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -1,4 +1,4 @@ -Welcome to {{roomName}} +

    {{roomName}}

    {{username}}
    ============================= From d8a800a8574f9dec84cf66a2c9699ff1c0479fd4 Mon Sep 17 00:00:00 2001 From: Kara Thrash Date: Thu, 27 Jul 2017 18:05:20 -0400 Subject: [PATCH 30/32] chatroom --- index.js | 6 +++--- public/js/chat_room.js | 21 ++++++++++++++++----- views/chatScreen.handlebars | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index e31be9a..786f5a9 100644 --- a/index.js +++ b/index.js @@ -10,8 +10,7 @@ const redisTools = require("./lib/redis_tools"); // const { getUserIds, getUsername } = require("./lib/get_user_info"); const { getUsernames } = require("./lib/get_user_info"); const { getRoomNames } = require("./lib/room_info"); -const { generateUserInfo, generateRoomInfo, } = require("./lib/redis_tools"); - +const { generateUserInfo, generateRoomInfo } = require("./lib/redis_tools"); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: false })); @@ -43,7 +42,8 @@ io.on("connection", client => { client.on("newMessage", newMessage => { console.log(newMessage); - }) + io.emit("newMessageFromServer", newMessage); + }); }); app.get("/", (req, res) => { diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 7f9d9ac..ed5f65c 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -2,13 +2,24 @@ const socket = io.connect("http://localhost:3000"); // $(".roomName").text(); // $(".storedName").text(); +socket.on("newMessageFromServer", newChatMessage => { + document + .getElementById("msgList") + .insertBefore(createNewMessage(newChatMessage), list.childNodes[0]); +}); +function createNewMessage(passedMessage) { + return ` +
  • ${passedMessage.username}
  • +
  • ${passedMessage.message}
  • + `; +} $("#createMessage").on("click", e => { e.preventDefault(); socket.emit("newMessage", { - roomName: ($(".roomName").val()), - username: ($(".storedName").text()), - message: ($("message").val()) - } - + roomName: $(".roomName").val(), + username: $(".storedName").text(), + message: $("message").val() + }); +}); diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index 135d2b6..cd4bfb5 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -12,4 +12,4 @@

    Chat Message here

    - + From d8fcf326ab71439e5ffe779b0873d884e6cbfb43 Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 17:20:07 -0500 Subject: [PATCH 31/32] fjf --- public/js/chat_room.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/public/js/chat_room.js b/public/js/chat_room.js index ed5f65c..1707a7c 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -3,19 +3,24 @@ const socket = io.connect("http://localhost:3000"); // $(".roomName").text(); // $(".storedName").text(); socket.on("newMessageFromServer", newChatMessage => { + // $("#PostedMessages").prepend(`${newChatMessage}`); + let newElement = document.createElement("P:" + newitem.val = newchatMessage.message) + document .getElementById("msgList") - .insertBefore(createNewMessage(newChatMessage), list.childNodes[0]); + .prepend($(createNewMessage(newChatMessage))); }); function createNewMessage(passedMessage) { return ` -
  • ${passedMessage.username}
  • -
  • ${passedMessage.message}
  • +

    ${passedMessage.username}

    +

    ${passedMessage.message}

    `; } -$("#createMessage").on("click", e => { +$("#submitPost").on("click", e => { + console.log("fjfjf"); e.preventDefault(); socket.emit("newMessage", { roomName: $(".roomName").val(), From 9ae4e4ec33c244839cf382bc87f5bb842bed4c4c Mon Sep 17 00:00:00 2001 From: Alex-Willenbrink Date: Thu, 27 Jul 2017 17:31:40 -0500 Subject: [PATCH 32/32] messages on sockets --- index.js | 2 -- public/js/chat_room.js | 17 ++++++----------- views/chatScreen.handlebars | 3 ++- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/index.js b/index.js index 786f5a9..1d9b4d2 100644 --- a/index.js +++ b/index.js @@ -26,7 +26,6 @@ app.use( app.use(bodyParser.urlencoded({ extended: true })); io.on("connection", client => { - // /client.on(); // send all current chats to rooms getRoomNames().then(roomNames => { client.emit("updateRooms", roomNames); @@ -41,7 +40,6 @@ io.on("connection", client => { }); client.on("newMessage", newMessage => { - console.log(newMessage); io.emit("newMessageFromServer", newMessage); }); }); diff --git a/public/js/chat_room.js b/public/js/chat_room.js index 1707a7c..60e641c 100644 --- a/public/js/chat_room.js +++ b/public/js/chat_room.js @@ -3,19 +3,15 @@ const socket = io.connect("http://localhost:3000"); // $(".roomName").text(); // $(".storedName").text(); socket.on("newMessageFromServer", newChatMessage => { - // $("#PostedMessages").prepend(`${newChatMessage}`); - let newElement = document.createElement("P:" - newitem.val = newchatMessage.message) - - document - .getElementById("msgList") - .prepend($(createNewMessage(newChatMessage))); + let chatMessage = createNewMessage(newChatMessage); + $("#PostedMessages").prepend($(`${chatMessage}`)); }); function createNewMessage(passedMessage) { + console.log(passedMessage); return ` -

    ${passedMessage.username}

    -

    ${passedMessage.message}

    +

    Author: ${passedMessage.username}

    +

    Message: ${passedMessage.message}

    `; } @@ -23,8 +19,7 @@ $("#submitPost").on("click", e => { console.log("fjfjf"); e.preventDefault(); socket.emit("newMessage", { - roomName: $(".roomName").val(), username: $(".storedName").text(), - message: $("message").val() + message: $(".message").val() }); }); diff --git a/views/chatScreen.handlebars b/views/chatScreen.handlebars index cd4bfb5..c6192d6 100644 --- a/views/chatScreen.handlebars +++ b/views/chatScreen.handlebars @@ -6,10 +6,11 @@ + =============================
    +
    -

    Chat Message here