[ Root System Explorer ]
Location:
Root
/
home
/
svaxkys
/
www
/
AcmaCulot
/
wp-content
/
plugins
/
redux-framework
/
redux-templates
/
src
/
stores
+ Folder
+ File
Upload
Editing: reducer.js
import {parseSectionData, parsePageData, parseCollectionData, getInstalledDependencies, NONE_KEY} from './helper'; import {getDefaultDependencies} from './helper'; import {loadChallengeStep, saveChallengeStep, setWithExpiry, getWithExpiry} from './helper'; const EXIPRY_TIME = 5 * 24 * 3600 * 1000; export const initialState = { loading: false, activeItemType: getWithExpiry('itemType', 'section'), library: null, columns: getWithExpiry('column', ''), errorMessages: [], section: { categories: [], data: {}, priceFilter: getWithExpiry('section_price', ''), activeCategory: getWithExpiry('section_category', ''), dependencyFilters: {}, dependencyFilterRule: getWithExpiry('section_filterRule', true), searchContext: '', wholePlugins: [], thirdPartyPlugins: [], sortBy: getWithExpiry('section_sort', 'name'), currentPage: getWithExpiry('section_page', 0) }, page: { categories: [], data: {}, priceFilter: getWithExpiry('page_price', ''), activeCategory: getWithExpiry('page_category', ''), dependencyFilters: {}, dependencyFilterRule: getWithExpiry('page_filterRule', true), searchContext: '', wholePlugins: [], thirdPartyPlugins: [], sortBy: getWithExpiry('page_sort', 'name'), currentPage: getWithExpiry('page_page', 0) }, collection: { categories: [], data: {}, priceFilter: getWithExpiry('collection_price', ''), activeCategory: getWithExpiry('collection_category', 'name'), dependencyFilters: {}, dependencyFilterRule: false, searchContext: '', wholePlugins: [], thirdPartyPlugins: [], activeCollection: null, sortBy: getWithExpiry('collection_sort', 'name'), currentPage: getWithExpiry('collection_page', 0) }, installedDependencies: false, // used when deciding should or not reload page after importing the template isImportToAppend: true, // append to or replace the current page content for importing tour: { isOpen: false, activeButtonGroup: null, isPreviewVisible: false }, challenge: { isOpen: false, currentStep: loadChallengeStep(), tooltipRect: {}, finalStatus: '', passed: getWithExpiry('reduxChallengePassed', false), listExpanded: true }, plugins: {}, importingTemplate: null, activateDialog: false }; export const reducer = ( state = initialState, action ) => { switch ( action.type ) { case 'SET_LIBRARY': if (!action.library.dependencies) return state; redux_templates.supported_plugins = action.library.plugins; const dependencies = getDefaultDependencies(Object.keys(action.library.dependencies)); const parsedSection = parseSectionData(action.library.sections); const parsedPage = parsePageData(action.library.pages); const parsedCollection = parseCollectionData(action.library); redux_templates.stats = { 'dependencies': Object.keys(action.library.dependencies).length, 'pages': Object.keys(action.library.pages).length, 'sections': Object.keys(action.library.sections).length, 'collections': Object.keys(action.library.collections).length, } return { ...state, loading: false, library: action.library, section: { ...state.section, ...parsedSection, dependencyFilters: getWithExpiry('section_plugin') ? getWithExpiry('section_plugin') : dependencies }, page: { ...state.page, ...parsedPage, dependencyFilters: getWithExpiry('page_plugin') ? getWithExpiry('page_plugin') : dependencies }, collection: { ...state.collection, ...parsedCollection, dependencyFilters: getWithExpiry('collection_plugin') ? getWithExpiry('collection_plugin') : dependencies } }; case 'SET_ACTIVE_CATEGORY': setWithExpiry(state.activeItemType + '_category', action.activeCategory, EXIPRY_TIME); setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME); return { ...state, [state.activeItemType]: { ...state[state.activeItemType], currentPage: 0, activeCategory: action.activeCategory } }; case 'SET_SEARCH_CONTEXT': setWithExpiry(state.activeItemType + '_search', action.searchContext, EXIPRY_TIME); setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME); return { ...state, [state.activeItemType]: { ...state[state.activeItemType], currentPage: 0, searchContext: action.searchContext } }; case 'SET_ACTIVE_PRICE_FILTER': setWithExpiry(state.activeItemType + '_price', action.activePriceFilter, EXIPRY_TIME); setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME); return { ...state, [state.activeItemType]: { ...state[state.activeItemType], currentPage: 0, priceFilter: action.activePriceFilter } }; case 'SET_ACTIVE_ITEM_TYPE': setWithExpiry('itemType', action.activeItemType, EXIPRY_TIME); return { ...state, activeItemType: action.activeItemType }; case 'SET_DEPENDENCY_FILTERS': setWithExpiry(state.activeItemType + '_plugin', action.dependencyFilters, EXIPRY_TIME); setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME); return { ...state, [state.activeItemType]: { ...state[state.activeItemType], currentPage: 0, dependencyFilters: action.dependencyFilters } } case 'SET_SORT_BY': setWithExpiry(state.activeItemType + '_sort', action.sortBy, EXIPRY_TIME); setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME); return { ...state, [state.activeItemType]: { ...state[state.activeItemType], currentPage: 0, sortBy: action.sortBy } }; case 'SET_CURRENT_PAGE': setWithExpiry(state.activeItemType + '_page', action.currentPage, EXIPRY_TIME); return { ...state, [state.activeItemType]: { ...state[state.activeItemType], currentPage: action.currentPage } }; case 'SET_ACTIVE_COLLECTION': return { ...state, collection: { ...state.collection, activeCollection: action.activeCollection } }; case 'SET_LOADING': return { ...state, loading: action.loading } case 'SET_COLUMNS': setWithExpiry('column', action.columns, EXIPRY_TIME); return { ...state, columns: action.columns } case 'APPEND_ERROR_MESSAGE': return { ...state, errorMessages: state.errorMessages.concat([action.errorMessage]) } case 'DISCARD_ALL_ERROR_MESSAGES': return { ...state, errorMessages: [] } case 'SET_INSTALLED_DEPENDENCIES': return { ...state, installedDependencies: action.installedDependencies } case 'SET_TOUR_OPEN': return { ...state, tour: { ...state.tour, isOpen: action.isTourOpen } }; case 'SET_TOUR_ACTIVE_BUTTON_GROUP': return { ...state, tour: { ...state.tour, activeButtonGroup: action.data } }; case 'SET_PREVIEW_VISIBLE': return { ...state, tour: { ...state.tour, isPreviewVisible: action.isVisible } }; case 'SET_IMPORTING_TEMPLATE': return { ...state, importingTemplate: action.importingTemplate } case 'SET_CHALLENGE_STEP': saveChallengeStep(action.data); return { ...state, challenge: { ...state.challenge, currentStep: action.data } } case 'SET_CHALLENGE_OPEN': return { ...state, challenge: { ...state.challenge, isOpen: action.data } } case 'SET_CHALLENGE_TOOLTIP_RECT': return { ...state, challenge: { ...state.challenge, tooltipRect: action.data } } case 'SET_CHALLENGE_FINAL_STATUS': return { ...state, challenge: { ...state.challenge, finalStatus: action.data } } case 'SET_CHALLENGE_PASSED': setWithExpiry('reduxChallengePassed', action.data, EXIPRY_TIME); return { ...state, challenge: { ...state.challenge, passed: action.data } } case 'SET_CHALLENGE_LIST_EXPANDED': return { ...state, challenge: { ...state.challenge, listExpanded: action.data } } case 'SET_ACTIVATE_DIALOG_DISPLAY': return { ...state, activateDialog: action.data } case 'SET_IMPORT_TO_APPEND': return { ...state, isImportToAppend: action.data } case 'SET_DEPENDENCY_FILTER_RULE': setWithExpiry(state.activeItemType + '_filterRule', action.data, EXIPRY_TIME); return { ...state, [state.activeItemType]: { ...state[state.activeItemType], dependencyFilterRule: action.data } } // Dependency Shortcut click handler: All, None, Installed and Reset case 'SELECT_DEPENDENCIES': const types = ['section', 'page', 'collection']; let atomHandler; switch(action.data) { case 'all': case 'none': const newValue = action.data === 'all'; atomHandler = (plugins) => plugins .filter(plugin => [ NONE_KEY, 'gutenberghub.com', 'shareablock.com' ].includes(plugin) === false ) .reduce( (acc, key) => { return { ...acc, [key]: { value: newValue, disabled: false } } }, { [NONE_KEY]: {value: true, disabled: false}, 'gutenberghub.com': {value: true, disabled: false}, 'shareablock.com': {value: true, disabled: false} } ) break; case 'installed': atomHandler = (plugins) => getInstalledDependencies(plugins); break; default: atomHandler = (plugins) => getDefaultDependencies(plugins); break; } const filtered = types.reduce( (acc, cur) => { // save to the local storage as well setWithExpiry(cur + '_plugin', {...state[cur].dependencyFilters, ...atomHandler(state[cur].wholePlugins)}, EXIPRY_TIME); return { ...acc, [cur]: { ...state[cur], searchContext: '', dependencyFilterRule: cur !== 'collection', // We must always use false for collection to get template kits to work. dependencyFilters: {...state[cur].dependencyFilters, ...atomHandler(state[cur].wholePlugins)} } } }, {}); return { ...state, ...filtered }; case 'CLEAR_SEARCH': return { ...state, section: { ...state.section, searchContext: '' }, page: { ...state.page, searchContext: '' }, collection: { ...state.collection, searchContext: '' } } case 'CLEAR_STATE': return { ...state, section: { ...state.section, priceFilter: '', activeCategory: '', searchContext: '', }, page: { ...state.page, priceFilter: '', activeCategory: '', searchContext: '', }, collection: { ...state.collection, priceFilter: '', activeCategory: '', searchContext: '', } } } return state; };
SAVE CHANGES
[ CANCEL ]
Name
Type
Actions
.. (Parent Directory)
📄 actionHelper.js
FILE
Ren
[EDIT]
DEL
📄 actions.js
FILE
Ren
[EDIT]
DEL
📄 dependencyHelper.js
FILE
Ren
[EDIT]
DEL
📄 filters.js
FILE
Ren
[EDIT]
DEL
📄 helper.js
FILE
Ren
[EDIT]
DEL
📄 index.js
FILE
Ren
[EDIT]
DEL
📄 reducer.js
FILE
Ren
[EDIT]
DEL