UNPKG

@livelike/react-native

Version:

LiveLike React Native package

40 lines (38 loc) 1.74 kB
import { useMemo } from 'react'; import { SINGLE_INTERACTION_WIDGET_KINDS } from '@livelike/javascript'; import { widgetStore } from '../store'; import { WidgetUIPhase } from '../types'; import { useSelectedFieldStore } from './useSelectedFieldStore'; import { useWidgetUIPhase } from './useWidgetUIPhase'; export const useIsWidgetDisabled = _ref => { let { widgetId } = _ref; const widgetUIPhase = useWidgetUIPhase({ widgetId }); const widgetKind = useSelectedFieldStore(widgetStore, () => { var _widgetStore$get$widg; return (_widgetStore$get$widg = widgetStore.get()[widgetId]) === null || _widgetStore$get$widg === void 0 || (_widgetStore$get$widg = _widgetStore$get$widg.widgetPayload) === null || _widgetStore$get$widg === void 0 ? void 0 : _widgetStore$get$widg.kind; }); return useMemo(() => { // disable widget if widget interaction is exprired or is in submitting phase const isSubmitting = widgetUIPhase === WidgetUIPhase.SUBMITTING; const isExpired = widgetUIPhase === WidgetUIPhase.EXPIRED; const isFollowUpPublished = widgetUIPhase === WidgetUIPhase.FOLLOW_UP_PUBLISHED; if (isSubmitting || isExpired || isFollowUpPublished) { return true; } // disable widget if widget interaction is already submitted for one time interactable widgets const isSubmitted = widgetUIPhase === WidgetUIPhase.SUBMITTED; if (isSubmitted && SINGLE_INTERACTION_WIDGET_KINDS.includes(widgetKind)) { return true; } // disable widget if widget interactivity is timed out if (widgetUIPhase === WidgetUIPhase.INTERACTIVE_TIMED_OUT) { return true; } return false; }, [widgetUIPhase, widgetKind]); }; //# sourceMappingURL=useIsWidgetDisabled.js.map