@livelike/react-native
Version:
LiveLike React Native package
82 lines • 3.32 kB
JavaScript
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