Skip to content

Commit

Permalink
fix swipeable detecting incorrect right element width, when right ele…
Browse files Browse the repository at this point in the history
…ment is not present
  • Loading branch information
latekvo committed Oct 9, 2024
1 parent 125555e commit 2f511a3
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions src/components/ReanimatedSwipeable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ const Swipeable = forwardRef<SwipeableMethods, SwipeableProps>(
const rowWidth = useSharedValue<number>(0);
const leftWidth = useSharedValue<number>(0);
const rightWidth = useSharedValue<number>(0);
const rightOffset = useSharedValue<number>(0);
const rightOffset = useSharedValue<number | null>(null);

const leftActionTranslate = useSharedValue<number>(0);
const rightActionTranslate = useSharedValue<number>(0);
Expand Down Expand Up @@ -267,19 +267,29 @@ const Swipeable = forwardRef<SwipeableMethods, SwipeableProps>(
const overshootLeftProp = overshootLeft;
const overshootRightProp = overshootRight;

const updateRightElementWidth = () => {
'worklet';
if (rightOffset.value === null) {
rightOffset.value = rowWidth.value;
}
rightWidth.value = Math.max(0, rowWidth.value - rightOffset.value);
};

const calculateCurrentOffset = useCallback(() => {
'worklet';
updateRightElementWidth();
if (rowState.value === 1) {
return leftWidth.value;
} else if (rowState.value === -1) {
return -rowWidth.value - rightOffset.value;
return -rowWidth.value - rightOffset.value!;
}
return 0;
}, [leftWidth, rightOffset, rowState, rowWidth]);

const updateAnimatedEvent = () => {
'worklet';
rightWidth.value = Math.max(0, rowWidth.value - rightOffset.value);

updateRightElementWidth();

const overshootLeft = overshootLeftProp ?? leftWidth.value > 0;
const overshootRight = overshootRightProp ?? rightWidth.value > 0;
Expand Down Expand Up @@ -447,7 +457,6 @@ const Swipeable = forwardRef<SwipeableMethods, SwipeableProps>(
},
openRight() {
'worklet';
rightWidth.value = rowWidth.value - rightOffset.value;
animateRow(calculateCurrentOffset(), -rightWidth.value);
},
reset() {
Expand Down Expand Up @@ -521,7 +530,7 @@ const Swipeable = forwardRef<SwipeableMethods, SwipeableProps>(
const { velocityX } = event;
userDrag.value = event.translationX;

rightWidth.value = rowWidth.value - rightOffset.value;
updateRightElementWidth();

const leftThreshold = leftThresholdProp ?? leftWidth.value / 2;
const rightThreshold = rightThresholdProp ?? rightWidth.value / 2;
Expand Down

0 comments on commit 2f511a3

Please sign in to comment.