mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-19 09:42:13 +00:00
feat(GamesupportProvider): add enabled prop to start/stop gamepad support
This commit is contained in:
parent
c97c41f11c
commit
5927b17e87
2 changed files with 13 additions and 4 deletions
|
|
@ -22,6 +22,7 @@ const App = () => {
|
|||
const { i18n } = useTranslation();
|
||||
const shell = useShell();
|
||||
const [windowHidden, setWindowHidden] = React.useState(false);
|
||||
const [gamepadSupportEnabled, setGamepadSupportEnabled] = React.useState(false);
|
||||
const onPathNotMatch = React.useCallback(() => {
|
||||
return NotFound;
|
||||
}, []);
|
||||
|
|
@ -133,6 +134,10 @@ const App = () => {
|
|||
i18n.changeLanguage(args.settings.interfaceLanguage);
|
||||
}
|
||||
|
||||
if (args?.settings?.gamepadSupport !== undefined) {
|
||||
setGamepadSupportEnabled(args.settings.gamepadSupport);
|
||||
}
|
||||
|
||||
if (args?.settings?.quitOnClose && windowHidden) {
|
||||
shell.send('quit');
|
||||
}
|
||||
|
|
@ -146,6 +151,10 @@ const App = () => {
|
|||
i18n.changeLanguage(state.profile.settings.interfaceLanguage);
|
||||
}
|
||||
|
||||
if (typeof state.profile.settings.gamepadSupport === 'boolean') {
|
||||
setGamepadSupportEnabled(state.profile.settings.gamepadSupport);
|
||||
}
|
||||
|
||||
if (state?.profile?.settings?.quitOnClose && windowHidden) {
|
||||
shell.send('quit');
|
||||
}
|
||||
|
|
@ -204,7 +213,7 @@ const App = () => {
|
|||
<ToastProvider className={styles['toasts-container']}>
|
||||
<TooltipProvider className={styles['tooltip-container']}>
|
||||
<FileDropProvider className={styles['file-drop-container']}>
|
||||
<GamepadProvider>
|
||||
<GamepadProvider enabled={gamepadSupportEnabled}>
|
||||
<ServicesToaster />
|
||||
<DeepLinkHandler />
|
||||
<SearchParamsHandler />
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@ import GamepadContext from './GamepadContext';
|
|||
|
||||
type GamepadEventHandlers = Record<string, ((data?: any) => void)[]>;
|
||||
|
||||
const GamepadProvider: React.FC<{ children: React.ReactNode }> = ({
|
||||
const GamepadProvider: React.FC<{ enabled: boolean; children: React.ReactNode }> = ({
|
||||
enabled,
|
||||
children,
|
||||
}) => {
|
||||
const [connectedGamepads, setConnectedGamepads] = useState<number>(0);
|
||||
|
|
@ -44,8 +45,7 @@ const GamepadProvider: React.FC<{ children: React.ReactNode }> = ({
|
|||
let animationFrameId: number;
|
||||
|
||||
const updateStatus = () => {
|
||||
// TODO: add check if profile settings allows this feature
|
||||
if (document.hasFocus()) {
|
||||
if (enabled && document.hasFocus()) {
|
||||
const currentTime = Date.now();
|
||||
const controllers = Array.from(navigator.getGamepads()).filter(
|
||||
(gp) => gp !== null
|
||||
|
|
|
|||
Loading…
Reference in a new issue