// @ts-nocheck import { createReducer } from '@reduxjs/toolkit'; import { isUndefined, isNumber, omit } from 'lodash'; import t from '@/store/types'; import { persistReducer, purgeStoredState } from 'redux-persist'; import storage from 'redux-persist/lib/storage'; const initialState = { pageTitle: '', pageSubtitle: '', pageHint: '', preferencesPageTitle: '', sidebarExpended: true, dialogs: {}, alerts: {}, drawers: {}, topbarEditViewId: null, requestsLoading: 0, backLink: false, splashScreenLoading: null, appIsLoading: true, appIntlIsLoading: true, sidebarSubmenu: { isOpen: false, submenuId: null }, features: {}, autofill: {}, }; const STORAGE_KEY = 'bigcapital:dashboard'; const CONFIG = { key: STORAGE_KEY, whitelist: [], storage, }; const reducerInstance = createReducer(initialState, { [t.CHANGE_DASHBOARD_PAGE_TITLE]: (state, action) => { state.pageTitle = action.pageTitle; }, [t.ALTER_DASHBOARD_PAGE_SUBTITLE]: (state, action) => { state.pageSubtitle = action.pageSubtitle; }, [t.CHANGE_DASHBOARD_PAGE_HINT]: (state, action) => { state.pageHint = action.payload.pageHint; }, [t.CHANGE_PREFERENCES_PAGE_TITLE]: (state, action) => { state.preferencesPageTitle = action.pageTitle; }, [t.OPEN_DIALOG]: (state, action) => { state.dialogs[action.name] = { isOpen: true, payload: action.payload || {}, }; }, [t.CLOSE_DIALOG]: (state, action) => { state.dialogs[action.name] = { ...state.dialogs[action.name], isOpen: false, }; }, [t.OPEN_ALERT]: (state, action) => { state.alerts[action.name] = { isOpen: true, payload: action.payload || {}, }; }, [t.CLOSE_ALERT]: (state, action) => { state.alerts[action.name] = { ...state.alerts[action.name], isOpen: false, }; }, [t.OPEN_DRAWER]: (state, action) => { state.drawers[action.name] = { isOpen: true, payload: action.payload || {}, }; }, [t.CLOSE_DRAWER]: (state, action) => { state.drawers[action.name] = { ...state.drawers[action.name], isOpen: false, }; }, [t.CLOSE_ALL_DIALOGS]: (state, action) => { }, [t.SET_TOPBAR_EDIT_VIEW]: (state, action) => { state.topbarEditViewId = action.id; }, [t.SIDEBAR_EXPEND_TOGGLE]: (state, action) => { const { toggle } = action.payload; state.sidebarExpended = isUndefined(toggle) ? !state.sidebarExpended : !!toggle; }, [t.SET_DASHBOARD_BACK_LINK]: (state, action) => { const { backLink } = action.payload; state.backLink = backLink; }, [t.SPLASH_START_LOADING]: (state) => { if (isNumber(state.splashScreenLoading)) { state.splashScreenLoading += 1; } else { state.splashScreenLoading = 1; } }, [t.SET_FEATURE_DASHBOARD_META]: (state, action) => { const { features } = action.payload; const _data = {}; features.forEach((feature) => { _data[feature.name] = feature.is_accessible; }); state.features = _data; }, [t.SPLASH_STOP_LOADING]: (state) => { state.splashScreenLoading -= 1; state.splashScreenLoading = Math.max(state.splashScreenLoading, 0); }, [t.SIDEBAR_SUBMENU_OPEN]: (state, action) => { state.sidebarSubmenu.isOpen = true; state.sidebarSubmenu.submenuId = action.payload.submenuId; }, [t.SIDEBAR_SUBMENU_CLOSE]: (state, action) => { state.sidebarSubmenu.isOpen = false; state.sidebarSubmenu.submenuId = null; }, [t.RESET]: () => { purgeStoredState(CONFIG); }, [t.ADD_AUTOFILL_REF]: (state, action) => { state.autofill[action.payload.ref] = action.payload.payload || null; }, [t.REMOVE_AUTOFILL_REF]: (state, action) => { state.autofill = omit(state.autofill, [action.payload.ref]); }, [t.RESET_AUTOFILL_REF]: (state, action) => { state.autofill = {}; }, }); export default persistReducer(CONFIG, reducerInstance); export const getDialogPayload = (state, dialogName) => { return typeof state.dashboard.dialogs[dialogName] !== 'undefined' ? state.dashboard.dialogs[dialogName].payload : {}; }; export const getDialogActiveStatus = (state, dialogName) => { return true; };