react-redux-fetch
Version:
A declarative and customizable way to fetch data for React components and manage that data in the Redux state
42 lines (37 loc) • 1.22 kB
Flow
/* eslint arrow-parens: [0] */
/* @flow */
type ReduxState = Object;
type Repository = Object;
type PromiseStateData = *;
type PromiseState = {
pending: boolean,
fulfilled: boolean,
rejected: boolean,
value: PromiseStateData,
};
export const getModel = (state: ReduxState): Repository => state.repository;
/**
* getRepository()
* usage:
* - selectors.getRepository('repositoryName')(reduxState)
* - selectors.getRepository('repositoryName').fromState(reduxState)
*/
export const getRepository = (repositoryName: string) => {
const fromState = (state: ReduxState): PromiseStateData =>
state.repository[repositoryName] && state.repository[repositoryName].value;
const ret = (state: ReduxState): PromiseStateData => fromState(state);
ret.fromState = fromState;
return ret;
};
/**
* getPromise()
* usage:
* - selectors.getPromise('repositoryName')(reduxState)
* - selectors.getPromise('repositoryName').fromState(reduxState)
*/
export const getPromise = (repositoryName: string) => {
const fromState = (state: ReduxState): PromiseState => state.repository[repositoryName];
const ret = (state: ReduxState): PromiseState => fromState(state);
ret.fromState = fromState;
return ret;
};