76 lines
2.1 KiB
JavaScript
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;
|