wow, chrome-extension MUCH improved - websockets
This commit is contained in:
179
chrome-extension/DEBUG.md
Normal file
179
chrome-extension/DEBUG.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# Chrome Extension Debugging Guide
|
||||
|
||||
## Version 3.0.2 - Apollo Client Detection Issues
|
||||
|
||||
If the extension can't find Apollo Client, follow these steps to diagnose the issue:
|
||||
|
||||
### Step 1: Reload Extension and Page
|
||||
|
||||
1. Go to `chrome://extensions/`
|
||||
2. Find "Jackbox Chat Tracker for Kosmi"
|
||||
3. Click the reload icon (circular arrow)
|
||||
4. Navigate to Kosmi room: `https://app.kosmi.io/room/@yourroomname`
|
||||
5. Refresh the page (Ctrl+R or Cmd+R)
|
||||
|
||||
### Step 2: Run Debug Function
|
||||
|
||||
1. Open Chrome DevTools (F12)
|
||||
2. Go to Console tab
|
||||
3. Wait 5-10 seconds after page load (let Kosmi fully initialize)
|
||||
4. Type: `window.debugJackboxTracker()`
|
||||
5. Press Enter
|
||||
|
||||
### Step 3: Analyze Output
|
||||
|
||||
The debug function will show:
|
||||
|
||||
#### If Apollo Client is Found ✓
|
||||
```
|
||||
=== Jackbox Chat Tracker Debug ===
|
||||
✓ Apollo Client found!
|
||||
Apollo Client: ApolloClient {...}
|
||||
Apollo Client keys: ['cache', 'link', 'queryManager', ...]
|
||||
Apollo Link: {...}
|
||||
Apollo Link keys: ['client', ...]
|
||||
GraphQL client: {...}
|
||||
GraphQL client keys: ['on', 'subscribe', 'iterate', 'dispose', 'terminate']
|
||||
=== End Debug ===
|
||||
```
|
||||
|
||||
**Action:** Try clicking "Start Tracking" in the extension popup. It should work now!
|
||||
|
||||
#### If Apollo Client is NOT Found ✗
|
||||
```
|
||||
=== Jackbox Chat Tracker Debug ===
|
||||
✗ Apollo Client not found
|
||||
Checking for window.__APOLLO_CLIENT__: undefined
|
||||
Window keys that might be relevant: ['__someOtherKey__', ...]
|
||||
=== End Debug ===
|
||||
```
|
||||
|
||||
**Action:** Copy the "Window keys that might be relevant" list and report it to the developer.
|
||||
|
||||
### Step 4: Check Timing
|
||||
|
||||
If Apollo Client is not found immediately, wait longer and try again:
|
||||
|
||||
```javascript
|
||||
// Run debug after 10 seconds
|
||||
setTimeout(() => window.debugJackboxTracker(), 10000);
|
||||
```
|
||||
|
||||
### Step 5: Manual Apollo Client Search
|
||||
|
||||
If still not working, manually check for Apollo Client:
|
||||
|
||||
```javascript
|
||||
// Check if it exists
|
||||
console.log('window.__APOLLO_CLIENT__:', window.__APOLLO_CLIENT__);
|
||||
|
||||
// Search all window properties
|
||||
Object.keys(window).forEach(key => {
|
||||
if (key.includes('apollo') || key.includes('Apollo')) {
|
||||
console.log('Found Apollo-related key:', key, window[key]);
|
||||
}
|
||||
});
|
||||
|
||||
// Check if it's in a different location
|
||||
console.log('document.__APOLLO_CLIENT__:', document.__APOLLO_CLIENT__);
|
||||
```
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### Issue: "Apollo Client not found after 15 attempts"
|
||||
|
||||
**Causes:**
|
||||
1. Kosmi changed their client variable name
|
||||
2. Apollo Client loads after 15 seconds
|
||||
3. You're not on a Kosmi room page
|
||||
|
||||
**Solutions:**
|
||||
1. Wait longer (30+ seconds) and run `window.debugJackboxTracker()`
|
||||
2. Make sure you're on `app.kosmi.io/room/...` not just `app.kosmi.io`
|
||||
3. Try a different room
|
||||
4. Check if Kosmi updated their code
|
||||
|
||||
#### Issue: "GraphQL client not found in Apollo Client"
|
||||
|
||||
**Cause:** Apollo Client structure changed
|
||||
|
||||
**Solution:**
|
||||
1. Run debug function to see Apollo Client structure
|
||||
2. Look for the WebSocket client in a different location
|
||||
3. Report the structure to the developer
|
||||
|
||||
### Reporting Issues
|
||||
|
||||
When reporting Apollo Client not found, include:
|
||||
|
||||
1. **Console Output:**
|
||||
```
|
||||
// Copy ALL of this:
|
||||
window.debugJackboxTracker()
|
||||
```
|
||||
|
||||
2. **Window Keys:**
|
||||
```javascript
|
||||
// Copy this:
|
||||
Object.keys(window).filter(k => k.startsWith('__') || k.includes('apollo'))
|
||||
```
|
||||
|
||||
3. **Kosmi URL:**
|
||||
- Full URL of the room (redact room name if private)
|
||||
|
||||
4. **Browser Version:**
|
||||
- Chrome version (chrome://version/)
|
||||
|
||||
5. **Extension Version:**
|
||||
- Check `chrome://extensions/` → "Jackbox Chat Tracker" → version number
|
||||
|
||||
---
|
||||
|
||||
## Advanced Debugging
|
||||
|
||||
### Hook Detection
|
||||
|
||||
Check if the WebSocket hook is working:
|
||||
|
||||
```javascript
|
||||
// This should exist after successfully starting tracking
|
||||
console.log('GraphQL Client:', window.__APOLLO_CLIENT__?.link?.client);
|
||||
|
||||
// Try manually hooking
|
||||
const client = window.__APOLLO_CLIENT__.link.client;
|
||||
client.on('message', (data) => {
|
||||
console.log('MANUAL HOOK - Message:', data);
|
||||
});
|
||||
```
|
||||
|
||||
### Message Interception
|
||||
|
||||
Test if messages are flowing:
|
||||
|
||||
```javascript
|
||||
// Send a test message in Kosmi chat: "test thisgame++"
|
||||
// Check console for:
|
||||
// [Jackbox Chat Tracker] New message: {...}
|
||||
// [Jackbox Chat Tracker] ✓ Vote detected!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Version History
|
||||
|
||||
### v3.0.2
|
||||
- Added multiple Apollo Client detection strategies
|
||||
- Added `window.debugJackboxTracker()` debug function
|
||||
- Extended search to all window/document properties
|
||||
- Increased retry limit to 15 attempts (15-30 seconds)
|
||||
- Added detailed error logging
|
||||
|
||||
### v3.0.1
|
||||
- Fixed infinite loop on page load
|
||||
- Disabled auto-start tracking
|
||||
- Added retry limit
|
||||
|
||||
### v3.0.0
|
||||
- Initial WebSocket API implementation
|
||||
- Replaced DOM parsing with GraphQL subscriptions
|
||||
|
||||
Reference in New Issue
Block a user