mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-31 07:35:24 +00:00
fix(remote-desktop): stop unsolicited clipboard read prompts (#1482)
* fix(remote-desktop): read clipboard only on explicit paste * test(css): exercise the configured PostCSS plugin chain * test(identity): preserve full Ed25519 public keys in fixtures * test(remote-desktop): always mutate ciphertext in tamper test
This commit is contained in:
1 parent
2824b49ba9
commit
7423e33184
1 file changed
-34
@@ -815,28 +815,6 @@ export const GuacamoleDisplay = forwardRef<
|
|||||||
rescaleDisplay,
|
rescaleDisplay,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const syncClipboard = useCallback(() => {
|
|
||||||
const client = clientRef.current;
|
|
||||||
if (!client || !navigator.clipboard?.readText) return;
|
|
||||||
navigator.clipboard
|
|
||||||
.readText()
|
|
||||||
.then((text) => {
|
|
||||||
if (text) {
|
|
||||||
const stream = client.createClipboardStream("text/plain");
|
|
||||||
const writer = new Guacamole.StringWriter(stream);
|
|
||||||
writer.sendText(text);
|
|
||||||
writer.sendEnd();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(() => {});
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (isVisible && isReady) {
|
|
||||||
syncClipboard();
|
|
||||||
}
|
|
||||||
}, [isVisible, isReady, syncClipboard]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const container = containerRef.current;
|
const container = containerRef.current;
|
||||||
const protocol = connectionConfig.protocol ?? connectionConfig.type;
|
const protocol = connectionConfig.protocol ?? connectionConfig.type;
|
||||||
@@ -882,18 +860,6 @@ export const GuacamoleDisplay = forwardRef<
|
|||||||
};
|
};
|
||||||
}, [applyZoom, connectionConfig.protocol, connectionConfig.type, isReady]);
|
}, [applyZoom, connectionConfig.protocol, connectionConfig.type, isReady]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const container = containerRef.current;
|
|
||||||
if (!container || !isReady) return;
|
|
||||||
|
|
||||||
const handleFocus = () => syncClipboard();
|
|
||||||
container.addEventListener("mouseenter", handleFocus);
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
container.removeEventListener("mouseenter", handleFocus);
|
|
||||||
};
|
|
||||||
}, [isReady, syncClipboard]);
|
|
||||||
|
|
||||||
const canDropFiles = allowUpload && onDropFiles != null;
|
const canDropFiles = allowUpload && onDropFiles != null;
|
||||||
const [isDraggingFiles, setIsDraggingFiles] = useState(false);
|
const [isDraggingFiles, setIsDraggingFiles] = useState(false);
|
||||||
// Nested elements fire dragleave as the pointer crosses them, so track depth
|
// Nested elements fire dragleave as the pointer crosses them, so track depth
|
||||||
|
|||||||
Reference in new issue
Block a user