Claude: Add a short delay before taking any screenshot

This commit is contained in:
Alessandro Pignotti 2024-12-20 12:29:44 +01:00
parent 4a5a228011
commit 0c567163b2

View File

@ -352,11 +352,11 @@
} }
return null; return null;
} }
async function yieldHelper() async function yieldHelper(timeout)
{ {
return new Promise(function(f2, r2) return new Promise(function(f2, r2)
{ {
setTimeout(f2, 0); setTimeout(f2, timeout);
}); });
} }
async function kmsSendChar(textArea, charStr) async function kmsSendChar(textArea, charStr)
@ -366,7 +366,7 @@
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
var ke = new KeyboardEvent("keyup"); var ke = new KeyboardEvent("keyup");
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
await yieldHelper(); await yieldHelper(0);
} }
async function handleTool(tool) async function handleTool(tool)
{ {
@ -412,6 +412,8 @@
{ {
case "screenshot": case "screenshot":
{ {
// Insert a 3 seconds delay unconditionally, the reference implementation uses 2
await yieldHelper(3000);
var delayCount = 0; var delayCount = 0;
var display = document.getElementById("display"); var display = document.getElementById("display");
var dc = get(displayConfig); var dc = get(displayConfig);
@ -439,7 +441,7 @@
console.warn("Identical screenshot, rate limiting"); console.warn("Identical screenshot, rate limiting");
delayCount++; delayCount++;
// Wait some time and retry // Wait some time and retry
await new Promise(function(f, r) { setTimeout(f, 5000); }); await yieldHelper(5000);
continue; continue;
} }
} }
@ -514,7 +516,7 @@
key = key.substr("shift+".length); key = key.substr("shift+".length);
var ke = new KeyboardEvent("keydown", {keyCode: 0x10}); var ke = new KeyboardEvent("keydown", {keyCode: 0x10});
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
await yieldHelper(); await yieldHelper(0);
continue; continue;
} }
else if(key.startsWith("ctrl+")) else if(key.startsWith("ctrl+"))
@ -523,7 +525,7 @@
key = key.substr("ctrl+".length); key = key.substr("ctrl+".length);
var ke = new KeyboardEvent("keydown", {keyCode: 0x11}); var ke = new KeyboardEvent("keydown", {keyCode: 0x11});
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
await yieldHelper(); await yieldHelper(0);
continue; continue;
} }
else if(key.startsWith("alt+")) else if(key.startsWith("alt+"))
@ -532,7 +534,7 @@
key = key.substr("alt+".length); key = key.substr("alt+".length);
var ke = new KeyboardEvent("keydown", {keyCode: 0x12}); var ke = new KeyboardEvent("keydown", {keyCode: 0x12});
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
await yieldHelper(); await yieldHelper(0);
continue; continue;
} }
break; break;
@ -559,19 +561,19 @@
{ {
var ke = new KeyboardEvent("keyup", {keyCode: 0x10}); var ke = new KeyboardEvent("keyup", {keyCode: 0x10});
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
await yieldHelper(); await yieldHelper(0);
} }
if(isCtrl) if(isCtrl)
{ {
var ke = new KeyboardEvent("keyup", {keyCode: 0x11}); var ke = new KeyboardEvent("keyup", {keyCode: 0x11});
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
await yieldHelper(); await yieldHelper(0);
} }
if(isAlt) if(isAlt)
{ {
var ke = new KeyboardEvent("keyup", {keyCode: 0x12}); var ke = new KeyboardEvent("keyup", {keyCode: 0x12});
textArea.dispatchEvent(ke); textArea.dispatchEvent(ke);
await yieldHelper(); await yieldHelper(0);
} }
return ret; return ret;
} }