diff --git a/src/util/entities/Channel.ts b/src/util/entities/Channel.ts
index 4e7123f0..1fa552b2 100644
--- a/src/util/entities/Channel.ts
+++ b/src/util/entities/Channel.ts
@@ -32,7 +32,7 @@ import { User } from "./User";
import { VoiceState } from "./VoiceState";
import { Webhook } from "./Webhook";
import { Member } from "./Member";
-import { ChannelPermissionOverwrite, ChannelType, PublicUserProjection, ThreadMetadata } from "@spacebar/schemas";
+import { ChannelPermissionOverwrite, ChannelType, PublicChannel, PublicUserProjection, ThreadMetadata } from "@spacebar/schemas";
import { OrmUtils } from "../imports";
import { ThreadMember } from "./ThreadMember";
@@ -409,18 +409,18 @@ export class Channel extends BaseClass {
newly_created: true,
},
guild_id: channel.guild_id,
- } as ThreadCreateEvent),
+ } satisfies ThreadCreateEvent),
emitEvent({
event: "THREAD_MEMBERS_UPDATE",
data: {
- guild_id: channel.guild_id,
+ guild_id: channel.guild_id!, // TODO: is this the right fix?
id: thread.id,
- member_count: channel.member_count,
+ member_count: channel.member_count ?? 0, //TODO: is this the right fix?
added_members: [threadMember],
removed_member_ids: [],
},
guild_id: channel.guild_id,
- } as ThreadMembersUpdateEvent),
+ } satisfies ThreadMembersUpdateEvent),
]);
}
@@ -703,9 +703,12 @@ export class Channel extends BaseClass {
}
}
- toJSON() {
+ toJSON(): PublicChannel {
return {
...this,
+ last_pin_timestamp: this.last_pin_timestamp?.toISOString(),
+ recipients: undefined, //this.recipients?.map(x=>x.user.toPublicUser()), // TODO: fix me
+ owner: undefined, // TODO: fix me - this is thread owner
// these fields are not returned depending on the type of channel
bitrate: this.bitrate || undefined,
diff --git a/src/util/entities/ThreadMember.ts b/src/util/entities/ThreadMember.ts
index 22741bd6..a24ba3e9 100644
--- a/src/util/entities/ThreadMember.ts
+++ b/src/util/entities/ThreadMember.ts
@@ -106,13 +106,13 @@ export class ThreadMember extends BaseClassWithoutId {
emitEvent({
event: "THREAD_MEMBERS_UPDATE",
data: {
- guild_id: channel.guild_id,
+ guild_id: channel.guild_id!, // TODO: is this the right fix?
id: channel.id,
- member_count: channel.member_count,
+ member_count: channel.member_count ?? 0,
removed_member_ids: [member_id],
},
channel_id: thread_id,
- } as ThreadMembersUpdateEvent),
+ } satisfies ThreadMembersUpdateEvent),
]);
}
diff --git a/src/util/interfaces/Event.ts b/src/util/interfaces/Event.ts
index 87c8c812..0072bb25 100644
--- a/src/util/interfaces/Event.ts
+++ b/src/util/interfaces/Event.ts
@@ -44,6 +44,7 @@ import {
GuildCreateResponse,
InteractionFailureReason,
PartialEmoji,
+ PublicChannel,
PublicMember,
PublicUser,
PublicVoiceState,
@@ -161,17 +162,17 @@ export interface ReadyEvent extends Event {
export interface ChannelCreateEvent extends Event {
event: "CHANNEL_CREATE";
- data: Channel;
+ data: PublicChannel;
}
export interface ChannelUpdateEvent extends Event {
event: "CHANNEL_UPDATE";
- data: Channel;
+ data: PublicChannel;
}
export interface ChannelDeleteEvent extends Event {
event: "CHANNEL_DELETE";
- data: Channel;
+ data: PublicChannel;
}
export interface ChannelPinsUpdateEvent extends Event {
@@ -630,17 +631,17 @@ export interface GuildMemberListUpdate extends Event {
export interface ThreadCreateEvent extends Event {
event: "THREAD_CREATE";
- data: Channel & { newly_created: boolean };
+ data: PublicChannel & { newly_created: boolean };
}
export interface ThreadUpdatEvent extends Event {
event: "THREAD_UPDATE";
- data: Channel;
+ data: PublicChannel;
}
export interface ThreadDeleteEvent extends Event {
event: "THREAD_DELETE";
- data: Pick<Channel, "id" | "guild_id" | "parent_id" | "type">;
+ data: Pick<PublicChannel, "id" | "guild_id" | "parent_id" | "type">;
}
export interface ThreadListSyncEvent extends Event {
|