Skip to content

Commit 7b5a376

Browse files
committed
Fixed scrolling and some other bugs
1 parent 691d672 commit 7b5a376

File tree

7 files changed

+198
-48
lines changed

7 files changed

+198
-48
lines changed

@me/index.html

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,14 @@
9595
</div>
9696
<div id="list_users" class="closed">
9797
<div id="users_list">
98-
Nothing here!
98+
<h3>Online:</h3>
99+
<div id="online_u">
100+
Nothing here!
101+
</div>
102+
<h3>Offline:</h3>
103+
<div id="offline_u">
104+
Nothing here!
105+
</div>
99106
</div>
100107
</div>
101108
<div id="auth_buts">

@me/style.css

Lines changed: 71 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@ button {
104104
}
105105
}
106106

107+
@keyframes blink{
108+
0%{
109+
background-color: #e69c5b61;
110+
}
111+
112+
100%{
113+
background-color: transparent;
114+
}
115+
}
116+
107117
button:disabled {
108118
opacity: .1;
109119
}
@@ -194,6 +204,55 @@ button#new_message_popup:hover {
194204
color: white;
195205
}
196206

207+
#user_selection{
208+
height: 20px;
209+
width: 20px;
210+
position: relative;
211+
display: flex;
212+
align-items: center;
213+
justify-content: center;
214+
margin: 0 .5rem 0 0;
215+
}
216+
217+
#user_selection::before{
218+
content: "";
219+
height: 24px;
220+
width: 24px;
221+
border-radius: .4rem;
222+
border: none;
223+
background-color: white;
224+
display: block;
225+
position: absolute;
226+
}
227+
228+
#user_selection:checked::before{
229+
content: "\f00c";
230+
background-color: rgb(97, 97, 202);
231+
display: flex;
232+
justify-content: center;
233+
align-items: center;
234+
color: white;
235+
font: var(--fa-font-solid);
236+
}
237+
238+
.online::before {
239+
content: "";
240+
height: 12px;
241+
width: 12px;
242+
border-radius: 50%;
243+
background-color: #51ef51;
244+
display: block;
245+
position: absolute;
246+
z-index: 12;
247+
bottom: 14px;
248+
left: 40px;
249+
border: 4px solid #363636;
250+
}
251+
252+
.offline{
253+
opacity: .5;
254+
}
255+
197256
.form:focus {
198257
outline: 3px soild white;
199258
}
@@ -237,8 +296,9 @@ button#new_message_popup:hover {
237296
#channels {
238297
grid-area: channel;
239298
background-color: #161616;
240-
overflow-y: auto;
299+
overflow-y: scroll;
241300
overflow-x: hidden;
301+
height: calc(100% - 1rem);
242302
}
243303

244304
#app_main_container {
@@ -519,6 +579,7 @@ button#new_message_popup:hover {
519579
margin: .2rem;
520580
border-radius: .6rem;
521581
background-color: #363636;
582+
position: relative;
522583
}
523584

524585
#search_user {
@@ -574,11 +635,6 @@ button#new_message_popup:hover {
574635
color: rgb(211, 211, 211);
575636
}
576637

577-
#channels {
578-
display: flex;
579-
flex-direction: column;
580-
}
581-
582638
#create_channel {
583639
height: 45px;
584640
width: 45px;
@@ -605,6 +661,7 @@ button#new_message_popup:hover {
605661
text-overflow: ellipsis;
606662
border: 2px solid transparent;
607663
transition: .2s ease;
664+
width: calc(100% - 1rem);
608665
}
609666

610667
#gif_results {
@@ -670,7 +727,6 @@ button#new_message_popup:hover {
670727
height: 25px;
671728
width: 25px;
672729
transform: translate(-10px, -10px);
673-
z-index: 100;
674730
align-items: center;
675731
justify-content: center;
676732
}
@@ -741,6 +797,14 @@ div.reply_message {
741797
align-items: center;
742798
overflow: hidden;
743799
text-overflow: ellipsis;
800+
color: rgb(177, 177, 177);
801+
text-align: left;
802+
border: none;
803+
width: calc(100% - 1.6rem);
804+
}
805+
806+
.m_indicator{
807+
animation: blink infinite .5s alternate;
744808
}
745809

746810
.replied_to span {

ChatterBox/Channel.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ export async function GetChannels(params) {
5757
mode: "cors",
5858
headers: headers
5959
}).then((response) => {
60-
if (response.status === 401 && response.error === params.types.ErrorTypes.JWT_EXPIRE) {
60+
if (response.status === 401) {
6161
const headers = new Headers()
62-
62+
console.log(response.error)
6363
headers.append("Authorization", `Bearer ${refreshToken}`)
6464
fetch(`${apiURL}/api/request_new_token`, {
6565
mode: "cors",
@@ -70,8 +70,6 @@ export async function GetChannels(params) {
7070
[token, refreshToken] = UpdateTokens(response)
7171
GetChannels(params)
7272
})
73-
} else if (response.status === 401 || response.status === 500) {
74-
alert("Something went wrong! Please reload the website. If this error appeared again please login again.")
7573
}
7674
if (response.ok) return response.json();
7775
})
@@ -90,6 +88,7 @@ function AddToChannels(channels, socket) {
9088
channels.forEach(channel => {
9189
const channelName = channel.name
9290
const iconURL = channel.iconURL
91+
const loggedUser = window.sessionStorage.getItem("user")
9392

9493
const nameButton = document.createElement("button")
9594
nameButton.innerText = channelName

ChatterBox/Utility.js

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export async function AddToMessages(message) {
137137
contentHolder.classList.add("message_db");
138138
contentHolder.id = messageId
139139
if (repliedTo !== undefined && repliedTo.username !== "") {
140-
const replyIndicator = document.createElement("div")
140+
const replyIndicator = document.createElement("button")
141141
const userPfp = document.createElement("img")
142142
const username = document.createElement("span")
143143
const content = document.createElement("span")
@@ -152,6 +152,17 @@ export async function AddToMessages(message) {
152152

153153
replyIndicator.append(...[userPfp, username, content])
154154
replyIndicator.classList.add("replied_to")
155+
156+
replyIndicator.addEventListener("click", e => {
157+
console.log("test", repliedTo._id)
158+
const replyM = document.getElementById(repliedTo._id)
159+
replyM.parentElement.parentElement.scrollIntoView({ block: "center" });
160+
replyM.classList.add("m_indicator")
161+
162+
setTimeout(() => {
163+
replyM.classList.remove("m_indicator")
164+
}, 1500)
165+
})
155166
messAndUserholder.appendChild(replyIndicator)
156167

157168
pfp.style.marginTop = "calc(25px + 1.2rem)"
@@ -179,7 +190,6 @@ export async function AddToMessages(message) {
179190
closeIcon.classList.add("fa-circle-xmark")
180191
cancelButton.appendChild(closeIcon)
181192
cancelButton.classList.add("cancel_reply")
182-
console.log(reply.previousSibling)
183193
username.innerText = "replying to " + reply.parentElement.previousSibling.firstChild.innerText
184194
cancelButton.addEventListener("click", click => {
185195
window.sessionStorage.removeItem("repliedTo")
@@ -296,16 +306,15 @@ async function ResolveContent(content, contentHolder, message) {
296306
if (node.nodeType === 3) {
297307
text += node.data
298308

299-
if (index === text2el.length - 1 ) {
309+
if (index === text2el.length - 1) {
300310
const textEl = document.createElement("span")
301311
textEl.innerText = text.trim()
302-
console.log(text, "if")
303312

304313
wholeTextHolder.appendChild(textEl)
305314
text = ""
306315
}
307316
} else {
308-
if(!text || text === "" || text === "\s") return
317+
if (!text || text === "" || text === "\s") return
309318
const textEl = document.createElement("span")
310319
textEl.innerText = text.trim()
311320

@@ -315,7 +324,7 @@ async function ResolveContent(content, contentHolder, message) {
315324
}
316325

317326
})
318-
327+
319328
contentHolder.appendChild(wholeTextHolder)
320329
if (message.components.length > 0)
321330
[...message.components].forEach(component => {
@@ -327,16 +336,25 @@ async function ResolveContent(content, contentHolder, message) {
327336
const image = new Image()
328337

329338
if (component.type === types.ComponentTypes.EMBED) {
330-
if (!component.title && !component.description && !component.image) { }
339+
if (!component.title && !component.description && !component.image) {
340+
const textEl = document.createElement("a")
341+
textEl.innerText = component.url.trim()
342+
textEl.href = component.url.trim()
343+
textEl.target = "_blank"
344+
345+
wholeTextHolder.appendChild(textEl)
346+
contentHolder.appendChild(wholeTextHolder)
347+
}
331348
else {
332349
title.classList.add("embed_title")
333350
const titleLink = document.createElement("a")
334351
titleLink.href = component.url
335-
titleLink.innerText = component.title
352+
titleLink.innerText = component.title ? component.title : "..."
353+
titleLink.target = "_blank"
336354
title.appendChild(titleLink)
337355

338356
description.classList.add("embed_description")
339-
description.innerText = component.description ? component.description : ""
357+
description.innerText = component.description ? component.description : "..."
340358

341359
if (component.image) {
342360
image.classList.add("embed_image")
@@ -393,15 +411,24 @@ export function ScrollToBottom(onload) {
393411
}
394412

395413
export function LogoutUser() {
396-
token = null;
397-
refreshToken = null;
398-
loggedUser = null
399-
400-
window.sessionStorage.setItem("token", token)
401-
window.sessionStorage.setItem("refresh token", refreshToken)
402-
window.sessionStorage.setItem("user", loggedUser)
403-
404-
location = "/"
414+
const headers = new Headers
415+
headers.append("Authorization", `Bearer ${token}`)
416+
fetch("http://localhost:3001/api/logout", {
417+
mode: "cors",
418+
headers: headers
419+
}).then(async response => {
420+
if (response.ok) return response.json()
421+
}).then(response => {
422+
token = null;
423+
refreshToken = null;
424+
loggedUser = null
425+
426+
window.sessionStorage.setItem("token", token)
427+
window.sessionStorage.setItem("refresh token", refreshToken)
428+
window.sessionStorage.setItem("user", loggedUser)
429+
430+
location = "/"
431+
})
405432
}
406433

407434
export function UpdateTokens(response) {

0 commit comments

Comments
 (0)