-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmessage.js
More file actions
105 lines (90 loc) · 2.74 KB
/
message.js
File metadata and controls
105 lines (90 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
const TalkBox = document.querySelector(".message");
const messageForm = document.querySelector(".messageForm");
const closeBtn = TalkBox.querySelector("button");
const messageInput = messageForm.querySelector("input[type=text]");
const messageList = document.querySelector(".messageList");
let localList = localStorage.getItem("Messages")
? JSON.parse(localStorage.getItem("Messages"))
: [];
let timeInterval;
let initInterval;
const delMessage = (e) => {
messageList.removeChild(e.target.parentNode);
localList = localList.filter(
(item) => item.id !== parseInt(e.target.parentNode.id)
);
localStorage.setItem("Messages", JSON.stringify(localList));
};
const localMessageSave = (content) => {
localStorage.setItem(
"Messages",
JSON.stringify([...localList, { content, id: localList.length + 1 }])
);
localList = [...localList, { content, id: localList.length + 1 }];
};
const paintMessage = (content, id) => {
const li = document.createElement("li");
const delbtn = document.createElement("button");
delbtn.addEventListener("click", delMessage);
delbtn.innerText = "삭제";
li.innerText = content;
li.id = id;
li.appendChild(delbtn);
messageList.appendChild(li);
};
const messageSubmit = (e) => {
e.preventDefault();
const content = messageInput.value;
if (content !== "") {
paintMessage(content, localList.length + 1);
localMessageSave(content);
messageInput.value = "";
}
};
const randomMessage = () => {
const list = JSON.parse(localStorage.getItem("Messages"));
const Info = JSON.parse(localStorage.getItem("Profile"));
if (list && list.length !== 0) {
timeInterval = setInterval(() => {
TalkBox.innerText = `${
list[Math.floor(Math.random() * (list.length - 1 - 0))].content
}`;
}, 5000);
} else {
if (Info)
initInterval = setInterval(() => {
TalkBox.innerText = `Hello,${Info.name}`;
}, 5000);
else {
TalkBox.innerText = "Hello Friend";
}
}
};
const setRandomMessage = () => {
clearInterval(initInterval);
clearInterval(timeInterval);
randomMessage();
};
const setRandomMessageKey = (e) => {
if (e.code === "Escape") {
clearInterval(initInterval);
clearInterval(timeInterval);
randomMessage();
}
};
const loadMessageList = () => {
const loadMessages = JSON.parse(localStorage.getItem("Messages"));
if (loadMessages !== null) {
loadMessages.forEach((item) => paintMessage(item.content, item.id));
}
};
const initMessageWindow = () => {
loadMessageList();
randomMessage();
if (messageForm) {
messageForm.addEventListener("submit", messageSubmit);
window.addEventListener("keyup", setRandomMessageKey);
}
if (closeBtn) closeBtn.addEventListener("click", setRandomMessage);
};
initMessageWindow();