summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/api/routes/guilds/#guild_id/index.ts2
-rw-r--r--src/gateway/opcodes/Identify.ts2
-rw-r--r--src/util/dtos/ReadyGuildDTO.ts4
-rw-r--r--src/util/entities/Channel.ts12
-rw-r--r--src/util/entities/Guild.ts7
-rw-r--r--src/util/entities/User.ts2
-rw-r--r--src/util/util/JSON.ts10
7 files changed, 35 insertions, 4 deletions
diff --git a/src/api/routes/guilds/#guild_id/index.ts b/src/api/routes/guilds/#guild_id/index.ts
index afe60614..86777b36 100644
--- a/src/api/routes/guilds/#guild_id/index.ts
+++ b/src/api/routes/guilds/#guild_id/index.ts
@@ -161,7 +161,7 @@ router.patch(
 		const data = guild.toJSON();
 		// TODO: guild hashes
 		// TODO: fix vanity_url_code, template_id
-		delete data.vanity_url_code;
+		// delete data.vanity_url_code;
 		delete data.template_id;
 
 		await Promise.all([
diff --git a/src/gateway/opcodes/Identify.ts b/src/gateway/opcodes/Identify.ts
index 837ae351..0f91df3e 100644
--- a/src/gateway/opcodes/Identify.ts
+++ b/src/gateway/opcodes/Identify.ts
@@ -265,6 +265,8 @@ export async function onIdentify(this: WebSocket, data: Payload) {
 		return {
 			...member.guild.toJSON(),
 			joined_at: member.joined_at,
+
+			threads: [],
 		};
 	});
 
diff --git a/src/util/dtos/ReadyGuildDTO.ts b/src/util/dtos/ReadyGuildDTO.ts
index 7ca268a0..905ede74 100644
--- a/src/util/dtos/ReadyGuildDTO.ts
+++ b/src/util/dtos/ReadyGuildDTO.ts
@@ -49,12 +49,12 @@ export interface ReadyPrivateChannel {
 
 export type GuildOrUnavailable =
 	| { id: string; unavailable: boolean }
-	| (Guild & { joined_at?: Date; unavailable: boolean });
+	| (Guild & { joined_at?: Date; unavailable: undefined });
 
 const guildIsAvailable = (
 	guild: GuildOrUnavailable,
 ): guild is Guild & { joined_at: Date; unavailable: false } => {
-	return guild.unavailable == false;
+	return guild.unavailable != true;
 };
 
 export interface IReadyGuildDTO {
diff --git a/src/util/entities/Channel.ts b/src/util/entities/Channel.ts
index 19a7a41a..38627c39 100644
--- a/src/util/entities/Channel.ts
+++ b/src/util/entities/Channel.ts
@@ -468,6 +468,18 @@ export class Channel extends BaseClass {
 		];
 		return disallowedChannelTypes.indexOf(this.type) == -1;
 	}
+
+	toJSON() {
+		return {
+			...this,
+
+			// these fields are not returned depending on the type of channel
+			bitrate: this.bitrate || undefined,
+			user_limit: this.user_limit || undefined,
+			rate_limit_per_user: this.rate_limit_per_user || undefined,
+			owner_id: this.owner_id || undefined,
+		};
+	}
 }
 
 export interface ChannelPermissionOverwrite {
diff --git a/src/util/entities/Guild.ts b/src/util/entities/Guild.ts
index 4c2949a3..e364ed98 100644
--- a/src/util/entities/Guild.ts
+++ b/src/util/entities/Guild.ts
@@ -390,4 +390,11 @@ export class Guild extends BaseClass {
 
 		return guild;
 	}
+
+	toJSON() {
+		return {
+			...this,
+			unavailable: this.unavailable == false ? undefined : true,
+		};
+	}
 }
diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts
index 68d7b5e8..3f1bda05 100644
--- a/src/util/entities/User.ts
+++ b/src/util/entities/User.ts
@@ -175,7 +175,7 @@ export class User extends BaseClass {
 	email?: string; // email of the user
 
 	@Column()
-	flags: string = "0"; // UserFlags // TODO: generate
+	flags: number = 0; // UserFlags // TODO: generate
 
 	@Column()
 	public_flags: number = 0;
diff --git a/src/util/util/JSON.ts b/src/util/util/JSON.ts
index 1c39b66e..c7dcf47e 100644
--- a/src/util/util/JSON.ts
+++ b/src/util/util/JSON.ts
@@ -27,6 +27,16 @@ const JSONReplacer = function (
 		return (this[key] as Date).toISOString().replace("Z", "+00:00");
 	}
 
+	// erlpack encoding doesn't call json.stringify,
+	// so our toJSON functions don't get called.
+	// manually call it here
+	// eslint-disable-next-line @typescript-eslint/ban-ts-comment
+	//@ts-ignore
+	if (this?.[key]?.toJSON)
+		// eslint-disable-next-line @typescript-eslint/ban-ts-comment
+		//@ts-ignore
+		this[key] = this[key].toJSON();
+
 	return value;
 };