UNPKG

@livelike/react-native

Version:

LiveLike React Native package

141 lines (140 loc) 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useLoadWidgetEffect = useLoadWidgetEffect; var _javascript = require("@livelike/javascript"); var _react = require("react"); var _store = require("../store"); var _useApi = require("./useApi"); var _useIsTimelineWidget = require("./useIsTimelineWidget"); var _useWidget = require("./useWidget"); var _useWidgetInteractions = require("./useWidgetInteractions"); var _useWidgetRewards = require("./useWidgetRewards"); function useLoadWidgetEffect(_ref) { let { widgetId, widgetKind, programId } = _ref; const isTimelineWidget = (0, _useIsTimelineWidget.useIsTimelineWidget)({ widgetId }); const widgetPayload = (0, _useWidget.useWidget)({ widgetId }); const widgetInteractions = (0, _useWidgetInteractions.useWidgetInteractions)({ widgetId }); const widgetRewards = (0, _useWidgetRewards.useWidgetRewards)({ widgetId }); const { onApi, isLoading, error, data } = (0, _useApi.useApi)(() => (0, _javascript.getWidget)({ widgetId, widgetKind }).then(widget => Promise.all([(0, _javascript.getWidgetInteractions)({ widgetId, widgetKind, interactionUrl: widget.widget_interactions_url_template }), (0, _javascript.getTargetedWidgetIdAndKind)({ widget }).then(_ref2 => { let { widgetId: targetedWidgetId } = _ref2; return (0, _javascript.getRewardTransactions)({ widgetIds: [targetedWidgetId] }).then(res => res.results); })]).then(_ref3 => { let [widgetInteractions, widgetRewards] = _ref3; return [widget, widgetInteractions, widgetRewards]; }))); (0, _react.useEffect)(() => { if (isTimelineWidget) { return; } onApi().then(_ref4 => { let [widgetPayload, widgetInteractions, rewardTransactions] = _ref4; const widgetRewards = (0, _store.getWidgetRewardsFromRewardTransactions)(rewardTransactions); _store.widgetStoreActions.updateWidgetStateAction({ widgetId, widgetState: { widgetPayload, widgetInteractions, widgetRewards, widgetResultState: (0, _store.getWidgetResultState)({ widgetPayload, widgetInteractions }), widgetUIPhase: (0, _store.getWidgeUIPhase)({ widgetPayload, widgetInteractions }), selectedOptionIndex: (0, _store.getSelectedOptionIndex)({ widgetPayload, widgetInteractions }) } }); }); }, [widgetId, widgetKind, isTimelineWidget]); (0, _react.useEffect)(() => { if (!(data !== null && data !== void 0 && data.length) && !isTimelineWidget) { return; } (0, _javascript.createWidgetImpression)({ widgetId, widgetKind }); function onWidgetListener(_ref5) { let { event, message } = _ref5; if (_javascript.CHOICE_WIDGET_KIND.includes(message.kind) && message.choices.length) { _store.widgetStoreActions.updateWidgetChoicesAction({ widgetId, widgetChoices: message.choices }); } else if (message.kind === _javascript.WidgetKind.EMOJI_SLIDER && message.average_magnitude !== undefined) { _store.widgetStoreActions.updateWidgetAverageMagnitude({ widgetId, averageMagnitude: message.average_magnitude }); } else if (message.options.length) { _store.widgetStoreActions.updateWidgetOptionsAction({ widgetId, widgetOptions: message.options }); } } (0, _javascript.addWidgetListener)({ widgetId, widgetKind }, onWidgetListener); return () => { (0, _javascript.removeWidgetListener)({ widgetId, widgetKind }, onWidgetListener); }; }, [data, widgetId, widgetKind, isTimelineWidget]); if (isTimelineWidget) { return { isLoading: false, data: [widgetPayload, widgetInteractions, widgetRewards] }; } return { onApi, isLoading, error, data }; } //# sourceMappingURL=useLoadWidgetEffect.js.map