@livelike/react-native
Version:
LiveLike React Native package
50 lines • 1.65 kB
JavaScript
import { useEffect, useMemo, useState } from 'react';
import { Animated } from 'react-native';
import { useWidgetRewards } from './useWidgetRewards';
export const useWidgetRewardsEffect = _ref => {
let {
widgetId
} = _ref;
const widgetRewards = useWidgetRewards({
widgetId
});
const [posYs, setPosys] = useState([]);
useEffect(() => {
if (widgetRewards && (widgetRewards === null || widgetRewards === void 0 ? void 0 : widgetRewards.length) > 1) {
const animations = [];
const posYs = widgetRewards.map(() => {
const posY = new Animated.Value(0);
const rewardAnimation = Animated.timing(posY, {
toValue: 10,
duration: 2000,
useNativeDriver: true
});
animations.push(rewardAnimation);
return posY;
});
const rewardAnimation = Animated.loop(Animated.sequence(animations));
rewardAnimation.start();
setPosys(posYs);
return () => {
rewardAnimation.reset();
};
}
}, [widgetRewards]);
const slideInOutStyles = useMemo(() => {
if (!(widgetRewards !== null && widgetRewards !== void 0 && widgetRewards.length) || !posYs.length || widgetRewards.length !== posYs.length) {
return [];
}
return widgetRewards.map((reward, i) => {
return {
translateY: posYs[i].interpolate({
inputRange: [0, 1, 9, 10],
outputRange: [20, 0, 0, -20]
})
};
});
}, [posYs, widgetRewards === null || widgetRewards === void 0 ? void 0 : widgetRewards.length]);
return {
slideInOutStyles
};
};
//# sourceMappingURL=useWidgetRewardsEffect.js.map