const cheerio = require('cheerio'); const {defaultPermissions} = require('../util/default.json'); const {settingsData, createNotice} = require('./util.js'); const forms = { settings: require('./settings.js').get, verification: require('./verification.js').get, rcscript: require('./rcscript.js').get }; const DiscordOauth2 = require('discord-oauth2'); const oauth = new DiscordOauth2( { clientId: process.env.bot, clientSecret: process.env.secret, redirectUri: process.env.dashboard } ); const file = require('fs').readFileSync('./dashboard/index.html'); /** * Let a user view settings * @param {import('http').ServerResponse} res - The server response * @param {String} state - The user state * @param {URL} reqURL - The used url */ function dashboard_guilds(res, state, reqURL) { var args = reqURL.pathname.split('/'); var settings = settingsData.get(state); var $ = cheerio.load(file); if ( reqURL.searchParams.get('refresh') === 'success' ) { createNotice($, { type: 'success', title: 'Refresh successful!', text: 'Your server list has been successfully refeshed.' }).prependTo('#text'); } if ( reqURL.searchParams.get('refresh') === 'failed' ) { createNotice($, { type: 'error', title: 'Refresh failed!', text: 'You server list could not be refreshed, please try again.' }).prependTo('#text'); } if ( reqURL.searchParams.get('save') === 'success' ) { createNotice($, { type: 'success', title: 'Settings saved!', text: 'The settings have been updated successfully.' }).prependTo('#text'); } if ( reqURL.searchParams.get('save') === 'failed' ) { createNotice($, { type: 'error', title: 'Save failed!', text: 'The settings could not be saved, please try again.' }).prependTo('#text'); } if ( process.env.READONLY ) { createNotice($, { type: 'info', title: 'Read-only database!', text: 'You can currently only view your settings but not change them.' }).prependTo('#text'); } $('#logout img').attr('src', settings.user.avatar); $('#logout span').text(`${settings.user.username} #${settings.user.discriminator}`); $('.guild#invite a').attr('href', oauth.generateAuthUrl( { scope: ['identify', 'guilds', 'bot'], permissions: defaultPermissions, state } )); $('.guild#refresh a').attr('href', '/refresh?return=' + reqURL.pathname); if ( settings.guilds.isMember.size ) { $('
').append( $('
') ).insertBefore('.guild#last-separator'); settings.guilds.isMember.forEach( guild => { $('
').attr('id', guild.id).append( $('
'), $('').attr('href', `/guild/${guild.id}/settings`).attr('alt', guild.name).append( ( guild.icon ? $('').attr('src', `${guild.icon}?size=64`).attr('alt', guild.name) : $('
').text(guild.acronym) ) ) ).insertBefore('.guild#last-separator'); } ); } if ( settings.guilds.notMember.size ) { $('
').append( $('
') ).insertBefore('.guild#last-separator'); settings.guilds.notMember.forEach( guild => { $('
').attr('id', guild.id).append( $('
'), $('').attr('href', `/guild/${guild.id}`).attr('alt', guild.name).append( ( guild.icon ? $('').attr('src', `${guild.icon}?size=64`).attr('alt', guild.name) : $('
').text(guild.acronym) ) ) ).insertBefore('.guild#last-separator'); } ); } if ( args[1] === 'guild' ) { let id = args[2]; $(`.guild#${id}`).addClass('selected'); if ( settings.guilds.isMember.has(id) ) { let guild = settings.guilds.isMember.get(id); $('head title').text(`${guild.name} – ` + $('head title').text()); $('