ali322/CNodeRN

View on GitHub
app/module/auth/action.js

Summary

Maintainability
A
3 hrs
Test Coverage
import * as constants from './constant'

import { request } from '../../lib/'
import api from '../../lib/api'

function startLogin() {
  return {
    type: constants.START_LOGIN
  }
}

function finishLogin(payload) {
  return {
    type: constants.FINISH_LOGIN,
    payload,
    finishAt: Date.now()
  }
}

export function login(token) {
  return dispatch => {
    dispatch(startLogin())
    request
      .post(`${api.authorize}`, { accesstoken: token })
      .then(ret => {
        ret = ret.data
        dispatch(finishLogin({ ret, token }))
      })
      .catch(err => {
        // console.log(err)
      })
  }
}

function requestAuth() {
  return {
    type: constants.REQUEST_AUTH
  }
}

function responseAuth(payload) {
  return {
    type: constants.RESPONSE_AUTH,
    payload,
    respondAt: Date.now()
  }
}

export function fetchAuth() {
  return dispatch => {
    dispatch(requestAuth())
    global.storage.getItem('auth').then(ret => {
      dispatch(responseAuth(ret))
    })
  }
}

function startSaveAuth() {
  return {
    type: constants.START_SAVEAUTH
  }
}

function finishSaveAuth(payload) {
  return {
    type: constants.FINISH_SAVEAUTH,
    payload,
    finishAt: Date.now()
  }
}

export function saveAuth(auth) {
  return dispatch => {
    dispatch(startSaveAuth())
    global.storage.setItem('auth', auth).then(ret => {
      dispatch(finishSaveAuth(auth))
    })
  }
}