diff options
Diffstat (limited to 'app/assets/javascripts/integrations/edit/store')
6 files changed, 45 insertions, 0 deletions
diff --git a/app/assets/javascripts/integrations/edit/store/actions.js b/app/assets/javascripts/integrations/edit/store/actions.js new file mode 100644 index 00000000000..3decdaab55d --- /dev/null +++ b/app/assets/javascripts/integrations/edit/store/actions.js @@ -0,0 +1,4 @@ +import * as types from './mutation_types'; + +// eslint-disable-next-line import/prefer-default-export +export const setOverride = ({ commit }, override) => commit(types.SET_OVERRIDE, override); diff --git a/app/assets/javascripts/integrations/edit/store/getters.js b/app/assets/javascripts/integrations/edit/store/getters.js new file mode 100644 index 00000000000..b68bd668980 --- /dev/null +++ b/app/assets/javascripts/integrations/edit/store/getters.js @@ -0,0 +1,6 @@ +export const isInheriting = state => (state.adminState === null ? false : !state.override); + +export const propsSource = (state, getters) => + getters.isInheriting ? state.adminState : state.customState; + +export const currentKey = (state, getters) => (getters.isInheriting ? 'admin' : 'custom'); diff --git a/app/assets/javascripts/integrations/edit/store/index.js b/app/assets/javascripts/integrations/edit/store/index.js new file mode 100644 index 00000000000..eea5e48780d --- /dev/null +++ b/app/assets/javascripts/integrations/edit/store/index.js @@ -0,0 +1,17 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import * as actions from './actions'; +import * as getters from './getters'; +import mutations from './mutations'; +import createState from './state'; + +Vue.use(Vuex); + +// eslint-disable-next-line import/prefer-default-export +export const createStore = (initialState = {}) => + new Vuex.Store({ + actions, + getters, + mutations, + state: createState(initialState), + }); diff --git a/app/assets/javascripts/integrations/edit/store/mutation_types.js b/app/assets/javascripts/integrations/edit/store/mutation_types.js new file mode 100644 index 00000000000..274afe3fb49 --- /dev/null +++ b/app/assets/javascripts/integrations/edit/store/mutation_types.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export const SET_OVERRIDE = 'SET_OVERRIDE'; diff --git a/app/assets/javascripts/integrations/edit/store/mutations.js b/app/assets/javascripts/integrations/edit/store/mutations.js new file mode 100644 index 00000000000..8757d415197 --- /dev/null +++ b/app/assets/javascripts/integrations/edit/store/mutations.js @@ -0,0 +1,7 @@ +import * as types from './mutation_types'; + +export default { + [types.SET_OVERRIDE](state, override) { + state.override = override; + }, +}; diff --git a/app/assets/javascripts/integrations/edit/store/state.js b/app/assets/javascripts/integrations/edit/store/state.js new file mode 100644 index 00000000000..95c1a2be500 --- /dev/null +++ b/app/assets/javascripts/integrations/edit/store/state.js @@ -0,0 +1,9 @@ +export default ({ adminState = null, customState = {} } = {}) => { + const override = adminState !== null ? adminState.id !== customState.inheritFromId : false; + + return { + override, + adminState, + customState, + }; +}; |