fix: control touch events on iOS

This commit is contained in:
Adrian Castro
2024-02-14 11:46:14 +01:00
parent a4f4f6822d
commit a2b70eee3a
2 changed files with 17 additions and 17 deletions

View File

@@ -1,7 +1,6 @@
import type { TouchableOpacity } from "react-native";
import React from "react";
import { View } from "react-native";
import { TouchableWithoutFeedback } from "react-native-gesture-handler";
import { usePlayerStore } from "~/stores/player/store";
@@ -9,16 +8,8 @@ interface ControlsProps extends React.ComponentProps<typeof TouchableOpacity> {
children: React.ReactNode;
}
export const Controls = ({ children, className }: ControlsProps) => {
export const Controls = ({ children }: ControlsProps) => {
const idle = usePlayerStore((state) => state.interface.isIdle);
const setIsIdle = usePlayerStore((state) => state.setIsIdle);
return (
<TouchableWithoutFeedback
className={className}
onPress={() => setIsIdle(false)}
>
<View>{!idle && children}</View>
</TouchableWithoutFeedback>
);
return <View>{!idle && children}</View>;
};

View File

@@ -1,6 +1,7 @@
import { View } from "react-native";
import { TouchableWithoutFeedback, View } from "react-native";
import type { HeaderData } from "./Header";
import { usePlayerStore } from "~/stores/player/store";
import { BottomControls } from "./BottomControls";
import { Header } from "./Header";
import { MiddleControls } from "./MiddleControls";
@@ -10,11 +11,19 @@ interface ControlsOverlayProps {
}
export const ControlsOverlay = ({ headerData }: ControlsOverlayProps) => {
const idle = usePlayerStore((state) => state.interface.isIdle);
const setIsIdle = usePlayerStore((state) => state.setIsIdle);
const handleTouch = () => {
setIsIdle(!idle);
};
return (
<View className="absolute left-0 top-0 flex h-full w-full flex-1">
<Header data={headerData} />
<MiddleControls />
<BottomControls />
</View>
<TouchableWithoutFeedback onPress={handleTouch}>
<View className="absolute left-0 top-0 flex h-full w-full flex-1">
<Header data={headerData} />
<MiddleControls />
<BottomControls />
</View>
</TouchableWithoutFeedback>
);
};