Skip to content

Commit 41b5a9b

Browse files
committed
Updates
1 parent 543a9cd commit 41b5a9b

5 files changed

Lines changed: 96 additions & 11 deletions

File tree

server-src/server.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,6 +1454,8 @@ async function startRoomWSS(roomid) {
14541454
return true;
14551455
}
14561456
}
1457+
var _currentOnlineListMessage = "";
1458+
var _currentOnlineListMessageOwner = "";
14571459
function sendOnlineList() {
14581460
var userlist = [];
14591461
for (var cli of wss.clients) {
@@ -1492,6 +1494,8 @@ async function startRoomWSS(roomid) {
14921494
type: "onlineList",
14931495
list: userlist,
14941496
});
1497+
_currentOnlineListMessage = onlistNonOwner;
1498+
_currentOnlineListMessageOwner = onlist;
14951499
wss.clients.forEach((cli) => {
14961500
if (!cli._rrIsReady) {
14971501
return;
@@ -1754,6 +1758,13 @@ async function startRoomWSS(roomid) {
17541758
);
17551759
}
17561760
}
1761+
if (json.type == "onlineList") {
1762+
if (ws._rrIsOwner) {
1763+
ws.send(_currentOnlineListMessageOwner);
1764+
} else {
1765+
ws.send(_currentOnlineListMessage);
1766+
}
1767+
}
17571768
if (json.type == "typing") {
17581769
for (var client of wss.clients) {
17591770
client.send(

src/chat/interface/chatinterface.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,17 @@ var KnownUserList = require("./userlist-menu.js");
174174
);
175175
}
176176

177+
rrLoadingStatusText.textContent = "Loading known user list...";
178+
179+
try {
180+
await KnownUserList.fetchUserList();
181+
} catch (e) {
182+
console.error(e);
183+
dialogs.alert(
184+
"Something went wrong while trying to load your known user list."
185+
);
186+
}
187+
177188
rrLoadingStatusText.textContent = "Connecting to the rant room...";
178189

179190
if (!window.screenShareClient) {
@@ -371,7 +382,7 @@ var KnownUserList = require("./userlist-menu.js");
371382
});
372383

373384
addBanUserButton.addEventListener("click", async function () {
374-
var response = await KnownUserList.getUserPrompt("Block/ban user");
385+
var response = await KnownUserList.getUserPrompt("Block/ban user");
375386
if (!response) {
376387
return;
377388
}
@@ -387,7 +398,7 @@ var KnownUserList = require("./userlist-menu.js");
387398
});
388399

389400
addAllowUserButton.addEventListener("click", async function () {
390-
var response = await KnownUserList.getUserPrompt("Allow an user");
401+
var response = await KnownUserList.getUserPrompt("Allow an user");
391402
if (!response) {
392403
return;
393404
}

src/chat/interface/onlineuserdivgenerator/index.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ var elements = require("../../../gp2/elements.js");
22
var accountHelper = require("../../../accounthelper");
33
var shtml = require("../../../safehtmlencode.js");
44
var cacheBust = require("../cachebust.js");
5+
var KnownUserList = require("../userlist-menu.js");
56

67
function generateDiv(
78
username,
@@ -190,6 +191,46 @@ function generateDiv(
190191
}
191192
}
192193

194+
if (username) {
195+
if (!KnownUserList.isUserAdded(username)) {
196+
icons.push({
197+
element: "div",
198+
style: {
199+
height: "23px",
200+
},
201+
className: "divButton roundborder onlineDivButton",
202+
title: "Click to add to your known users list",
203+
children: [
204+
{
205+
element: "img",
206+
style: {
207+
height: "100%",
208+
},
209+
src: "images/adduserlist.svg",
210+
},
211+
{
212+
element: "span",
213+
textContent: "Know this user",
214+
},
215+
],
216+
eventListeners: [
217+
{
218+
event: "click",
219+
func: async function () {
220+
this.disabled = true;
221+
this.innerHTML = "";
222+
this.className = "loader";
223+
this.src = "";
224+
this.style.width = "23px";
225+
await KnownUserList.addUsername(username);
226+
this.remove();
227+
},
228+
},
229+
],
230+
});
231+
}
232+
}
233+
193234
var dom = elements.createElementsFromJSON([
194235
{
195236
element: "div",

src/chat/interface/userlist-menu.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var elements = require("../../gp2/elements.js");
77
var accountHelper = require("../../accounthelper");
88
var shtml = require("../../safehtmlencode.js");
99
var cacheBust = require("./cachebust.js");
10+
var sws = require("./sharedwebsocket.js");
1011

1112
function makeUserListDiv(username, removeFunction, selectFunction) {
1213
var pfp = accountHelper.getProfilePictureURL(username);
@@ -359,6 +360,7 @@ class UserListMenu {
359360
}
360361

361362
async removeFromUserList(username) {
363+
var dialogBG = this.showLoadingScreen();
362364
try {
363365
var r = await fetch(
364366
accountHelper.getServerURL() + "/account/removeuserlist",
@@ -372,13 +374,15 @@ class UserListMenu {
372374
if (!r.ok) {
373375
throw new Error("");
374376
}
377+
375378
this.loadUserListMenu();
376379
} catch (e) {
377380
dialogs.alert(
378381
"Failed to remove user from your known user list, try again later."
379382
);
380383
console.error(e);
381384
}
385+
dialogBG.remove();
382386
}
383387

384388
async addUsername(username) {
@@ -430,6 +434,28 @@ class UserListMenu {
430434
},
431435
]);
432436
}
437+
438+
try {
439+
sws.send(
440+
JSON.stringify({
441+
type: "onlineList",
442+
})
443+
);
444+
} catch (e) {}
445+
}
446+
447+
isUserAdded(username) {
448+
var formattedUsername = username.trim().toLowerCase();
449+
var state = accountHelper.getCurrentValidationState();
450+
if (state) {
451+
if (formattedUsername == state.username.trim().toLowerCase()) {
452+
return true;
453+
}
454+
}
455+
if (this.currentUserList) {
456+
return this.currentUserList.indexOf(formattedUsername) > -1;
457+
}
458+
return false;
433459
}
434460

435461
getUserPrompt(infoText = "Choose an user") {
@@ -530,14 +556,10 @@ class UserListMenu {
530556
overflow: "auto",
531557
},
532558
children: _this.currentUserList.map((username) => {
533-
return makeUserListDiv(
534-
username,
535-
null,
536-
function () {
537-
usernameInput.value = username;
538-
usernameInput.scrollIntoView();
539-
}
540-
);
559+
return makeUserListDiv(username, null, function () {
560+
usernameInput.value = username;
561+
usernameInput.scrollIntoView();
562+
});
541563
}),
542564
},
543565
],

wpstatic/version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"timestamp":"1761587465990"}
1+
{"timestamp":"1761590491212"}

0 commit comments

Comments
 (0)