mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co> Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co>
35 lines
975 B
TypeScript
35 lines
975 B
TypeScript
import * as React from "react";
|
|
|
|
import { closeAllWebSockets } from "@/shared/api/relayWebSocketClose";
|
|
import { hasPrimaryShortcutModifier } from "@/shared/lib/platform";
|
|
|
|
const RELOAD_TEARDOWN_TIMEOUT_MS = 500;
|
|
|
|
/** Reloads the webview after bounded native WebSocket teardown. */
|
|
export function useReloadShortcut() {
|
|
React.useEffect(() => {
|
|
async function handleKeyDown(event: KeyboardEvent) {
|
|
if (
|
|
!hasPrimaryShortcutModifier(event) ||
|
|
event.altKey ||
|
|
event.shiftKey ||
|
|
event.key.toLowerCase() !== "r"
|
|
) {
|
|
return;
|
|
}
|
|
|
|
event.preventDefault();
|
|
await Promise.race([
|
|
closeAllWebSockets(),
|
|
new Promise<void>((resolve) =>
|
|
window.setTimeout(resolve, RELOAD_TEARDOWN_TIMEOUT_MS),
|
|
),
|
|
]);
|
|
window.location.reload();
|
|
}
|
|
|
|
window.addEventListener("keydown", handleKeyDown);
|
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
}, []);
|
|
}
|