Files
shoptime/com.twin.app.shoptime/src/hooks/useDebugKey.js
2025-08-28 09:28:45 +09:00

76 lines
2.1 KiB
JavaScript

import { useCallback, useEffect, useRef, useMemo } from "react";
import { useDispatch, useSelector } from "react-redux";
import { off, on } from "@enact/core/dispatcher";
import { pushPanel } from "../actions/panelActions";
import * as Config from "../utils/Config";
const useDebugKey = ({ isLandingPage = false }) => {
const panels = useSelector((state) => state.panels.panels);
const serverType = useSelector((state) => state.localSettings.serverType);
const serverHOST = useSelector((state) => state.common.appStatus.serverHOST);
const debugKey = useRef([]);
const dispatch = useDispatch();
const isPrdServer = useMemo(() => {
if(typeof window === "object" && !window.PalmSystem ){
return false;
}
if (!serverHOST) return true;
if (serverType === "system") {
const sdpURL = serverHOST.toLowerCase();
if (sdpURL.indexOf("qt2") >= 0 || sdpURL.indexOf("qt") >= 0) {
return false;
}
} else {
return false;
}
return true;
}, [serverType, serverHOST]);
const handleKeydown = useCallback(
(ev) => {
if (isPrdServer) return;
if (isLandingPage && panels && panels.length > 0) {
return;
}
if (ev && ev.key >= 0 && ev.key <= 9) {
if (debugKey.current.length >= Config.DEBUG_KEY.length) {
debugKey.current.shift();
}
debugKey.current.push(String(ev.key));
if (debugKey.current.join("") === Config.DEBUG_KEY) {
debugKey.current = [];
dispatch(pushPanel({ name: Config.panel_names.DEBUG_PANEL, panelInfo: {} }));
}
if (debugKey.current.join("") === Config.TESTPANEL_KEY) {
debugKey.current = [];
dispatch(
pushPanel({
name: Config.panel_names.VIDEO_TEST_PANEL,
panelInfo: {},
})
);
}
}
},
[panels, dispatch, isLandingPage, isPrdServer]
);
useEffect(() => {
if (!isPrdServer) {
on("keydown", handleKeydown);
return () => {
off("keydown", handleKeydown);
};
}
}, [handleKeydown, isPrdServer]);
};
export default useDebugKey;