@ -8,7 +8,9 @@ import createTestProviderHandler, { createCancelTestProviderHandler } from 'Stor
import createSetProviderFieldValueReducer from 'Store/Actions/Creators/Reducers/createSetProviderFieldValueReducer' ;
import createSetSettingValueReducer from 'Store/Actions/Creators/Reducers/createSetSettingValueReducer' ;
import { createThunk } from 'Store/thunks' ;
import getSectionState from 'Utilities/State/getSectionState' ;
import selectProviderSchema from 'Utilities/State/selectProviderSchema' ;
import updateSectionState from 'Utilities/State/updateSectionState' ;
//
// Variables
@ -21,6 +23,7 @@ const section = 'settings.indexers';
export const FETCH _INDEXERS = 'settings/indexers/fetchIndexers' ;
export const FETCH _INDEXER _SCHEMA = 'settings/indexers/fetchIndexerSchema' ;
export const SELECT _INDEXER _SCHEMA = 'settings/indexers/selectIndexerSchema' ;
export const CLONE _INDEXER = 'settings/indexers/cloneIndexer' ;
export const SET _INDEXER _VALUE = 'settings/indexers/setIndexerValue' ;
export const SET _INDEXER _FIELD _VALUE = 'settings/indexers/setIndexerFieldValue' ;
export const SAVE _INDEXER = 'settings/indexers/saveIndexer' ;
@ -36,6 +39,7 @@ export const TEST_ALL_INDEXERS = 'settings/indexers/testAllIndexers';
export const fetchIndexers = createThunk ( FETCH _INDEXERS ) ;
export const fetchIndexerSchema = createThunk ( FETCH _INDEXER _SCHEMA ) ;
export const selectIndexerSchema = createAction ( SELECT _INDEXER _SCHEMA ) ;
export const cloneIndexer = createAction ( CLONE _INDEXER ) ;
export const saveIndexer = createThunk ( SAVE _INDEXER ) ;
export const cancelSaveIndexer = createThunk ( CANCEL _SAVE _INDEXER ) ;
@ -113,6 +117,30 @@ export default {
return selectedSchema ;
} ) ;
} ,
[ CLONE _INDEXER ] : function ( state , { payload } ) {
const id = payload . id ;
const newState = getSectionState ( state , section ) ;
const item = newState . items . find ( ( i ) => i . id === id ) ;
// Use selectedSchema so `createProviderSettingsSelector` works properly
const selectedSchema = { ... item } ;
delete selectedSchema . id ;
delete selectedSchema . name ;
selectedSchema . fields = selectedSchema . fields . map ( ( field ) => {
return { ... field } ;
} ) ;
newState . selectedSchema = selectedSchema ;
// Set the name in pendingChanges
newState . pendingChanges = {
name : ` ${ item . name } - Copy `
} ;
return updateSectionState ( state , section , newState ) ;
}
}