Files
SteelXR/src/devkit/useDevKit.ts
T
gpt-engineer-app[bot] 174d36e3b3 Changes
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
2026-05-12 11:00:31 +00:00

44 lines
1.2 KiB
TypeScript

/**
* DEVKIT entry point. The whole devkit is gated by this single flag.
*
* Activation: append `?devkit=1` to URL OR run in console:
* localStorage.setItem('devkit', '1')
* Deactivation: `?devkit=0` OR localStorage.removeItem('devkit')
*
* To remove DevKit from the project entirely:
* 1. rm -rf src/devkit/
* 2. Strip `// DEVKIT:` blocks in XRSession.tsx & useControllerGrab.ts
*/
import { useEffect, useState } from 'react';
const KEY = 'devkit';
function readFlag(): boolean {
if (typeof window === 'undefined') return false;
const params = new URLSearchParams(window.location.search);
const urlVal = params.get(KEY);
if (urlVal === '1') {
localStorage.setItem(KEY, '1');
return true;
}
if (urlVal === '0') {
localStorage.removeItem(KEY);
return false;
}
return localStorage.getItem(KEY) === '1';
}
export function useDevKit(): boolean {
const [enabled, setEnabled] = useState(readFlag);
useEffect(() => {
const onStorage = () => setEnabled(readFlag());
window.addEventListener('storage', onStorage);
return () => window.removeEventListener('storage', onStorage);
}, []);
return enabled;
}
export function isDevKit(): boolean {
return readFlag();
}