Skip to content

Commit 1066a03

Browse files
committed
implement channel reordering
1 parent 78ea9b7 commit 1066a03

5 files changed

Lines changed: 568 additions & 156 deletions

File tree

src/api/WsClient.tsx

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,29 @@ import ApiCache, {memberKey} from "./ApiCache";
33
import Backoff from "./Backoff";
44
import {
55
ChannelAckEvent,
6-
ChannelCreateEvent, ChannelDeleteEvent, ChannelUpdateEvent,
6+
ChannelCreateEvent,
7+
ChannelDeleteEvent,
8+
ChannelUpdateEvent,
79
GuildCreateEvent,
8-
GuildRemoveEvent, GuildUpdateEvent,
10+
GuildRemoveEvent,
11+
GuildUpdateEvent,
912
GuildsAvailableEvent,
1013
MemberJoinEvent,
11-
MemberRemoveEvent, MemberUpdateEvent,
14+
MemberRemoveEvent,
15+
MemberUpdateEvent,
1216
MessageCreateEvent,
13-
MessageDeleteEvent, MessageUpdateEvent,
17+
MessageDeleteEvent,
18+
MessageUpdateEvent,
1419
PresenceUpdateEvent,
1520
ReadyEvent,
1621
RelationshipCreateEvent,
17-
RelationshipRemoveEvent, RequestGuildsPayload, RoleCreateEvent, RoleDeleteEvent, RolePositionsUpdateEvent, RoleUpdateEvent,
22+
RelationshipRemoveEvent,
23+
RequestGuildsPayload,
24+
RoleCreateEvent,
25+
RoleDeleteEvent,
26+
RolePositionsUpdateEvent,
27+
RoleUpdateEvent,
28+
GuildChannelPositionsUpdateEvent,
1829
TypingStartEvent,
1930
TypingStopEvent,
2031
UpdatePresencePayload,
@@ -165,6 +176,18 @@ export const WsEventHandlers: Record<string, WsEventHandler> = {
165176
role_delete(ws: WsClient, data: RoleDeleteEvent) {
166177
ws.api.cache?.deleteRole(data.role_id)
167178
},
179+
guild_channel_positions_update(ws: WsClient, data: GuildChannelPositionsUpdateEvent) {
180+
for (const { channel_id, position, parent_id } of data.positions) {
181+
const channel = ws.api.cache?.channels.get(channel_id)
182+
if (channel && 'guild_id' in channel) {
183+
ws.api.cache?.channels.set(channel_id, {
184+
...channel,
185+
position,
186+
parent_id: parent_id ?? undefined,
187+
})
188+
}
189+
}
190+
},
168191
relationship_create(ws: WsClient, data: RelationshipCreateEvent) {
169192
const prev = ws.api.cache?.relationships.get(data.relationship.user.id)
170193
ws.api.cache?.updateRelationship(data.relationship)

0 commit comments

Comments
 (0)