UNPKG

@livelike/react-native

Version:

LiveLike React Native package

82 lines 3.32 kB
import { useCallback } from 'react'; import { createWidgetInteraction, getUpdatedWidgetInteraction, hasDebugLogger, isWidgetOptionItem, updateWidgetInteraction, WidgetKind } from '@livelike/javascript'; import { widgetStoreActions } from '../store'; import { useWidgetInteractions } from './useWidgetInteractions'; import { WidgetUIPhase } from '../types'; import { useWidgetKind } from './useWidgetKind'; export function useWidgetInteractionActions(_ref) { let { widgetId } = _ref; const widgetInteractions = useWidgetInteractions({ widgetId }); const widgetKind = useWidgetKind({ widgetId }); const updateWidgetInteractionAction = useCallback(_ref2 => { let { interactionItem } = _ref2; if (!(widgetInteractions !== null && widgetInteractions !== void 0 && widgetInteractions.length) || widgetInteractions[0].widget_kind === WidgetKind.CHEER_METER && isWidgetOptionItem(interactionItem) && !widgetInteractions.find(interaction => interaction.option_id === interactionItem.id) || !isWidgetOptionItem(interactionItem)) { hasDebugLogger() && console.warn('widget interaction not found, may be call createWidgetInteractionAction'); return; } widgetStoreActions.updateWidgetStateAction({ widgetId, widgetState: { widgetUIPhase: WidgetUIPhase.SUBMITTING } }); return updateWidgetInteraction({ widgetId, widgetKind, interactionItem }).then(widgetInteraction => { widgetStoreActions.updateWidgetInteractionAction({ widgetId, widgetInteractions: getUpdatedWidgetInteraction(widgetInteraction, widgetInteractions) }); return widgetInteraction; }).catch(() => { widgetStoreActions.updateWidgetUIPhaseAction({ widgetId, widgetUIPhase: WidgetUIPhase.SUBMITTED }); }); }, [widgetId, widgetKind, widgetInteractions]); const createWidgetInteractionAction = useCallback(_ref3 => { let { interactionItem } = _ref3; if (!!(widgetInteractions !== null && widgetInteractions !== void 0 && widgetInteractions.length) && widgetInteractions[0].widget_kind !== WidgetKind.CHEER_METER || isWidgetOptionItem(interactionItem) && widgetInteractions !== null && widgetInteractions !== void 0 && widgetInteractions.find(interaction => interaction.option_id === interactionItem.id)) { hasDebugLogger() && console.warn('widget interaction already found, may be call "updateWidgetInteractionAction"'); return; } widgetStoreActions.updateWidgetUIPhaseAction({ widgetId, widgetUIPhase: WidgetUIPhase.SUBMITTING }); return createWidgetInteraction({ widgetId, widgetKind, interactionItem }).then(widgetInteraction => { widgetStoreActions.updateWidgetInteractionAction({ widgetId, widgetInteractions: getUpdatedWidgetInteraction(widgetInteraction, widgetInteractions) }); return widgetInteraction; }).catch(() => { widgetStoreActions.updateWidgetUIPhaseAction({ widgetId, widgetUIPhase: WidgetUIPhase.INTERACTIVE }); }); }, [widgetId, widgetKind, widgetInteractions]); return { updateWidgetInteractionAction, createWidgetInteractionAction }; } //# sourceMappingURL=useWidgetInteractionActions.js.map