aboutsummaryrefslogtreecommitdiff
path: root/components/secret.js
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-10-22 19:43:17 +0700
committerGitHub <[email protected]>2023-10-22 19:43:17 +0700
commitf801f8f422954b884a6541321dba0669ee9d6173 (patch)
treee0d5e106b99e9b4e0a4c4bf7bb0464617db85b8d /components/secret.js
parentBump @babel/traverse from 7.22.8 to 7.23.2 (#90) (diff)
downloadmoopa-4.2.0.tar.xz
moopa-4.2.0.zip
Update v4.2.0 (#93)v4.2.0
Diffstat (limited to 'components/secret.js')
-rw-r--r--components/secret.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/components/secret.js b/components/secret.js
new file mode 100644
index 0000000..782fcf5
--- /dev/null
+++ b/components/secret.js
@@ -0,0 +1,36 @@
+import { useEffect, useState } from "react";
+
+export default function SecretPage({ cheatCode, onCheatCodeEntered }) {
+ const [typedCode, setTypedCode] = useState("");
+ const [timer, setTimer] = useState(null);
+
+ const handleKeyPress = (e) => {
+ const newTypedCode = typedCode + e.key;
+
+ if (newTypedCode === cheatCode) {
+ onCheatCodeEntered();
+ setTypedCode("");
+ } else {
+ setTypedCode(newTypedCode);
+
+ // Reset the timer if the user stops typing for 2 seconds
+ clearTimeout(timer);
+ const newTimer = setTimeout(() => {
+ setTypedCode("");
+ }, 2000);
+ setTimer(newTimer);
+ }
+ };
+
+ useEffect(() => {
+ window.addEventListener("keydown", handleKeyPress);
+
+ return () => {
+ window.removeEventListener("keydown", handleKeyPress);
+ };
+
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [typedCode]);
+
+ return;
+}