Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor code in src/socket.io/admin/rooms.js #63

Open
wants to merge 10 commits into
base: f24
Choose a base branch
from
74 changes: 47 additions & 27 deletions src/socket.io/admin/rooms.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ SocketRooms.getTotalGuestCount = async function () {
};

SocketRooms.getAll = async function () {
console.log('GhalyaRefactoredCode');
const sockets = await io.server.fetchSockets();

totals.onlineGuestCount = 0;
Expand All @@ -31,37 +32,14 @@ SocketRooms.getAll = async function () {
};
const userRooms = {};
const topicData = {};

for (const s of sockets) {
for (const key of s.rooms) {
if (key === 'online_guests') {
totals.onlineGuestCount += 1;
} else if (key === 'categories') {
totals.users.categories += 1;
} else if (key === 'recent_topics') {
totals.users.recent += 1;
} else if (key === 'unread_topics') {
totals.users.unread += 1;
} else if (key.startsWith('uid_')) {
userRooms[key] = 1;
} else if (key.startsWith('category_')) {
totals.users.category += 1;
} else {
const tid = key.match(/^topic_(\d+)/);
if (tid) {
totals.users.topics += 1;
topicData[tid[1]] = topicData[tid[1]] || { count: 0 };
topicData[tid[1]].count += 1;
}
}
}
processSocket(s, totals, userRooms, topicData);
}

totals.onlineRegisteredCount = Object.keys(userRooms).length;

let topTenTopics = [];
Object.keys(topicData).forEach((tid) => {
topTenTopics.push({ tid: tid, count: topicData[tid].count });
});
topTenTopics = topTenTopics.sort((a, b) => b.count - a.count).slice(0, 10);
const topTenTopics = getTopTenTopics(topicData);
const topTenTids = topTenTopics.map(topic => topic.tid);

const titles = await topics.getTopicsFields(topTenTids, ['title']);
Expand All @@ -73,6 +51,48 @@ SocketRooms.getAll = async function () {
return totals;
};

function processSocket(s, totals, userRooms, topicData) {
console.log('GhalyaRefactoredCode1');
for (const key of s.rooms) {
if (key === 'online_guests') {
totals.onlineGuestCount += 1;
} else if (key === 'categories') {
totals.users.categories += 1;
} else if (key === 'recent_topics') {
totals.users.recent += 1;
} else if (key === 'unread_topics') {
totals.users.unread += 1;
} else if (key.startsWith('uid_')) {
userRooms[key] = 1;
} else if (key.startsWith('category_')) {
totals.users.category += 1;
} else {
processTopicKey(key, totals, topicData);
}
}
}

function processTopicKey(key, totals, topicData) {
console.log('GhalyaRefactoredCode2');
const tid = key.match(/^topic_(\d+)/);
if (tid) {
totals.users.topics += 1;
topicData[tid[1]] = topicData[tid[1]] || { count: 0 };
topicData[tid[1]].count += 1;
}
}

function getTopTenTopics(topicData) {
console.log('GhalyaRefactoredCode3');
const topTenTopics = [];
Object.keys(topicData).forEach((tid) => {
topTenTopics.push({ tid: tid, count: topicData[tid].count });
});
const sortedTopTenTopics = [...topTenTopics].sort((a, b) => b.count - a.count);
return sortedTopTenTopics.slice(0, 10);
}


SocketRooms.getOnlineUserCount = function (io) {
let count = 0;

Expand Down