Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-07-03 00:09:14 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-07-03 00:09:14 +0300
commit2c0e92d0314ca00907b75b103af507d9a28a2d62 (patch)
tree1f98c624119c49aafbda54dafb067aa2d6b66f8d /app/assets/javascripts/ci_variable_list
parent075ce5ae315d1b1d0623647714bc69bfa9df721a (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/ci_variable_list')
-rw-r--r--app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue73
-rw-r--r--app/assets/javascripts/ci_variable_list/store/actions.js28
-rw-r--r--app/assets/javascripts/ci_variable_list/store/mutation_types.js6
-rw-r--r--app/assets/javascripts/ci_variable_list/store/mutations.js31
-rw-r--r--app/assets/javascripts/ci_variable_list/store/state.js4
-rw-r--r--app/assets/javascripts/ci_variable_list/store/utils.js4
6 files changed, 95 insertions, 51 deletions
diff --git a/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue b/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue
index 5040e9f7e18..10909230726 100644
--- a/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue
+++ b/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue
@@ -16,6 +16,7 @@ import {
} from '@gitlab/ui';
import Cookies from 'js-cookie';
import { mapActions, mapState } from 'vuex';
+import { mapComputed } from '~/vuex_shared/bindings';
import { __ } from '~/locale';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import {
@@ -30,6 +31,9 @@ import CiEnvironmentsDropdown from './ci_environments_dropdown.vue';
export default {
modalId: ADD_CI_VARIABLE_MODAL_ID,
+ tokens: awsTokens,
+ tokenList: awsTokenList,
+ awsTipMessage: AWS_TIP_MESSAGE,
components: {
CiEnvironmentsDropdown,
CiKeyField,
@@ -48,9 +52,6 @@ export default {
GlSprintf,
},
mixins: [glFeatureFlagsMixin()],
- tokens: awsTokens,
- tokenList: awsTokenList,
- awsTipMessage: AWS_TIP_MESSAGE,
data() {
return {
isTipDismissed: Cookies.get(AWS_TIP_DISMISSED_COOKIE_NAME) === 'true',
@@ -74,22 +75,34 @@ export default {
'protectedEnvironmentVariablesLink',
'maskedEnvironmentVariablesLink',
]),
+ ...mapComputed(
+ [
+ { key: 'key', updateFn: 'updateVariableKey' },
+ { key: 'secret_value', updateFn: 'updateVariableValue' },
+ { key: 'variable_type', updateFn: 'updateVariableType' },
+ { key: 'environment_scope', updateFn: 'setEnvironmentScope' },
+ { key: 'protected_variable', updateFn: 'updateVariableProtected' },
+ { key: 'masked', updateFn: 'updateVariableMasked' },
+ ],
+ false,
+ 'variable',
+ ),
isTipVisible() {
- return !this.isTipDismissed && AWS_TOKEN_CONSTANTS.includes(this.variableData.key);
+ return !this.isTipDismissed && AWS_TOKEN_CONSTANTS.includes(this.variable.key);
},
canSubmit() {
return (
this.variableValidationState &&
- this.variableData.key !== '' &&
- this.variableData.secret_value !== ''
+ this.variable.key !== '' &&
+ this.variable.secret_value !== ''
);
},
canMask() {
const regex = RegExp(this.maskableRegex);
- return regex.test(this.variableData.secret_value);
+ return regex.test(this.variable.secret_value);
},
displayMaskedError() {
- return !this.canMask && this.variableData.masked;
+ return !this.canMask && this.variable.masked;
},
maskedState() {
if (this.displayMaskedError) {
@@ -97,9 +110,6 @@ export default {
}
return true;
},
- variableData() {
- return this.variableBeingEdited || this.variable;
- },
modalActionText() {
return this.variableBeingEdited ? __('Update variable') : __('Add variable');
},
@@ -107,7 +117,7 @@ export default {
return this.displayMaskedError ? __('This variable can not be masked.') : '';
},
tokenValidationFeedback() {
- const tokenSpecificFeedback = this.$options.tokens?.[this.variableData.key]?.invalidMessage;
+ const tokenSpecificFeedback = this.$options.tokens?.[this.variable.key]?.invalidMessage;
if (!this.tokenValidationState && tokenSpecificFeedback) {
return tokenSpecificFeedback;
}
@@ -119,10 +129,10 @@ export default {
return true;
}
- const validator = this.$options.tokens?.[this.variableData.key]?.validation;
+ const validator = this.$options.tokens?.[this.variable.key]?.validation;
if (validator) {
- return validator(this.variableData.secret_value);
+ return validator(this.variable.secret_value);
}
return true;
@@ -131,14 +141,7 @@ export default {
return `${this.tokenValidationFeedback} ${this.maskedFeedback}`;
},
variableValidationState() {
- if (
- this.variableData.secret_value === '' ||
- (this.tokenValidationState && this.maskedState)
- ) {
- return true;
- }
-
- return false;
+ return this.variable.secret_value === '' || (this.tokenValidationState && this.maskedState);
},
},
methods: {
@@ -160,7 +163,7 @@ export default {
this.isTipDismissed = true;
},
deleteVarAndClose() {
- this.deleteVariable(this.variableBeingEdited);
+ this.deleteVariable();
this.hideModal();
},
hideModal() {
@@ -169,14 +172,14 @@ export default {
resetModalHandler() {
if (this.variableBeingEdited) {
this.resetEditing();
- } else {
- this.clearModal();
}
+
+ this.clearModal();
this.resetSelectedEnvironment();
},
updateOrAddVariable() {
if (this.variableBeingEdited) {
- this.updateVariable(this.variableBeingEdited);
+ this.updateVariable();
} else {
this.addVariable();
}
@@ -204,14 +207,14 @@ export default {
<form>
<ci-key-field
v-if="glFeatures.ciKeyAutocomplete"
- v-model="variableData.key"
+ v-model="key"
:token-list="$options.tokenList"
/>
<gl-form-group v-else :label="__('Key')" label-for="ci-variable-key">
<gl-form-input
id="ci-variable-key"
- v-model="variableData.key"
+ v-model="key"
data-qa-selector="ci_variable_key_field"
/>
</gl-form-group>
@@ -225,7 +228,7 @@ export default {
<gl-form-textarea
id="ci-variable-value"
ref="valueField"
- v-model="variableData.secret_value"
+ v-model="secret_value"
:state="variableValidationState"
rows="3"
max-rows="6"
@@ -241,11 +244,7 @@ export default {
class="w-50 append-right-15"
:class="{ 'w-100': isGroup }"
>
- <gl-form-select
- id="ci-variable-type"
- v-model="variableData.variable_type"
- :options="typeOptions"
- />
+ <gl-form-select id="ci-variable-type" v-model="variable_type" :options="typeOptions" />
</gl-form-group>
<gl-form-group
@@ -256,7 +255,7 @@ export default {
>
<ci-environments-dropdown
class="w-100"
- :value="variableData.environment_scope"
+ :value="environment_scope"
@selectEnvironment="setEnvironmentScope"
@createClicked="addWildCardScope"
/>
@@ -264,7 +263,7 @@ export default {
</div>
<gl-form-group :label="__('Flags')" label-for="ci-variable-flags">
- <gl-form-checkbox v-model="variableData.protected" class="mb-0">
+ <gl-form-checkbox v-model="protected_variable" class="mb-0">
{{ __('Protect variable') }}
<gl-link target="_blank" :href="protectedEnvironmentVariablesLink">
<gl-icon name="question" :size="12" />
@@ -276,7 +275,7 @@ export default {
<gl-form-checkbox
ref="masked-ci-variable"
- v-model="variableData.masked"
+ v-model="masked"
data-qa-selector="ci_variable_masked_checkbox"
>
{{ __('Mask variable') }}
diff --git a/app/assets/javascripts/ci_variable_list/store/actions.js b/app/assets/javascripts/ci_variable_list/store/actions.js
index d9129c919f8..60c7a480769 100644
--- a/app/assets/javascripts/ci_variable_list/store/actions.js
+++ b/app/assets/javascripts/ci_variable_list/store/actions.js
@@ -65,10 +65,10 @@ export const receiveUpdateVariableError = ({ commit }, error) => {
commit(types.RECEIVE_UPDATE_VARIABLE_ERROR, error);
};
-export const updateVariable = ({ state, dispatch }, variable) => {
+export const updateVariable = ({ state, dispatch }) => {
dispatch('requestUpdateVariable');
- const updatedVariable = prepareDataForApi(variable);
+ const updatedVariable = prepareDataForApi(state.variable);
updatedVariable.secrect_value = updateVariable.value;
return axios
@@ -121,13 +121,13 @@ export const receiveDeleteVariableError = ({ commit }, error) => {
commit(types.RECEIVE_DELETE_VARIABLE_ERROR, error);
};
-export const deleteVariable = ({ dispatch, state }, variable) => {
+export const deleteVariable = ({ dispatch, state }) => {
dispatch('requestDeleteVariable');
const destroy = true;
return axios
- .patch(state.endpoint, { variables_attributes: [prepareDataForApi(variable, destroy)] })
+ .patch(state.endpoint, { variables_attributes: [prepareDataForApi(state.variable, destroy)] })
.then(() => {
dispatch('receiveDeleteVariableSuccess');
dispatch('fetchVariables');
@@ -176,3 +176,23 @@ export const resetSelectedEnvironment = ({ commit }) => {
export const setSelectedEnvironment = ({ commit }, environment) => {
commit(types.SET_SELECTED_ENVIRONMENT, environment);
};
+
+export const updateVariableKey = ({ commit }, { key }) => {
+ commit(types.UPDATE_VARIABLE_KEY, key);
+};
+
+export const updateVariableValue = ({ commit }, { secret_value }) => {
+ commit(types.UPDATE_VARIABLE_VALUE, secret_value);
+};
+
+export const updateVariableType = ({ commit }, { variable_type }) => {
+ commit(types.UPDATE_VARIABLE_TYPE, variable_type);
+};
+
+export const updateVariableProtected = ({ commit }, { protected_variable }) => {
+ commit(types.UPDATE_VARIABLE_PROTECTED, protected_variable);
+};
+
+export const updateVariableMasked = ({ commit }, { masked }) => {
+ commit(types.UPDATE_VARIABLE_MASKED, masked);
+};
diff --git a/app/assets/javascripts/ci_variable_list/store/mutation_types.js b/app/assets/javascripts/ci_variable_list/store/mutation_types.js
index ccf8fbd3cb5..5db8f610192 100644
--- a/app/assets/javascripts/ci_variable_list/store/mutation_types.js
+++ b/app/assets/javascripts/ci_variable_list/store/mutation_types.js
@@ -25,3 +25,9 @@ export const SET_ENVIRONMENT_SCOPE = 'SET_ENVIRONMENT_SCOPE';
export const ADD_WILD_CARD_SCOPE = 'ADD_WILD_CARD_SCOPE';
export const RESET_SELECTED_ENVIRONMENT = 'RESET_SELECTED_ENVIRONMENT';
export const SET_SELECTED_ENVIRONMENT = 'SET_SELECTED_ENVIRONMENT';
+
+export const UPDATE_VARIABLE_KEY = 'UPDATE_VARIABLE_KEY';
+export const UPDATE_VARIABLE_VALUE = 'UPDATE_VARIABLE_VALUE';
+export const UPDATE_VARIABLE_TYPE = 'UPDATE_VARIABLE_TYPE';
+export const UPDATE_VARIABLE_PROTECTED = 'UPDATE_VARIABLE_PROTECTED';
+export const UPDATE_VARIABLE_MASKED = 'UPDATE_VARIABLE_MASKED';
diff --git a/app/assets/javascripts/ci_variable_list/store/mutations.js b/app/assets/javascripts/ci_variable_list/store/mutations.js
index 7d9cd0dd727..8903b742537 100644
--- a/app/assets/javascripts/ci_variable_list/store/mutations.js
+++ b/app/assets/javascripts/ci_variable_list/store/mutations.js
@@ -65,7 +65,8 @@ export default {
},
[types.VARIABLE_BEING_EDITED](state, variable) {
- state.variableBeingEdited = variable;
+ state.variableBeingEdited = true;
+ state.variable = variable;
},
[types.CLEAR_MODAL](state) {
@@ -80,16 +81,12 @@ export default {
},
[types.RESET_EDITING](state) {
- state.variableBeingEdited = null;
+ state.variableBeingEdited = false;
state.showInputValue = false;
},
[types.SET_ENVIRONMENT_SCOPE](state, environment) {
- if (state.variableBeingEdited) {
- state.variableBeingEdited.environment_scope = environment;
- } else {
- state.variable.environment_scope = environment;
- }
+ state.variable.environment_scope = environment;
},
[types.ADD_WILD_CARD_SCOPE](state, environment) {
@@ -108,4 +105,24 @@ export default {
[types.SET_VARIABLE_PROTECTED](state) {
state.variable.protected = true;
},
+
+ [types.UPDATE_VARIABLE_KEY](state, key) {
+ state.variable.key = key;
+ },
+
+ [types.UPDATE_VARIABLE_VALUE](state, value) {
+ state.variable.secret_value = value;
+ },
+
+ [types.UPDATE_VARIABLE_TYPE](state, type) {
+ state.variable.variable_type = type;
+ },
+
+ [types.UPDATE_VARIABLE_PROTECTED](state, bool) {
+ state.variable.protected_variable = bool;
+ },
+
+ [types.UPDATE_VARIABLE_MASKED](state, bool) {
+ state.variable.masked = bool;
+ },
};
diff --git a/app/assets/javascripts/ci_variable_list/store/state.js b/app/assets/javascripts/ci_variable_list/store/state.js
index 2fffd115589..96b27792664 100644
--- a/app/assets/javascripts/ci_variable_list/store/state.js
+++ b/app/assets/javascripts/ci_variable_list/store/state.js
@@ -12,7 +12,7 @@ export default () => ({
variable_type: displayText.variableText,
key: '',
secret_value: '',
- protected: false,
+ protected_variable: false,
masked: false,
environment_scope: displayText.allEnvironmentsText,
},
@@ -21,6 +21,6 @@ export default () => ({
error: null,
environments: [],
typeOptions: [displayText.variableText, displayText.fileText],
- variableBeingEdited: null,
+ variableBeingEdited: false,
selectedEnvironment: '',
});
diff --git a/app/assets/javascripts/ci_variable_list/store/utils.js b/app/assets/javascripts/ci_variable_list/store/utils.js
index 3cd8c85024b..f04530359e7 100644
--- a/app/assets/javascripts/ci_variable_list/store/utils.js
+++ b/app/assets/javascripts/ci_variable_list/store/utils.js
@@ -18,6 +18,7 @@ export const prepareDataForDisplay = variables => {
if (variableCopy.environment_scope === types.allEnvironmentsType) {
variableCopy.environment_scope = displayText.allEnvironmentsText;
}
+ variableCopy.protected_variable = variableCopy.protected;
variablesToDisplay.push(variableCopy);
});
return variablesToDisplay;
@@ -25,7 +26,8 @@ export const prepareDataForDisplay = variables => {
export const prepareDataForApi = (variable, destroy = false) => {
const variableCopy = cloneDeep(variable);
- variableCopy.protected = variableCopy.protected.toString();
+ variableCopy.protected = variableCopy.protected_variable.toString();
+ delete variableCopy.protected_variable;
variableCopy.masked = variableCopy.masked.toString();
variableCopy.variable_type = variableTypeHandler(variableCopy.variable_type);
if (variableCopy.environment_scope === displayText.allEnvironmentsText) {