Migrate PresenceUpdateEvent to satisfies, part of #1577

This commit is contained in:
Rory&
2026-03-08 18:07:16 +01:00
parent 851f0e7600
commit bd42196733
4 changed files with 17 additions and 21 deletions

View File

@@ -91,7 +91,7 @@ router.patch(
client_status: session?.client_status,
status: session.getPublicStatus(),
},
} as PresenceUpdateEvent),
} satisfies PresenceUpdateEvent),
session.save(),
]);
}

View File

@@ -77,23 +77,19 @@ export async function Close(this: WebSocket, code: number, reason: Buffer) {
status: "offline",
};
// TODO
// If a user was deleted, they may still be connected to gateway,
// which will cause this to throw when they disconnect.
// just send the ID of the user instead of the full correct payload for now
const userOrId = await User.getPublicUser(this.user_id).catch(() => ({
id: this.user_id,
}));
const user = await User.getPublicUser(this.user_id).catch(() => undefined);
await emitEvent({
event: "PRESENCE_UPDATE",
user_id: this.user_id,
data: {
user: userOrId,
activities: session.activities,
client_status: session?.client_status,
status: session.getPublicStatus?.() ?? session.status,
},
} as PresenceUpdateEvent);
// Special case: dont emit a presence update for deleted users
if (user !== undefined)
await emitEvent({
event: "PRESENCE_UPDATE",
user_id: this.user_id,
data: {
user: user,
activities: session.activities,
client_status: session?.client_status,
status: session.getPublicStatus?.() ?? session.status,
},
} satisfies PresenceUpdateEvent);
}
}

View File

@@ -585,7 +585,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
client_status: this.session!.client_status,
status: this.session!.getPublicStatus(),
},
} as PresenceUpdateEvent),
} satisfies PresenceUpdateEvent),
),
]);

View File

@@ -39,10 +39,10 @@ export async function onPresenceUpdate(this: WebSocket, { d }: Payload) {
data: {
user: await User.getPublicUser(this.user_id),
status: session.getPublicStatus(),
activities: presence.activities,
activities: presence.activities ?? [],
client_status: session.client_status,
},
} as PresenceUpdateEvent);
} satisfies PresenceUpdateEvent);
console.log(`Presence update for user ${this.user_id} processed in ${Date.now() - startTime}ms`);
}