Bläddra i källkod

Splitted reducers logic

Oleh T 7 år sedan
förälder
incheckning
5f9ba4f3ad

+ 30 - 0
client/reducers/auth.js

@@ -0,0 +1,30 @@
+import { AUTH_USER, AUTH_RENEW, UNAUTH_USER, SENT_VERIFICATION } from '../actions/actionTypes';
+
+const initialState = {
+  isAuthenticated: false,
+  sentVerification: false,
+  user: '',
+  renew: false,
+};
+
+const auth = (state = initialState, action) => {
+  switch (action.type) {
+    case AUTH_USER:
+      return {
+        ...state,
+        isAuthenticated: true,
+        user: action.payload,
+        sentVerification: false,
+      };
+    case AUTH_RENEW:
+      return { ...state, renew: true };
+    case UNAUTH_USER:
+      return initialState;
+    case SENT_VERIFICATION:
+      return { ...state, sentVerification: true, user: action.payload };
+    default:
+      return state;
+  }
+};
+
+export default auth;

+ 49 - 0
client/reducers/error.js

@@ -0,0 +1,49 @@
+import {
+  SHORTENER_ERROR,
+  DOMAIN_ERROR,
+  SET_DOMAIN,
+  SHOW_DOMAIN_INPUT,
+  ADD_URL,
+  UPDATE_URL,
+  AUTH_ERROR,
+  AUTH_USER,
+  HIDE_PAGE_LOADING,
+} from '../actions/actionTypes';
+
+const initialState = {
+  auth: '',
+  domain: '',
+  shortener: '',
+};
+
+const error = (state = initialState, action) => {
+  switch (action.type) {
+    case SHORTENER_ERROR:
+      return { ...state, shortener: action.payload };
+    case DOMAIN_ERROR:
+      return { ...state, domain: action.payload };
+    case SET_DOMAIN:
+      return { ...state, domain: '' };
+    case SHOW_DOMAIN_INPUT:
+      return { ...state, domain: '' };
+    case ADD_URL:
+      return { ...state, shortener: '' };
+    case UPDATE_URL:
+      return { ...state, urlOptions: '' };
+    case AUTH_ERROR:
+      return { ...state, auth: action.payload };
+    case AUTH_USER:
+      return { ...state, auth: '' };
+    case HIDE_PAGE_LOADING:
+      return {
+        ...state,
+        auth: '',
+        shortener: '',
+        urlOptions: '',
+      };
+    default:
+      return state;
+  }
+};
+
+export default error;

+ 6 - 180
client/reducers/index.js

@@ -1,191 +1,17 @@
 import { combineReducers } from 'redux';
-import * as types from '../actions/actionTypes';
 
-const initialState = {
-  list: [],
-  isShortened: false,
-  count: 10,
-  countAll: 0,
-  page: 1,
-  search: '',
-};
-
-const url = (state = initialState, action) => {
-  const { count, page, search } = action.payload || {};
-  const isSearch = typeof search !== 'undefined';
-  switch (action.type) {
-    case types.ADD_URL:
-      return { ...state, isShortened: true, list: [action.payload, ...state.list] };
-    case types.UPDATE_URL_LIST:
-      return Object.assign({}, state, count && { count }, page && { page }, isSearch && { search });
-    case types.LIST_URLS:
-      return {
-        ...state,
-        list: action.payload.list,
-        countAll: action.payload.countAll,
-        isShortened: false,
-      };
-    case types.DELETE_URL:
-      return { ...state, list: state.list.filter(item => item.id !== action.payload) };
-    case types.UNAUTH_USER:
-      return initialState;
-    default:
-      return state;
-  }
-};
-
-/* All errors */
-const errorInitialState = {
-  auth: '',
-  domain: '',
-  shortener: '',
-};
-
-const error = (state = errorInitialState, action) => {
-  switch (action.type) {
-    case types.SHORTENER_ERROR:
-      return { ...state, shortener: action.payload };
-    case types.DOMAIN_ERROR:
-      return { ...state, domain: action.payload };
-    case types.SET_DOMAIN:
-      return { ...state, domain: '' };
-    case types.SHOW_DOMAIN_INPUT:
-      return { ...state, domain: '' };
-    case types.ADD_URL:
-      return { ...state, shortener: '' };
-    case types.UPDATE_URL:
-      return { ...state, urlOptions: '' };
-    case types.AUTH_ERROR:
-      return { ...state, auth: action.payload };
-    case types.AUTH_USER:
-      return { ...state, auth: '' };
-    case types.HIDE_PAGE_LOADING:
-      return {
-        ...state,
-        auth: '',
-        shortener: '',
-        urlOptions: '',
-      };
-    default:
-      return state;
-  }
-};
-
-/* All loadings */
-const loadingInitialState = {
-  api: false,
-  domain: false,
-  shortener: false,
-  login: false,
-  page: false,
-  table: false,
-  signup: false,
-};
-
-const loading = (state = loadingInitialState, action) => {
-  switch (action.type) {
-    case types.SHOW_PAGE_LOADING:
-      return { ...state, page: true };
-    case types.HIDE_PAGE_LOADING:
-      return {
-        shortener: false,
-        login: false,
-        page: false,
-        signup: false,
-      };
-    case types.TABLE_LOADING:
-      return { ...state, table: true };
-    case types.LOGIN_LOADING:
-      return { ...state, login: true };
-    case types.SIGNUP_LOADING:
-      return { ...state, signup: true };
-    case types.SHORTENER_LOADING:
-      return { ...state, shortener: true };
-    case types.ADD_URL:
-      return { ...state, shortener: false };
-    case types.SHORTENER_ERROR:
-      return { ...state, shortener: false };
-    case types.LIST_URLS:
-      return { ...state, table: false };
-    case types.DELETE_URL:
-      return { ...state, table: false };
-    case types.AUTH_ERROR:
-      return { ...state, login: false, signup: false };
-    case types.AUTH_USER:
-      return { ...state, login: false, signup: false };
-    case types.DOMAIN_LOADING:
-      return { ...state, domain: true };
-    case types.SET_DOMAIN:
-      return { ...state, domain: false };
-    case types.DOMAIN_ERROR:
-      return { ...state, domain: false };
-    case types.API_LOADING:
-      return { ...state, api: true };
-    case types.SET_APIKEY:
-      return { ...state, api: false };
-    default:
-      return state;
-  }
-};
-
-/* User authentication */
-const authInitialState = {
-  isAuthenticated: false,
-  sentVerification: false,
-  user: '',
-  renew: false,
-};
-
-const auth = (state = authInitialState, action) => {
-  switch (action.type) {
-    case types.AUTH_USER:
-      return {
-        ...state,
-        isAuthenticated: true,
-        user: action.payload,
-        sentVerification: false,
-      };
-    case types.AUTH_RENEW:
-      return { ...state, renew: true };
-    case types.UNAUTH_USER:
-      return authInitialState;
-    case types.SENT_VERIFICATION:
-      return { ...state, sentVerification: true, user: action.payload };
-    default:
-      return state;
-  }
-};
-
-/* Settings */
-const settingsInitialState = {
-  apikey: '',
-  customDomain: '',
-  domainInput: true,
-};
-
-const settings = (state = settingsInitialState, action) => {
-  switch (action.type) {
-    case types.SET_DOMAIN:
-      return { ...state, customDomain: action.payload, domainInput: false };
-    case types.SET_APIKEY:
-      return { ...state, apikey: action.payload };
-    case types.DELETE_DOMAIN:
-      return { ...state, customDomain: '', domainInput: true };
-    case types.SHOW_DOMAIN_INPUT:
-      return { ...state, domainInput: true };
-    case types.UNAUTH_USER:
-      return settingsInitialState;
-    default:
-      return state;
-  }
-};
+import url from './url';
+import auth from './auth';
+import error from './error';
+import loading from './loading';
+import settings from './settings';
 
 const rootReducer = combineReducers({
+  url,
   auth,
   error,
   loading,
   settings,
-  url,
 });
 
 export default rootReducer;

+ 77 - 0
client/reducers/loading.js

@@ -0,0 +1,77 @@
+import {
+  SHOW_PAGE_LOADING,
+  HIDE_PAGE_LOADING,
+  TABLE_LOADING,
+  LOGIN_LOADING,
+  SIGNUP_LOADING,
+  SHORTENER_LOADING,
+  ADD_URL,
+  SHORTENER_ERROR,
+  LIST_URLS,
+  DELETE_URL,
+  AUTH_ERROR,
+  AUTH_USER,
+  DOMAIN_LOADING,
+  SET_DOMAIN,
+  DOMAIN_ERROR,
+  API_LOADING,
+  SET_APIKEY,
+} from '../actions/actionTypes';
+
+const initialState = {
+  api: false,
+  domain: false,
+  shortener: false,
+  login: false,
+  page: false,
+  table: false,
+  signup: false,
+};
+
+const loading = (state = initialState, action) => {
+  switch (action.type) {
+    case SHOW_PAGE_LOADING:
+      return { ...state, page: true };
+    case HIDE_PAGE_LOADING:
+      return {
+        shortener: false,
+        login: false,
+        page: false,
+        signup: false,
+      };
+    case TABLE_LOADING:
+      return { ...state, table: true };
+    case LOGIN_LOADING:
+      return { ...state, login: true };
+    case SIGNUP_LOADING:
+      return { ...state, signup: true };
+    case SHORTENER_LOADING:
+      return { ...state, shortener: true };
+    case ADD_URL:
+      return { ...state, shortener: false };
+    case SHORTENER_ERROR:
+      return { ...state, shortener: false };
+    case LIST_URLS:
+      return { ...state, table: false };
+    case DELETE_URL:
+      return { ...state, table: false };
+    case AUTH_ERROR:
+      return { ...state, login: false, signup: false };
+    case AUTH_USER:
+      return { ...state, login: false, signup: false };
+    case DOMAIN_LOADING:
+      return { ...state, domain: true };
+    case SET_DOMAIN:
+      return { ...state, domain: false };
+    case DOMAIN_ERROR:
+      return { ...state, domain: false };
+    case API_LOADING:
+      return { ...state, api: true };
+    case SET_APIKEY:
+      return { ...state, api: false };
+    default:
+      return state;
+  }
+};
+
+export default loading;

+ 32 - 0
client/reducers/settings.js

@@ -0,0 +1,32 @@
+import {
+  SET_DOMAIN,
+  SET_APIKEY,
+  DELETE_DOMAIN,
+  SHOW_DOMAIN_INPUT,
+  UNAUTH_USER,
+} from '../actions/actionTypes';
+
+const initialState = {
+  apikey: '',
+  customDomain: '',
+  domainInput: true,
+};
+
+const settings = (state = initialState, action) => {
+  switch (action.type) {
+    case SET_DOMAIN:
+      return { ...state, customDomain: action.payload, domainInput: false };
+    case SET_APIKEY:
+      return { ...state, apikey: action.payload };
+    case DELETE_DOMAIN:
+      return { ...state, customDomain: '', domainInput: true };
+    case SHOW_DOMAIN_INPUT:
+      return { ...state, domainInput: true };
+    case UNAUTH_USER:
+      return initialState;
+    default:
+      return state;
+  }
+};
+
+export default settings;

+ 49 - 0
client/reducers/url.js

@@ -0,0 +1,49 @@
+import {
+  ADD_URL,
+  UPDATE_URL_LIST,
+  LIST_URLS,
+  DELETE_URL,
+  UNAUTH_USER,
+} from '../actions/actionTypes';
+
+const initialState = {
+  list: [],
+  isShortened: false,
+  count: 10,
+  countAll: 0,
+  page: 1,
+  search: '',
+};
+
+const url = (state = initialState, action) => {
+  const { count, page, search } = action.payload || {};
+  const isSearch = typeof search !== 'undefined';
+  switch (action.type) {
+    case ADD_URL:
+      return {
+        ...state,
+        isShortened: true,
+        list: [action.payload, ...state.list],
+      };
+    case UPDATE_URL_LIST:
+      return Object.assign({}, state, count && { count }, page && { page }, isSearch && { search });
+    case LIST_URLS:
+      return {
+        ...state,
+        list: action.payload.list,
+        countAll: action.payload.countAll,
+        isShortened: false,
+      };
+    case DELETE_URL:
+      return {
+        ...state,
+        list: state.list.filter(item => item.id !== action.payload),
+      };
+    case UNAUTH_USER:
+      return initialState;
+    default:
+      return state;
+  }
+};
+
+export default url;