channel-worker 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/command-poller.js +23 -2
- package/package.json +1 -1
package/lib/command-poller.js
CHANGED
|
@@ -650,10 +650,31 @@ class CommandPoller {
|
|
|
650
650
|
console.log(`[commands] File chooser: ${chooserResult}`);
|
|
651
651
|
|
|
652
652
|
if (chooserResult === 'opened') {
|
|
653
|
-
|
|
653
|
+
// File chooser intercepted — set file + trigger events
|
|
654
|
+
const doc = await send('DOM.getDocument');
|
|
655
|
+
let targetNode = await send('DOM.querySelector', { nodeId: doc.root.nodeId, selector: 'input[type="file"][accept*="image"]' });
|
|
656
|
+
if (!targetNode?.nodeId) {
|
|
657
|
+
targetNode = await send('DOM.querySelector', { nodeId: doc.root.nodeId, selector: 'input[type="file"]' });
|
|
658
|
+
}
|
|
659
|
+
if (targetNode?.nodeId) {
|
|
660
|
+
await send('DOM.setFileInputFiles', { nodeId: targetNode.nodeId, files: [file_path] });
|
|
661
|
+
// Trigger change/input events so React picks it up
|
|
662
|
+
await send('Runtime.evaluate', {
|
|
663
|
+
expression: `
|
|
664
|
+
const inputs = document.querySelectorAll('input[type="file"]');
|
|
665
|
+
inputs.forEach(inp => {
|
|
666
|
+
inp.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
|
|
667
|
+
inp.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
|
|
668
|
+
});
|
|
669
|
+
'triggered'
|
|
670
|
+
`,
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
// Disable intercept + wait for Facebook to process
|
|
654
674
|
await send('Page.setInterceptFileChooserDialog', { enabled: false });
|
|
675
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
655
676
|
ws.close();
|
|
656
|
-
resolve({ success: true, method: '
|
|
677
|
+
resolve({ success: true, method: 'file_chooser_intercepted' });
|
|
657
678
|
} else {
|
|
658
679
|
await send('Page.setInterceptFileChooserDialog', { enabled: false });
|
|
659
680
|
ws.close();
|