sync
This commit is contained in:
144
MISSING_OPERATIONS.md
Normal file
144
MISSING_OPERATIONS.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# Missing GraphQL Operations
|
||||
|
||||
## Analysis of Browser HAR vs Our Implementation
|
||||
|
||||
After parsing `loggedin_full_stack_1.har.txt`, we found the browser's actual sequence:
|
||||
|
||||
### What We're Currently Doing
|
||||
|
||||
1. connection_init ✅
|
||||
2. ExtendedCurrentUserQuery ✅
|
||||
3. JoinRoom ✅
|
||||
4. RoomDisconnect subscription ✅
|
||||
5. NewMessageSubscription ✅
|
||||
|
||||
### What the Browser Actually Does (Simplified)
|
||||
|
||||
1. connection_init
|
||||
2. ExtendedCurrentUserQuery
|
||||
3. **JoinRoom** ← We do this
|
||||
4. [12-21] Various global subscriptions (notifications, private messages, etc.)
|
||||
5. [22] **GetRunningApp** query
|
||||
6. [23] **RoomRootQuery** query
|
||||
7. [24] **WithGetMembers** query
|
||||
8. [25] **GetSpacesState** query
|
||||
9. [26] **RoomChatQuery** ← **CRITICAL - Gets chat history!**
|
||||
10. [27] **LinkedMembers** query
|
||||
11. [28-33] Media/player queries
|
||||
12. [34] **RoomDisconnect** subscription ← We do this
|
||||
13. [35] **MemberJoins** subscription ← **MISSING!**
|
||||
14. [36] **MemberLeaves** subscription ← **MISSING!**
|
||||
15. [37] **SetRole2** subscription
|
||||
16. [38] **NewMessageSubscription** ← We do this
|
||||
|
||||
## Critical Missing Operations
|
||||
|
||||
### 1. RoomChatQuery (MOST IMPORTANT)
|
||||
**Variables**: `{roomId: "@hyperspaceout", channelId: "general", cursor: null}`
|
||||
**Returns**: Chat history (✅ GOT DATA)
|
||||
**Why it matters**: This query likely registers the bot as "present" in the chat and loads message history.
|
||||
|
||||
```graphql
|
||||
query RoomChatQuery($roomId: String!, $channelId: String!, $cursor: String) {
|
||||
chatArchive(roomId: $roomId, channelId: $channelId, cursor: $cursor) {
|
||||
forwardCursor
|
||||
backCursor
|
||||
results {
|
||||
id
|
||||
user {
|
||||
id
|
||||
isAnonymous
|
||||
isSubscribed
|
||||
username
|
||||
displayName
|
||||
avatarUrl
|
||||
__typename
|
||||
}
|
||||
member {
|
||||
id
|
||||
role
|
||||
__typename
|
||||
}
|
||||
body
|
||||
time
|
||||
editedAt
|
||||
originalBody
|
||||
reactions {
|
||||
emoji
|
||||
userObjects {
|
||||
id
|
||||
displayName
|
||||
avatarUrl
|
||||
__typename
|
||||
}
|
||||
__typename
|
||||
}
|
||||
__typename
|
||||
}
|
||||
room {
|
||||
id
|
||||
state {
|
||||
members {
|
||||
id
|
||||
__typename
|
||||
}
|
||||
__typename
|
||||
}
|
||||
__typename
|
||||
}
|
||||
__typename
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. MemberJoins Subscription
|
||||
**Variables**: `{roomId: "@hyperspaceout"}`
|
||||
**Why it matters**: Notifies when members join the room.
|
||||
|
||||
```graphql
|
||||
subscription MemberJoins($roomId: String!) {
|
||||
memberJoins(roomId: $roomId) {
|
||||
id
|
||||
role
|
||||
user {
|
||||
id
|
||||
username
|
||||
displayName
|
||||
avatarUrl
|
||||
isAnonymous
|
||||
__typename
|
||||
}
|
||||
__typename
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. MemberLeaves Subscription
|
||||
**Variables**: `{roomId: "@hyperspaceout"}`
|
||||
**Why it matters**: Notifies when members leave the room.
|
||||
|
||||
```graphql
|
||||
subscription MemberLeaves($roomId: String!) {
|
||||
memberLeaves(roomId: $roomId) {
|
||||
id
|
||||
__typename
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Implementation Priority
|
||||
|
||||
1. **HIGH**: Add `RoomChatQuery` BEFORE `NewMessageSubscription`
|
||||
- This is likely why the bot isn't visible - it never "announces" its presence by loading the chat
|
||||
2. **MEDIUM**: Add `MemberJoins` and `MemberLeaves` subscriptions
|
||||
- These help the bot track room membership
|
||||
3. **LOW**: Add other room queries (GetRunningApp, RoomRootQuery, etc.)
|
||||
- These are nice-to-have but probably not critical for basic chat functionality
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Add `RoomChatQuery` after `JoinRoom` and before `NewMessageSubscription`
|
||||
2. Add `MemberJoins` and `MemberLeaves` subscriptions
|
||||
3. Test to see if bot becomes visible in chat
|
||||
4. If still not working, add more of the room queries
|
||||
|
||||
Reference in New Issue
Block a user