# GraphQL Operations Audit - Browser vs Bot ## Operations We're Currently Sending ### 1. ✅ connection_init **Status**: Correct - Sending token, ua, v, r parameters - Matches browser ### 2. ✅ ExtendedCurrentUserQuery **Status**: Correct (simplified) - **Browser**: Full query with realmInfo, colorSchemes, friends, etc. - **Bot**: Simplified to just currentUser fields we need - **Verdict**: OK - we don't need all the UI-related fields ### 3. ✅ NewMessageSubscription **Status**: Fixed (just updated) - Added channelId parameter - Added operationName - Added all required fields (member, reactions, etc.) ### 4. ✅ JoinRoom **Status**: Needs verification - **Browser**: `mutation JoinRoom($id: String!, $disconnectOtherConnections: Boolean)` - **Bot**: `mutation JoinRoom($id: String!)` - **Issue**: Missing `$disconnectOtherConnections` parameter ### 5. ✅ SendMessage2 **Status**: Fixed (just updated) - Added channelId, replyToMessageId parameters - Added operationName - Matches browser ### 6. ❌ anonLogin **Status**: Only used for anonymous - OK ## Critical Operations the Browser Sends That We're Missing ### Room Management 1. **RoomRootQuery** - Gets room metadata 2. **WithGetMembers** - Gets room members list 3. **RoomChatQuery** - Gets chat history ### Member Events (Important!) 4. **MemberJoins** - Subscription for when members join 5. **MemberLeaves** - Subscription for when members leave 6. **NewMemberSubscription** - Another member join subscription ### Message Events 7. **MessageDeletedSubscription** - When messages are deleted 8. **MessageEditedSubscription** - When messages are edited 9. **ReactionAdded** - When reactions are added 10. **ReactionRemoved** - When reactions are removed ### Typing Indicators 11. **UserTyping** - Subscription for typing indicators 12. **StartTyping** - Mutation to send typing status ### Room State 13. **RoomDisconnect** - Subscription for disconnect events 14. **SetRole2** - Role changes subscription ## Priority Operations to Add ### HIGH PRIORITY (Required for basic functionality) 1. **JoinRoom** - Fix to include `disconnectOtherConnections` parameter 2. **WithGetMembers** - May be needed to see room members properly 3. **RoomChatQuery** - May be needed to receive messages properly ### MEDIUM PRIORITY (Nice to have) 4. **MemberJoins/MemberLeaves** - For presence notifications 5. **MessageDeletedSubscription** - Handle deleted messages 6. **UserTyping** - Typing indicators (already on our roadmap) ### LOW PRIORITY (Optional) 7. All the media player, spaces, WebRTC subscriptions - Not needed for chat relay ## Next Steps 1. ✅ Fix JoinRoom mutation to include disconnectOtherConnections 2. ⏳ Test if current changes fix message sending/receiving 3. ⏳ Add WithGetMembers if needed 4. ⏳ Add RoomChatQuery if needed 5. ⏳ Add member join/leave subscriptions for better presence tracking ## Browser Operation Sequence (First Connection) 1. connection_init (with token) 2. SettingsQuery 3. ExtendedCurrentUserQuery 4. UserRoomQuery 5. WebRTCIceServerQuery 6. (various other queries) 7. **JoinRoom** ← We do this 8. (many subscriptions) 9. **NewMessageSubscription** ← We do this 10. (more subscriptions) ## Our Current Sequence 1. connection_init (with token) ✅ 2. ExtendedCurrentUserQuery ✅ 3. NewMessageSubscription ✅ 4. JoinRoom ✅ 5. (start listening) **Observation**: We're subscribing to messages BEFORE joining the room, but the browser does it AFTER. Let's check if order matters.