Quellcode durchsuchen

sort guilds on dashboard

Markus-Rost vor 4 Jahren
Ursprung
Commit
8c460264c0
3 geänderte Dateien mit 21 neuen und 7 gelöschten Zeilen
  1. 19 7
      dashboard/oauth.js
  2. 1 0
      dashboard/util.js
  3. 1 0
      main.js

+ 19 - 7
dashboard/oauth.js

@@ -136,15 +136,21 @@ function dashboard_oauth(res, state, searchParams, lastGuild) {
 				settings.user.avatar = 'https://cdn.discordapp.com/' + ( user.avatar ? `avatars/${user.id}/${user.avatar}.` + ( user.avatar.startsWith( 'a_' ) ? 'gif' : 'png' ) : `embed/avatars/${user.discriminator % 5}.png` ) + '?size=64';
 				settings.user.avatar = 'https://cdn.discordapp.com/' + ( user.avatar ? `avatars/${user.id}/${user.avatar}.` + ( user.avatar.startsWith( 'a_' ) ? 'gif' : 'png' ) : `embed/avatars/${user.discriminator % 5}.png` ) + '?size=64';
 				settings.user.locale = user.locale;
 				settings.user.locale = user.locale;
 				settings.guilds.count = guilds.length;
 				settings.guilds.count = guilds.length;
-				settings.guilds.isMember = new Map();
+				/** @type {import('./util.js').Guild[]} */
+				var isMemberGuilds = [];
 				settings.guilds.notMember = new Map();
 				settings.guilds.notMember = new Map();
 				response.forEach( (guild, i) => {
 				response.forEach( (guild, i) => {
 					if ( guild ) {
 					if ( guild ) {
 						if ( guild === 'noMember' ) return;
 						if ( guild === 'noMember' ) return;
-						settings.guilds.isMember.set(guilds[i].id, Object.assign(guilds[i], guild));
+						isMemberGuilds.push(Object.assign(guilds[i], guild));
 					}
 					}
 					else settings.guilds.notMember.set(guilds[i].id, guilds[i]);
 					else settings.guilds.notMember.set(guilds[i].id, guilds[i]);
 				} );
 				} );
+				settings.guilds.isMember = new Map(isMemberGuilds.sort( (a, b) => {
+					return ( b.patreon - a.patreon || b.memberCount - a.memberCount );
+				} ).map( guild => {
+					return [guild.id, guild];
+				} ));
 				settingsData.set(user.id, settings);
 				settingsData.set(user.id, settings);
 				if ( searchParams.has('guild_id') && !lastGuild.startsWith( searchParams.get('guild_id') + '/' ) ) {
 				if ( searchParams.has('guild_id') && !lastGuild.startsWith( searchParams.get('guild_id') + '/' ) ) {
 					lastGuild = searchParams.get('guild_id') + '/settings';
 					lastGuild = searchParams.get('guild_id') + '/settings';
@@ -197,16 +203,22 @@ function dashboard_refresh(res, userSession, returnLocation = '/') {
 			member: settings.user.id,
 			member: settings.user.id,
 			guilds: guilds.map( guild => guild.id )
 			guilds: guilds.map( guild => guild.id )
 		} ).then( response => {
 		} ).then( response => {
-			let isMember = new Map();
-			let notMember = new Map();
+			settings.guilds.count = guilds.length;
+			/** @type {import('./util.js').Guild[]} */
+			var isMemberGuilds = [];
+			settings.guilds.notMember = new Map();
 			response.forEach( (guild, i) => {
 			response.forEach( (guild, i) => {
 				if ( guild ) {
 				if ( guild ) {
 					if ( guild === 'noMember' ) return;
 					if ( guild === 'noMember' ) return;
-					isMember.set(guilds[i].id, Object.assign(guilds[i], guild));
+					isMemberGuilds.push(Object.assign(guilds[i], guild));
 				}
 				}
-				else notMember.set(guilds[i].id, guilds[i]);
+				else settings.guilds.notMember.set(guilds[i].id, guilds[i]);
 			} );
 			} );
-			settings.guilds = {count: guilds.length, isMember, notMember};
+			settings.guilds.isMember = new Map(isMemberGuilds.sort( (a, b) => {
+				return ( b.patreon - a.patreon || b.memberCount - a.memberCount );
+			} ).map( guild => {
+				return [guild.id, guild];
+			} ));
 			res.writeHead(302, {Location: returnLocation + '?refresh=success'});
 			res.writeHead(302, {Location: returnLocation + '?refresh=success'});
 			return res.end();
 			return res.end();
 		}, error => {
 		}, error => {

+ 1 - 0
dashboard/util.js

@@ -76,6 +76,7 @@ got.get( `https://discord.com/api/v8/applications/${process.env.bot}/commands`,
  * @property {String} [icon]
  * @property {String} [icon]
  * @property {String} userPermissions
  * @property {String} userPermissions
  * @property {Boolean} [patreon]
  * @property {Boolean} [patreon]
+ * @property {Number} [memberCount]
  * @property {String} [botPermissions]
  * @property {String} [botPermissions]
  * @property {Channel[]} [channels]
  * @property {Channel[]} [channels]
  * @property {Role[]} [roles]
  * @property {Role[]} [roles]

+ 1 - 0
main.js

@@ -102,6 +102,7 @@ if ( process.env.dashboard ) {
 								return guild.members.fetch('${message.data.member}').then( member => {
 								return guild.members.fetch('${message.data.member}').then( member => {
 									return {
 									return {
 										patreon: global.patreons.hasOwnProperty(guild.id),
 										patreon: global.patreons.hasOwnProperty(guild.id),
+										memberCount: guild.memberCount,
 										botPermissions: guild.me.permissions.bitfield,
 										botPermissions: guild.me.permissions.bitfield,
 										channels: guild.channels.cache.filter( channel => {
 										channels: guild.channels.cache.filter( channel => {
 											return ( channel.isGuild() || channel.type === 'category' );
 											return ( channel.isGuild() || channel.type === 'category' );