UNPKG

@livelike/react-native

Version:

LiveLike React Native package

76 lines 2.35 kB
import React, { useCallback } from 'react'; import { LLWidgetSubmitButtonComponent } from '../LLWidgetFooter'; import { useIsEndWidgetUIPhase, useIsWidgetDisabled, useUserSliderMagnitude, useWidget, useWidgetActions, useWidgetSubmitAction } from '../../hooks'; import { roundTo } from '../../utils'; export function LLEmojiSliderWidgetSubmitButton(_ref) { let { widgetId, styles, onPress } = _ref; const widget = useWidget({ widgetId }); const magnitude = useUserSliderMagnitude({ widgetId }); const widgetDisabled = useIsWidgetDisabled({ widgetId }); const isEndWidgetUIPhase = useIsEndWidgetUIPhase({ widgetId }); const { updateWidgetAverageMagnitude } = useWidgetActions({ widgetId }); const { onInteractionSubmit } = useWidgetSubmitAction({ widgetId }); const widgetEngagementCount = widget === null || widget === void 0 ? void 0 : widget.engagement_count; const widgetAverageMagnitude = widget === null || widget === void 0 ? void 0 : widget.average_magnitude; const onSubmit = useCallback(() => { onPress === null || onPress === void 0 || onPress({ magnitude }); const interactionItem = { magnitude: `${magnitude}` }; onInteractionSubmit({ interactionItem }).then(() => { if (widgetAverageMagnitude === undefined || widgetEngagementCount === undefined) { return; } updateWidgetAverageMagnitude({ widgetId, averageMagnitude: `${getUpdatedAverageMagnitude({ userMagnitude: magnitude, widgetEngagementCount, widgetAverageMagnitude: parseFloat(widgetAverageMagnitude) })}` }); }); }, [magnitude, widgetEngagementCount, widgetAverageMagnitude]); if (isEndWidgetUIPhase) { return undefined; } const disabled = widgetDisabled || magnitude === undefined; return /*#__PURE__*/React.createElement(LLWidgetSubmitButtonComponent, { disabled: disabled, onPress: onSubmit, styles: styles }); } function getUpdatedAverageMagnitude(_ref2) { let { widgetAverageMagnitude, widgetEngagementCount, userMagnitude } = _ref2; return roundTo((widgetEngagementCount * widgetAverageMagnitude + userMagnitude) / (widgetEngagementCount + 1), 3); } //# sourceMappingURL=LLEmojiSliderWidgetSubmitButton.js.map