import api from "../api"; import { importFetchedPoll } from "./importer"; export const POLL_VOTE_REQUEST = "POLL_VOTE_REQUEST"; export const POLL_VOTE_SUCCESS = "POLL_VOTE_SUCCESS"; export const POLL_VOTE_FAIL = "POLL_VOTE_FAIL"; export const POLL_FETCH_REQUEST = "POLL_FETCH_REQUEST"; export const POLL_FETCH_SUCCESS = "POLL_FETCH_SUCCESS"; export const POLL_FETCH_FAIL = "POLL_FETCH_FAIL"; export const vote = (pollId, choices) => (dispatch, getState) => { dispatch(voteRequest()); api(getState).post(`/api/v1/polls/${pollId}/votes`, { choices }) .then(({ data }) => { dispatch(importFetchedPoll(data)); dispatch(voteSuccess(data)); }) .catch(err => dispatch(voteFail(err))); }; export const fetchPoll = pollId => (dispatch, getState) => { dispatch(fetchPollRequest()); api(getState).get(`/api/v1/polls/${pollId}`) .then(({ data }) => { dispatch(importFetchedPoll(data)); dispatch(fetchPollSuccess(data)); }) .catch(err => dispatch(fetchPollFail(err))); }; export const voteRequest = () => ({ type: POLL_VOTE_REQUEST, }); export const voteSuccess = poll => ({ type: POLL_VOTE_SUCCESS, poll, }); export const voteFail = error => ({ type: POLL_VOTE_FAIL, error, }); export const fetchPollRequest = () => ({ type: POLL_FETCH_REQUEST, }); export const fetchPollSuccess = poll => ({ type: POLL_FETCH_SUCCESS, poll, }); export const fetchPollFail = error => ({ type: POLL_FETCH_FAIL, error, });