Decouple pure and private accounts actions from async actions.

This commit is contained in:
SleepWalker 2017-01-27 08:29:20 +02:00
parent bf1cfda59c
commit acf912d979
5 changed files with 93 additions and 78 deletions

View File

@ -5,6 +5,16 @@ import { updateUser, setGuest } from 'components/user/actions';
import { setLocale } from 'components/i18n/actions'; import { setLocale } from 'components/i18n/actions';
import logger from 'services/logger'; import logger from 'services/logger';
import {
add,
remove,
activate,
reset,
updateToken
} from 'components/accounts/actions/pure-actions';
export { updateToken };
/** /**
* @typedef {object} Account * @typedef {object} Account
* @property {string} id * @property {string} id
@ -64,6 +74,8 @@ export function authenticate({token, refreshToken}) {
} }
/** /**
* Remove one account from current user's account list
*
* @param {Account} account * @param {Account} account
* *
* @return {function} * @return {function}
@ -135,73 +147,3 @@ export function logoutStrangers() {
return Promise.resolve(); return Promise.resolve();
}; };
} }
export const ADD = 'accounts:add';
/**
* @api private
*
* @param {Account} account
*
* @return {object} - action definition
*/
export function add(account) {
return {
type: ADD,
payload: account
};
}
export const REMOVE = 'accounts:remove';
/**
* @api private
*
* @param {Account} account
*
* @return {object} - action definition
*/
export function remove(account) {
return {
type: REMOVE,
payload: account
};
}
export const ACTIVATE = 'accounts:activate';
/**
* @api private
*
* @param {Account} account
*
* @return {object} - action definition
*/
export function activate(account) {
return {
type: ACTIVATE,
payload: account
};
}
export const RESET = 'accounts:reset';
/**
* @api private
*
* @return {object} - action definition
*/
export function reset() {
return {
type: RESET
};
}
export const UPDATE_TOKEN = 'accounts:updateToken';
/**
* @param {string} token
*
* @return {object} - action definition
*/
export function updateToken(token) {
return {
type: UPDATE_TOKEN,
payload: token
};
}

View File

@ -0,0 +1,69 @@
export const ADD = 'accounts:add';
/**
* @api private
*
* @param {Account} account
*
* @return {object} - action definition
*/
export function add(account) {
return {
type: ADD,
payload: account
};
}
export const REMOVE = 'accounts:remove';
/**
* @api private
*
* @param {Account} account
*
* @return {object} - action definition
*/
export function remove(account) {
return {
type: REMOVE,
payload: account
};
}
export const ACTIVATE = 'accounts:activate';
/**
* @api private
*
* @param {Account} account
*
* @return {object} - action definition
*/
export function activate(account) {
return {
type: ACTIVATE,
payload: account
};
}
export const RESET = 'accounts:reset';
/**
* @api private
*
* @return {object} - action definition
*/
export function reset() {
return {
type: RESET
};
}
export const UPDATE_TOKEN = 'accounts:updateToken';
/**
* @param {string} token
*
* @return {object} - action definition
*/
export function updateToken(token) {
return {
type: UPDATE_TOKEN,
payload: token
};
}

View File

@ -1,4 +1,4 @@
import { ADD, REMOVE, ACTIVATE, RESET, UPDATE_TOKEN } from './actions'; import { ADD, REMOVE, ACTIVATE, RESET, UPDATE_TOKEN } from './actions/pure-actions';
/** /**
* @typedef {AccountsState} * @typedef {AccountsState}

View File

@ -3,18 +3,19 @@ import sinon from 'sinon';
import { routeActions } from 'react-router-redux'; import { routeActions } from 'react-router-redux';
import accounts from 'services/api/accounts';
import authentication from 'services/api/authentication'; import authentication from 'services/api/authentication';
import { import {
authenticate, authenticate,
revoke, revoke,
add, ADD,
activate, ACTIVATE,
remove,
reset,
logoutAll, logoutAll,
logoutStrangers logoutStrangers
} from 'components/accounts/actions'; } from 'components/accounts/actions';
import {
add, ADD,
activate, ACTIVATE,
remove,
reset
} from 'components/accounts/actions/pure-actions';
import { SET_LOCALE } from 'components/i18n/actions'; import { SET_LOCALE } from 'components/i18n/actions';
import { updateUser, setUser } from 'components/user/actions'; import { updateUser, setUser } from 'components/user/actions';

View File

@ -2,9 +2,12 @@ import expect from 'unexpected';
import accounts from 'components/accounts/reducer'; import accounts from 'components/accounts/reducer';
import { import {
updateToken, add, remove, activate, reset, updateToken
ADD, REMOVE, ACTIVATE, UPDATE_TOKEN, RESET
} from 'components/accounts/actions'; } from 'components/accounts/actions';
import {
add, remove, activate, reset,
ADD, REMOVE, ACTIVATE, UPDATE_TOKEN, RESET
} from 'components/accounts/actions/pure-actions';
const account = { const account = {
id: 1, id: 1,