Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as R from 'ramda'
  2. import { handleAction, handleActions, combineActions } from 'redux-actions'
  3. import { combineReducers } from 'redux'
  4. import {
  5.   GET_ALL_ISSUES_REQUEST,
  6.   GET_ALL_ISSUES_SUCCESS,
  7.   GET_ALL_ISSUES_FAILURE,
  8.   GET_MORE_ISSUES_REQUEST,
  9.   GET_MORE_ISSUES_SUCCESS,
  10.   GET_MORE_ISSUES_FAILURE,
  11.   SET_SEARCH_STRING,
  12.   GET_CURRENT_ISSUE_REQUEST,
  13.   GET_CURRENT_ISSUE_SUCCESS,
  14.   GET_CURRENT_ISSUE_FAILURE,
  15.   GET_ALL_FILTERS_REQUEST,
  16.   GET_ALL_FILTERS_SUCCESS,
  17.   GET_ALL_FILTERS_FAILURE,
  18.   GET_MORE_FILTERS_REQUEST,
  19.   GET_MORE_FILTERS_SUCCESS,
  20.   GET_MORE_FILTERS_FAILURE,
  21.   TOGGLE_SELECTED_FILTER_SUCCESS,
  22.   GET_SUB_FILTERS_REQUEST,
  23.   GET_SUB_FILTERS_SUCCESS,
  24.   GET_SUB_FILTERS_FAILURE,
  25.   TOGGLE_SELECTED_SUB_FILTER,
  26.   GET_USER_FILTERS_REQUEST,
  27.   GET_USER_FILTERS_SUCCESS,
  28.   GET_USER_FILTERS_FAILURE,
  29.   TOGGLE_SELECTED_USER_FILTERS,
  30.   SET_ACTIVE_FILTER,
  31.   DELETE_ACTIVE_FILTER,
  32.   CLEAR_ACTIVE_FILTERS,
  33.   CONFIRM_ISSUE_REQUEST,
  34.   CONFIRM_ISSUE_SUCCESS,
  35.   CONFIRM_ISSUE_FAILURE,
  36.   CANCEL_CONFIRM_ISSUE_REQUEST,
  37.   CANCEL_CONFIRM_ISSUE_SUCCESS,
  38.   CANCEL_CONFIRM_ISSUE_FAILURE,
  39.   SET_GEOMARK_REQUEST,
  40.   SET_GEOMARK_SUCCESS,
  41.   SET_GEOMARK_FAILURE,
  42.   GET_ISSUE_HISTORY_SUCCESS,
  43.   GET_ISSUE_HISTORY_FAILURE,
  44.   SET_CURRENT_CRITERIAS,
  45.   GET_TRANSITIONS_WITH_REASONS_REQUEST,
  46.   GET_TRANSITIONS_WITH_REASONS_SUCCESS,
  47.   GET_TRANSITIONS_WITH_REASONS_FAILURE,
  48.   GET_TRANSITION_REASONS_REQUEST,
  49.   GET_TRANSITION_REASONS_SUCCESS,
  50.   GET_TRANSITION_REASONS_FAILURE,
  51.   CHANGE_ISSUE_STATUS_REQUEST,
  52.   CHANGE_ISSUE_STATUS_SUCCESS,
  53.   CHANGE_ISSUE_STATUS_FAILURE,
  54.   SET_CURRENT_SORT_FIELD,
  55.   SET_SORT_DIRECTION,
  56.   DELETE_GEOMARK_SUCCESS,
  57.   DELETE_GEOMARK_FAILURE,
  58. } from './actions'
  59.  
  60. const allIssues = handleActions(
  61.   {
  62.     [GET_ALL_ISSUES_SUCCESS]: (_, { payload }) => payload,
  63.     [GET_ALL_ISSUES_FAILURE]: R.always([]),
  64.     [GET_MORE_ISSUES_SUCCESS]: (state, { payload }) => R.concat(state, payload),
  65.   },
  66.   [],
  67. )
  68.  
  69. const searchString = handleAction(
  70.   SET_SEARCH_STRING,
  71.   (_, { payload }) => payload,
  72.   '',
  73. )
  74.  
  75. const isLoadingIssues = handleActions(
  76.   {
  77.     [GET_ALL_ISSUES_REQUEST]: R.T,
  78.     [combineActions(GET_ALL_ISSUES_SUCCESS, GET_ALL_ISSUES_FAILURE)]: R.F,
  79.   },
  80.   false,
  81. )
  82.  
  83. const isLoadingMoreIssues = handleActions(
  84.   {
  85.     [GET_MORE_ISSUES_REQUEST]: R.T,
  86.     [combineActions(GET_MORE_ISSUES_SUCCESS, GET_MORE_ISSUES_FAILURE)]: R.F,
  87.   },
  88.   false,
  89. )
  90.  
  91. const currentIssue = handleActions(
  92.   {
  93.     [GET_CURRENT_ISSUE_SUCCESS]: (_, { payload }) => payload,
  94.     [GET_CURRENT_ISSUE_FAILURE]: R.always({}),
  95.   },
  96.   {},
  97. )
  98.  
  99. const isLoadingCurrentIssue = handleActions(
  100.   {
  101.     [combineActions(
  102.       GET_CURRENT_ISSUE_REQUEST,
  103.       CONFIRM_ISSUE_REQUEST,
  104.       CANCEL_CONFIRM_ISSUE_REQUEST,
  105.       SET_GEOMARK_REQUEST,
  106.       CHANGE_ISSUE_STATUS_REQUEST,
  107.       DELETE_GEOMARK_REQUEST,
  108.     )]: R.T,
  109.     [combineActions(
  110.       GET_CURRENT_ISSUE_SUCCESS,
  111.       GET_CURRENT_ISSUE_FAILURE,
  112.       CONFIRM_ISSUE_SUCCESS,
  113.       CONFIRM_ISSUE_FAILURE,
  114.       DELETE_GEOMARK_SUCCESS,
  115.       DELETE_GEOMARK_FAILURE,
  116.       CANCEL_CONFIRM_ISSUE_SUCCESS,
  117.       CANCEL_CONFIRM_ISSUE_FAILURE,
  118.       SET_GEOMARK_SUCCESS,
  119.       SET_GEOMARK_FAILURE,
  120.       CHANGE_ISSUE_STATUS_SUCCESS,
  121.       CHANGE_ISSUE_STATUS_FAILURE,
  122.     )]: R.F,
  123.   },
  124.   {},
  125. )
  126.  
  127. const filters = handleActions(
  128.   {
  129.     [GET_ALL_FILTERS_SUCCESS]: (_, { payload }) =>
  130.       R.map(R.assoc('selected', false))(payload),
  131.     [GET_MORE_FILTERS_SUCCESS]: (state, { payload }) =>
  132.       R.concat(state, R.map(R.assoc('selected', false))(payload)),
  133.     [GET_ALL_FILTERS_FAILURE]: R.always([]),
  134.     [TOGGLE_SELECTED_FILTER_SUCCESS]: (state, { payload }) =>
  135.       R.map(
  136.         R.ifElse(
  137.           R.propEq('Id', payload),
  138.           R.evolve({ selected: R.not }),
  139.           R.identity,
  140.         ),
  141.       )(state),
  142.   },
  143.   [],
  144. )
  145.  
  146. const isLoadingFilters = handleActions(
  147.   {
  148.     [GET_ALL_FILTERS_REQUEST]: R.T,
  149.     [GET_ALL_FILTERS_SUCCESS]: R.F,
  150.     [GET_ALL_FILTERS_FAILURE]: R.F,
  151.   },
  152.   false,
  153. )
  154.  
  155. const subFilters = handleActions(
  156.   {
  157.     [GET_SUB_FILTERS_SUCCESS]: (_, { payload }) => payload,
  158.     [GET_SUB_FILTERS_FAILURE]: R.always([]),
  159.   },
  160.   [],
  161. )
  162.  
  163. const currentSubFilter = handleAction(
  164.   TOGGLE_SELECTED_SUB_FILTER,
  165.   (_, { payload }) => payload,
  166.   {},
  167. )
  168.  
  169. const isLoadingSubFilters = handleActions(
  170.   {
  171.     [GET_ALL_FILTERS_REQUEST]: R.T,
  172.     [GET_ALL_FILTERS_SUCCESS]: R.F,
  173.     [GET_ALL_FILTERS_FAILURE]: R.F,
  174.     [GET_SUB_FILTERS_REQUEST]: R.T,
  175.     [GET_SUB_FILTERS_SUCCESS]: R.F,
  176.     [GET_SUB_FILTERS_FAILURE]: R.F,
  177.   },
  178.   false,
  179. )
  180.  
  181. const userFilters = handleActions(
  182.   {
  183.     [GET_USER_FILTERS_SUCCESS]: (_, { payload }) =>
  184.       R.map(R.assoc('selected', false))(payload),
  185.     [GET_USER_FILTERS_FAILURE]: R.always([]),
  186.   },
  187.   [],
  188. )
  189.  
  190. const currentUserFilter = handleAction(
  191.   TOGGLE_SELECTED_USER_FILTERS,
  192.   (_, { payload }) => payload,
  193.   {},
  194. )
  195.  
  196. const isLoadingUserFilters = handleActions(
  197.   {
  198.     [GET_USER_FILTERS_REQUEST]: R.T,
  199.     [GET_USER_FILTERS_SUCCESS]: R.F,
  200.     [GET_USER_FILTERS_FAILURE]: R.F,
  201.   },
  202.   false,
  203. )
  204.  
  205. const activeFilters = handleActions(
  206.   {
  207.     [SET_ACTIVE_FILTER]: (_, { payload }) => payload,
  208.     [DELETE_ACTIVE_FILTER]: (state, { payload }) => R.remove(payload, 1, state),
  209.     [CLEAR_ACTIVE_FILTERS]: R.always([]),
  210.   },
  211.   [],
  212. )
  213.  
  214. const issueHistory = handleActions(
  215.   {
  216.     [GET_ISSUE_HISTORY_SUCCESS]: (_, { payload }) => payload,
  217.     [GET_ISSUE_HISTORY_FAILURE]: R.always([]),
  218.   },
  219.   [],
  220. )
  221.  
  222. const currentCriterias = handleAction(
  223.   SET_CURRENT_CRITERIAS,
  224.   (_, { payload }) => payload,
  225.   [],
  226. )
  227.  
  228. const transitionsWithReasons = handleActions(
  229.   {
  230.     [GET_TRANSITIONS_WITH_REASONS_SUCCESS]: (_, { payload }) => payload,
  231.     [GET_TRANSITIONS_WITH_REASONS_FAILURE]: R.always([]),
  232.   },
  233.   [],
  234. )
  235.  
  236. const transitionReasons = handleActions(
  237.   {
  238.     [GET_TRANSITION_REASONS_SUCCESS]: (_, { payload }) => payload,
  239.     [GET_TRANSITION_REASONS_FAILURE]: R.always([]),
  240.   },
  241.   [],
  242. )
  243.  
  244. const isLoadingTransitionsWithReasons = handleActions(
  245.   {
  246.     [GET_TRANSITIONS_WITH_REASONS_REQUEST]: R.T,
  247.     [combineActions(
  248.       GET_TRANSITIONS_WITH_REASONS_SUCCESS,
  249.       GET_TRANSITIONS_WITH_REASONS_FAILURE,
  250.     )]: R.F,
  251.   },
  252.   false,
  253. )
  254.  
  255. const isLoadingTransitionReasons = handleActions(
  256.   {
  257.     [GET_TRANSITION_REASONS_REQUEST]: R.T,
  258.     [combineActions(
  259.       GET_TRANSITION_REASONS_SUCCESS,
  260.       GET_TRANSITION_REASONS_FAILURE,
  261.     )]: R.F,
  262.   },
  263.   false,
  264. )
  265.  
  266. const isLoadingChangeIssueStatus = handleActions(
  267.   {
  268.     [CHANGE_ISSUE_STATUS_REQUEST]: R.T,
  269.     [combineActions(
  270.       CHANGE_ISSUE_STATUS_SUCCESS,
  271.       CHANGE_ISSUE_STATUS_FAILURE,
  272.     )]: R.F,
  273.   },
  274.   false,
  275. )
  276.  
  277. const currentSortField = handleAction(
  278.   SET_CURRENT_SORT_FIELD,
  279.   (_, { payload }) => payload,
  280.   'Площадка',
  281. )
  282.  
  283. const sortDirection = handleAction(
  284.   SET_SORT_DIRECTION,
  285.   (_, { payload }) => payload,
  286.   'desc',
  287. )
  288.  
  289. const issuesReducers = combineReducers({
  290.   allIssues,
  291.   searchString,
  292.   currentIssue,
  293.   isLoadingIssues,
  294.   isLoadingMoreIssues,
  295.   isLoadingCurrentIssue,
  296.   filters,
  297.   isLoadingFilters,
  298.   subFilters,
  299.   currentSubFilter,
  300.   isLoadingSubFilters,
  301.   userFilters,
  302.   currentUserFilter,
  303.   isLoadingUserFilters,
  304.   activeFilters,
  305.   issueHistory,
  306.   currentCriterias,
  307.   transitionsWithReasons,
  308.   transitionReasons,
  309.   isLoadingTransitionsWithReasons,
  310.   isLoadingTransitionReasons,
  311.   isLoadingChangeIssueStatus,
  312.   currentSortField,
  313.   sortDirection,
  314. })
  315.  
  316. export default issuesReducers
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement