// #region Loaded Servers var loadedServers = {}; // Returns the currently active server, or null if none are active. function getCurrentlyActiveServer() { const activeServerAndId = Object.entries(loadedServers).find(([id, server]) => server.currentlyActive); if (activeServerAndId === undefined) return null; var [id, activeServer] = activeServerAndId; activeServer.id = id; return activeServer; } // Returns the requested server from the provided snowflake id function getServerFromSnowflake(guildId) { const serverAndId = Object.entries(loadedServers).find(([id, server]) => server.guild_id == guildId); if (serverAndId === undefined) return null; var [id, server] = serverAndId; server.id = id; return server; } function addToLoadedServers(server, selectNew=true) { // Remove the 'id' property and add the 'currentlyActive' property ({id, ...rest} = server, server = {...rest, currentlyActive: false}) // Save the server as loaded loadedServers[id] = server; // Display the loaded server addServerTemplate(id, sanitise(server.guild_id), sanitise(server.name), sanitise(server.icon), sanitise(server.permissions), sanitise(server.owner)); // Select the newly added server if (selectNew) { selectServer(id); } } function removeFromLoadedServers(serverPrimaryKey) { delete loadedServers[serverPrimaryKey]; removeServerTemplate(serverPrimaryKey); $("#backToSelectServer").click(); } // #endregion // #region Server Back Btn $("#backToSelectServer").on("click", function() { $("#noSelectedServer").show(); $("#selectedServerContainer").hide(); }); // #endregion // #region Server Modal $("#serverOptionsRefreshBtn").on("click", async function() { await loadServerOptions(); }); // Load server options into the 'Add Server' dropdown async function loadServerOptions() { // Disable controls while loading $("#serverOptions").prop("disabled", true); $("#serverOptionsRefreshBtn").prop("disabled", true).find("i.bi").addClass("spinning-360"); // Remove existing options $("#serverOptions option").each(function() { if ($(this).val()) { $(this).remove(); } }); // Deselect any selected option $("#serverOptions").val(null).trigger("change"); // Fetch and append the server options try { const servers = await loadGuilds(); servers.forEach(server => { $("#serverOptions").append($("