🐛 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 { Send } from "../util/Send"; | ||||
| import WebSocket from "../util/WebSocket"; | ||||
| @ -36,12 +36,25 @@ function getPipeline(this: WebSocket, guilds: string[], channels: string[] = []) | ||||
| } | ||||
| 
 | ||||
| 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(); | ||||
| 	var guilds = user!.guilds; | ||||
| 
 | ||||
| 	const eventStream = new MongooseCache(db.collection("events"), getPipeline.call(this, guilds), { | ||||
| 		onlyEvents: true, | ||||
| 	}); | ||||
| 	const eventStream = new MongooseCache( | ||||
| 		db.collection("events"), | ||||
| 		getPipeline.call( | ||||
| 			this, | ||||
| 			guilds, | ||||
| 			channels.map((x) => x.id) | ||||
| 		), | ||||
| 		{ | ||||
| 			onlyEvents: true, | ||||
| 		} | ||||
| 	); | ||||
| 
 | ||||
| 	await eventStream.init(); | ||||
| 	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, | ||||
| 		bot: user.bot, | ||||
| 		accent_color: user.accent_color || 0, | ||||
| 		banner: user.banner, | ||||
| 	}; | ||||
| 
 | ||||
| 	const d: ReadyEventData = { | ||||
| @ -130,7 +131,11 @@ export async function onIdentify(this: WebSocket, data: Payload) { | ||||
| 			version: 642, | ||||
| 		}, | ||||
| 		// @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
 | ||||
| 		analytics_token: "", // TODO
 | ||||
| 		connected_accounts: [], // TODO
 | ||||
| @ -144,7 +149,12 @@ export async function onIdentify(this: WebSocket, data: Payload) { | ||||
| 		// @ts-ignore
 | ||||
| 		experiments: experiments, // TODO
 | ||||
| 		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, | ||||
| 		// shard // TODO: only for bots sharding
 | ||||
| 		// application // TODO for applications
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Flam3rboy
						Flam3rboy