@livelike/react-native
Version:
LiveLike React Native package
141 lines (140 loc) • 4.16 kB
JavaScript
;
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