You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sessioncommunities.online-a.../output/script2.js

156 lines
5.1 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

var numberOfHiddenCommunities = 0;
function onLoad(timestamp) {
setLastChecked(timestamp);
hideBadCommunities();
sortTable(2); // 2 == Name
createJoinLinkButtons();
}
function displayQRModal(communityID) {
const modalID = "modal_" + communityID;
const modal = document.getElementById(modalID);
modal.style.display = "block";
}
function hideQRModal(communityID) {
const modalID = "modal_" + communityID;
const modal = document.getElementById(modalID);
modal.style.display = "none";
}
function createJoinLinkButtons() {
const elements = document.getElementsByClassName("td_join_url");
Array.from(elements).forEach((td_element) => {
const a_href = td_element.getElementsByTagName('a')[0]; // get first (only) <a> element
const join_link = a_href.getAttribute("href"); // get link
const cell_content = join_link.substring(0, 31) + "...<button class=\"copy_button\" onclick=\"copyToClipboard('" + join_link + "')\">Copy</button>";
td_element.innerHTML = cell_content;
});
}
function hideBadCommunities() {
const testCommunityIDs = [
"2e9345+c7fb", // TestRoom
"762ba9+c7fb", // TesterRoom
"b4d829+c7fb", // Test
"e5853a+c7fb", // testtest
"fishing+8e2e", // Example from here: https://github.com/oxen-io/session-pysogs/blob/0a5a58eb9f53e78f9ec93d2357cec3db18cefe79/administration.md
"test+118d", // Testing 1, 2, 3
"test+13f6", // Testing room
"test+c01b", // Testing room
"test+fe93", // 测试Test)
"xyz+efca", // XYZ Room
];
const badCommunityIDs = [
"60fa60+c7fb", // "N-word" Community
"ab1a4d+c7fb", // zUnsensored Group (CSAM)
"gore+e5e0" // gore
];
// These communities should be checked regularly in case they updated their PySOGS version
const legacyCommunitiyIDs = [
"Ukraine+02bd" // https://reccacon.com/view/room/Ukraine
];
testCommunityIDs.forEach(hideElementByID);
badCommunityIDs.forEach(hideElementByID);
legacyCommunitiyIDs.forEach(hideElementByID);
const summary = document.getElementById("td_summary");
summaryNew = summary.innerHTML + " (" + numberOfHiddenCommunities + " hidden)";
summary.innerHTML = summaryNew;
}
function hideElementByID(id) {
const element = document.getElementById(id);
if(element != null) {
element.remove();
numberOfHiddenCommunities++;
}
}
function copyToClipboard(text) {
navigator.clipboard.writeText(text);
// Snackbar
const snackbar = document.getElementById("copy-snackbar");
// Add the "show" class to DIV
snackbar.className = "show";
// After 3 seconds, remove the show class from DIV
setTimeout(function(){ snackbar.className = snackbar.className.replace("show", ""); }, 3000);
}
function setLastChecked(timestamp) {
const now = Math.floor(Date.now() / 1000); // timestamp in seconds
const time_passed_in_seconds = now - timestamp;
const time_passed_in_minutes = Math.floor(time_passed_in_seconds / 60); // time in minutes, rounded down
const td_last_checked = document.getElementById("td_last_checked");
td_last_checked.innerHTML = "Last checked " + time_passed_in_minutes + " minutes ago.";
}
function sortTable(n) {
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("tbl_communities");
switching = true;
// Set the sorting direction to ascending:
dir = "asc";
/* Make a loop that will continue until
no switching has been don*e: */
while (switching) {
// Start by saying: no switching is done:
switching = false;
rows = table.rows;
// Loop through all table rows (except the first, which contains table headers):
for (i = 1; i < (rows.length - 1); i++) {
// Start by saying there should be no switching:
shouldSwitch = false;
// Get the two elements you want to compare, one from current row and one from the next:
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
// Check if the two rows should switch place, based on the direction, asc or desc:
if (dir == "asc") {
// If columns is users (4), sort numerically
if ( n == 4 ) {
if (Number(x.innerHTML) > Number(y.innerHTML)) {
shouldSwitch = true;
break;
}
} else if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
// If so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
else if (dir == "desc") {
if ( n == 4 ) {
// If columns is users (4), sort numerically
if (Number(x.innerHTML) < Number(y.innerHTML)) {
shouldSwitch = true;
break;
}
} else if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
// If so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
}
if (shouldSwitch) {
// If a switch has been marked, make the switch and mark that a switch has been done:
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
// Each time a switch is done, increase this count by 1:
switchcount ++;
} else {
// If no switching has been done AND the direction is "asc", set the direction to "desc" and run the while loop again.
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}