Working
This commit is contained in:
parent
abdffe2e7a
commit
75840914cf
5 changed files with 322 additions and 117 deletions
|
@ -2,10 +2,13 @@ import moment from "https://jspm.dev/moment"
|
|||
import { io } from "https://cdn.socket.io/4.3.2/socket.io.esm.min.js"
|
||||
const socket = io(":3000")
|
||||
const messageButton = document.querySelector("#send")
|
||||
const menuButton = document.querySelector("#menu")
|
||||
const nameButton = document.querySelector("#name")
|
||||
const roomContainer = document.querySelector("#room-container")
|
||||
const nameInput = document.querySelector("input")
|
||||
const roomContainer = document.querySelector("#room-container")
|
||||
const messageInput = document.querySelector("textarea")
|
||||
const login = document.querySelector("#login")
|
||||
const nameDisplay = document.querySelector("#name-display")
|
||||
|
||||
setInterval(
|
||||
() =>
|
||||
|
@ -25,7 +28,7 @@ const addMessage = (messageObject) => {
|
|||
.querySelector(".message")
|
||||
|
||||
if (isYours) messageDiv.classList.add("message-right")
|
||||
else if (isSystem) messageDiv.classList.add("system")
|
||||
if (isSystem) messageDiv.classList.add("system")
|
||||
messageDiv.querySelector(".message-text").innerText = message
|
||||
const time = Date.now()
|
||||
messageDiv.dataset.time = time
|
||||
|
@ -35,6 +38,26 @@ const addMessage = (messageObject) => {
|
|||
document.querySelector("#messages").prepend(messageDiv)
|
||||
}
|
||||
|
||||
if (roomName) {
|
||||
socket.emit("new-user", roomName, localStorage.getItem("name"))
|
||||
addMessage({
|
||||
message: "You joined",
|
||||
isYours: true,
|
||||
isSystem: true,
|
||||
})
|
||||
}
|
||||
|
||||
menuButton.addEventListener("click", () =>
|
||||
document.querySelector("#rooms").classList.toggle("opened")
|
||||
)
|
||||
|
||||
if (!localStorage.getItem("name")) login.classList.remove("done")
|
||||
else nameDisplay.innerHTML = localStorage.getItem("name")
|
||||
|
||||
document
|
||||
.querySelector("#change-name")
|
||||
.addEventListener("click", () => login.classList.remove("done"))
|
||||
|
||||
socket.on("room-created", (room) => {
|
||||
const roomItem = document.createElement("li")
|
||||
const roomLink = document.createElement("a")
|
||||
|
@ -42,18 +65,23 @@ socket.on("room-created", (room) => {
|
|||
roomLink.innerText = room
|
||||
roomItem.append(roomLink)
|
||||
roomContainer.append(roomItem)
|
||||
if (document.querySelector("#no-rooms"))
|
||||
document.querySelector("#no-rooms").classList.add("changed")
|
||||
})
|
||||
|
||||
if (nameButton)
|
||||
nameButton.addEventListener("click", () => {
|
||||
if (!nameInput.value) return (nameInput.required = true)
|
||||
document.querySelector("#login").classList.add("done")
|
||||
socket.emit("new-user", roomName, nameInput.value)
|
||||
addMessage({
|
||||
message: "You joined",
|
||||
isYours: true,
|
||||
isSystem: true,
|
||||
})
|
||||
localStorage.setItem("name", nameInput.value)
|
||||
nameDisplay.innerHTML = localStorage.getItem("name")
|
||||
if (roomName) {
|
||||
socket.emit("name-change", roomName, nameInput.value)
|
||||
addMessage({
|
||||
message: `You renamed yourself to ${nameInput.value}`,
|
||||
isSystem: true,
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
if (messageButton)
|
||||
|
@ -69,8 +97,14 @@ socket.on("chat-message", (message, user) => {
|
|||
addMessage({ message, user })
|
||||
})
|
||||
|
||||
socket.on("name-changed", (oldName, newName) => {
|
||||
addMessage({
|
||||
message: `${oldName} was renamed to ${newName}.`,
|
||||
isSystem: true,
|
||||
})
|
||||
})
|
||||
|
||||
socket.on("user-connected", (name) => {
|
||||
socket.emit("join-room", ROOM_ID)
|
||||
addMessage({ message: `${name} joined`, isSystem: true })
|
||||
})
|
||||
|
||||
|
|
Reference in a new issue