🐛 fix channel subscription + ready payload
This commit is contained in:
parent
45a4cd2f1d
commit
ff9e9fb8c4
@ -1,4 +1,4 @@
|
|||||||
import { db, Event, MongooseCache, UserModel, getPermission, Permissions } from "@fosscord/server-util";
|
import { db, Event, MongooseCache, UserModel, getPermission, Permissions, ChannelModel } from "@fosscord/server-util";
|
||||||
import { OPCODES } from "../util/Constants";
|
import { OPCODES } from "../util/Constants";
|
||||||
import { Send } from "../util/Send";
|
import { Send } from "../util/Send";
|
||||||
import WebSocket from "../util/WebSocket";
|
import WebSocket from "../util/WebSocket";
|
||||||
@ -36,12 +36,25 @@ function getPipeline(this: WebSocket, guilds: string[], channels: string[] = [])
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function setupListener(this: WebSocket) {
|
export async function setupListener(this: WebSocket) {
|
||||||
|
const channels = await ChannelModel.find({ recipient_ids: this.user_id }, { id: true }).exec();
|
||||||
|
console.log(
|
||||||
|
"subscribe to channels",
|
||||||
|
channels.map((x) => x.id)
|
||||||
|
);
|
||||||
const user = await UserModel.findOne({ id: this.user_id }).lean().exec();
|
const user = await UserModel.findOne({ id: this.user_id }).lean().exec();
|
||||||
var guilds = user!.guilds;
|
var guilds = user!.guilds;
|
||||||
|
|
||||||
const eventStream = new MongooseCache(db.collection("events"), getPipeline.call(this, guilds), {
|
const eventStream = new MongooseCache(
|
||||||
onlyEvents: true,
|
db.collection("events"),
|
||||||
});
|
getPipeline.call(
|
||||||
|
this,
|
||||||
|
guilds,
|
||||||
|
channels.map((x) => x.id)
|
||||||
|
),
|
||||||
|
{
|
||||||
|
onlyEvents: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
await eventStream.init();
|
await eventStream.init();
|
||||||
eventStream.on("insert", (document: Event) => dispatch.call(this, document, { eventStream, guilds }));
|
eventStream.on("insert", (document: Event) => dispatch.call(this, document, { eventStream, guilds }));
|
||||||
|
@ -98,6 +98,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
|||||||
verified: user.verified,
|
verified: user.verified,
|
||||||
bot: user.bot,
|
bot: user.bot,
|
||||||
accent_color: user.accent_color || 0,
|
accent_color: user.accent_color || 0,
|
||||||
|
banner: user.banner,
|
||||||
};
|
};
|
||||||
|
|
||||||
const d: ReadyEventData = {
|
const d: ReadyEventData = {
|
||||||
@ -130,7 +131,11 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
|||||||
version: 642,
|
version: 642,
|
||||||
},
|
},
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
private_channels: toObject(channels),
|
private_channels: toObject(channels).map((x: ChannelDocument) => {
|
||||||
|
x.recipient_ids = x.recipients.map((y: any) => y.id);
|
||||||
|
delete x.recipients;
|
||||||
|
return x;
|
||||||
|
}),
|
||||||
session_id: "", // TODO
|
session_id: "", // TODO
|
||||||
analytics_token: "", // TODO
|
analytics_token: "", // TODO
|
||||||
connected_accounts: [], // TODO
|
connected_accounts: [], // TODO
|
||||||
@ -144,7 +149,12 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
experiments: experiments, // TODO
|
experiments: experiments, // TODO
|
||||||
guild_join_requests: [], // TODO what is this?
|
guild_join_requests: [], // TODO what is this?
|
||||||
users: [public_user], // TODO
|
users: [
|
||||||
|
public_user,
|
||||||
|
...toObject(channels)
|
||||||
|
.map((x: any) => x.recipients)
|
||||||
|
.flat(),
|
||||||
|
].unique(), // TODO
|
||||||
merged_members: merged_members,
|
merged_members: merged_members,
|
||||||
// shard // TODO: only for bots sharding
|
// shard // TODO: only for bots sharding
|
||||||
// application // TODO for applications
|
// application // TODO for applications
|
||||||
|
Loading…
x
Reference in New Issue
Block a user