slic-starter
Version: 
A complete serverless starter application
82 lines (73 loc) • 2.63 kB
JavaScript
import { API as AmplifyApi } from 'aws-amplify'
import { translateError } from '../errors'
export const ADD_ENTRY_REQUEST = 'ADD_ENTRY_REQUEST'
export const ADD_ENTRY_SUCCESS = 'ADD_ENTRY_SUCCESS'
export const ADD_ENTRY_FAILURE = 'ADD_ENTRY_FAILURE'
export function addEntry({ listId, title, value }) {
  const meta = { listId, title, value }
  return function(dispatch) {
    dispatch({ type: ADD_ENTRY_REQUEST })
    AmplifyApi.post('checklists', `/checklist/${listId}/entries`, {
      body: {
        title,
        value
      }
    })
      .then(result => {
        dispatch({ type: ADD_ENTRY_SUCCESS, payload: result, meta })
      })
      .catch(err => {
        dispatch({ type: ADD_ENTRY_FAILURE, error: translateError(err) })
      })
  }
}
export const LOAD_ENTRIES_REQUEST = 'LOAD_ENTRIES_REQUEST'
export const LOAD_ENTRIES_SUCCESS = 'LOAD_ENTRIES_SUCCESS'
export const LOAD_ENTRIES_FAILURE = 'LOAD_ENTRIES_FAILURE'
export function loadEntries({ listId }) {
  const meta = { listId }
  return function(dispatch) {
    dispatch({ type: LOAD_ENTRIES_REQUEST })
    AmplifyApi.get('checklists', `/checklist/${listId}/entries`)
      .then(result => {
        dispatch({ type: LOAD_ENTRIES_SUCCESS, payload: result, meta })
      })
      .catch(err => {
        dispatch({ type: LOAD_ENTRIES_FAILURE, error: translateError(err) })
      })
  }
}
export const SET_ENTRY_VALUE_REQUEST = 'SET_ENTRY_VALUE_REQUEST'
export const SET_ENTRY_VALUE_SUCCESS = 'SET_ENTRY_VALUE_SUCCESS'
export const SET_ENTRY_VALUE_FAILURE = 'SET_ENTRY_VALUE_FAILURE'
export function setEntryValue({ listId, entry }) {
  return function(dispatch) {
    dispatch({ type: SET_ENTRY_VALUE_REQUEST })
    AmplifyApi.put(
      'checklists',
      `/checklist/${listId}/entries/${entry.entId}`,
      { body: entry }
    )
      .then(result => {
        dispatch({ type: SET_ENTRY_VALUE_SUCCESS, meta: { entry, listId } })
      })
      .catch(err => {
        dispatch({ type: SET_ENTRY_VALUE_FAILURE, error: translateError(err) })
      })
  }
}
export const REMOVE_ENTRY_REQUEST = 'REMOVE_ENTRY_REQUEST'
export const REMOVE_ENTRY_SUCCESS = 'REMOVE_ENTRY_SUCCESS'
export const REMOVE_ENTRY_FAILURE = 'REMOVE_ENTRY_FAILURE'
export function removeEntry({ listId, entId }) {
  return function(dispatch) {
    dispatch({ type: REMOVE_ENTRY_REQUEST })
    AmplifyApi.del('checklists', `/checklist/${listId}/entries/${entId}`)
      .then(result => {
        dispatch({ type: REMOVE_ENTRY_SUCCESS, meta: { listId, entId } })
      })
      .catch(err => {
        dispatch({ type: REMOVE_ENTRY_FAILURE, error: translateError(err) })
      })
  }
}