fix slider resetting while sliding

This commit is contained in:
Jorrin
2024-02-14 22:18:07 +01:00
parent 439ba8c7e5
commit 61f3e77f58

View File

@@ -54,10 +54,13 @@ const VideoSlider = ({ onSlidingComplete }: VideoSliderProps) => {
};
const valueX = valueToX(value);
const translateX = useSharedValue(valueToX(value));
const isDragging = useSharedValue(false);
useEffect(() => {
if (!isDragging.value) {
translateX.value = clamp(valueX, 0, width - knobSize_);
}, [valueX]);
}
}, [valueX, isDragging.value]);
const _onSlidingComplete = (xValue: number) => {
"worklet";
@@ -66,16 +69,26 @@ const VideoSlider = ({ onSlidingComplete }: VideoSliderProps) => {
const _onActive = (value: number) => {
"worklet";
isDragging.value = true;
translateX.value = clamp(value, 0, width - knobSize_);
runOnJS(setIsIdle)(false);
};
const _onEnd = () => {
"worklet";
isDragging.value = false;
_onSlidingComplete(translateX.value);
};
const onGestureEvent = useAnimatedGestureHandler<
PanGestureHandlerGestureEvent,
{ offsetX: number }
>({
onStart: (_, ctx) => (ctx.offsetX = translateX.value),
onActive: (event, ctx) => _onActive(event.translationX + ctx.offsetX),
onEnd: _onEnd,
onCancel: _onEnd,
onFinish: _onEnd,
});
const onTapEvent = (