UNPKG

@livelike/react-native

Version:

LiveLike React Native package

48 lines (43 loc) 1.43 kB
import { WidgetKind, claimPredictionWidgetRewards, hasDebugLogger, } from '@livelike/javascript'; import { useEffect, useRef } from 'react'; import { widgetStoreActions } from '../store'; import { useWidgetInteractions } from './useWidgetInteractions'; export type UsePredictionClaimRewardEffectArg = { widgetId: string; widgetKind: WidgetKind; }; /** * @description `usePredictionClaimRewardEffect` hook claims the prediction reward * whenever a prediction follow up based UI is rendered. * Internally it calls claimPredictionWidgetRewards JS API. */ export function usePredictionClaimRewardEffect({ widgetId, widgetKind }) { const claimedRef = useRef(null); const widgetInteracions = useWidgetInteractions({ widgetId }); const widgetInteraction = widgetInteracions?.[0]; useEffect(() => { if (claimedRef.current) { claimedRef.current = false; } }, [widgetId, widgetKind]); useEffect(() => { if (claimedRef.current || !widgetInteraction) { return; } claimPredictionWidgetRewards({ widgetId, widgetKind }) .then((res) => { claimedRef.current = true; widgetStoreActions.updateWidgetRewardsAction({ widgetId, widgetRewards: res.rewards, }); }) .catch((error) => { hasDebugLogger() && console.error('Error while claiming reward', error); }); }, [widgetId, widgetKind, widgetInteraction]); }