diff --git a/ee/app/assets/javascripts/ci/secrets/components/secret_form/secret_form_wrapper.vue b/ee/app/assets/javascripts/ci/secrets/components/secret_form/secret_form_wrapper.vue index 158a96e5fb30f1acdc2778183073b2fe68954f36..7ab8a557ffa4db73d3bae3dec84aa20cde619757 100644 --- a/ee/app/assets/javascripts/ci/secrets/components/secret_form/secret_form_wrapper.vue +++ b/ee/app/assets/javascripts/ci/secrets/components/secret_form/secret_form_wrapper.vue @@ -9,7 +9,12 @@ import { ENVIRONMENT_QUERY_LIMIT, mapEnvironmentNames, } from '~/ci/common/private/ci_environments_dropdown'; -import { ENTITY_PROJECT, FAILED_TO_LOAD_ERROR_MESSAGE } from '../../constants'; +import { + ACCEPTED_CONTEXTS, + ENTITY_GROUP, + ENTITY_PROJECT, + FAILED_TO_LOAD_ERROR_MESSAGE, +} from '../../constants'; import getSecretDetailsQuery from '../../graphql/queries/get_secret_details.query.graphql'; import SecretForm from './secret_form.vue'; @@ -30,9 +35,10 @@ export default { SecretForm, }, props: { - entity: { + context: { type: String, required: true, + validator: (value) => ACCEPTED_CONTEXTS.includes(value), }, fullPath: { type: String, @@ -58,8 +64,11 @@ export default { }, apollo: { environments: { + skip() { + return ![ENTITY_PROJECT, ENTITY_GROUP].includes(this.context); + }, query() { - return this.entity === ENTITY_PROJECT ? getProjectEnvironments : getGroupEnvironments; + return this.context === ENTITY_PROJECT ? getProjectEnvironments : getGroupEnvironments; }, variables() { return { @@ -69,7 +78,7 @@ export default { }; }, update(data) { - if (this.entity === ENTITY_PROJECT) { + if (this.context === ENTITY_PROJECT) { return mapEnvironmentNames(data.project?.environments?.nodes || []); } @@ -106,7 +115,7 @@ export default { return this.isEditing && this.$apollo.queries.secretData.loading; }, pageDescription() { - if (this.entity === ENTITY_PROJECT) { + if (this.context === ENTITY_PROJECT) { return this.$options.i18n.descriptionProject; } diff --git a/ee/app/assets/javascripts/ci/secrets/components/secrets_app.vue b/ee/app/assets/javascripts/ci/secrets/components/secrets_app.vue index 3a35ac6f7448e3500b78cf4f4b4a2648bf72f797..ef4d34c27902c11a0a99a4ef7ffc6c85a306d899 100644 --- a/ee/app/assets/javascripts/ci/secrets/components/secrets_app.vue +++ b/ee/app/assets/javascripts/ci/secrets/components/secrets_app.vue @@ -3,8 +3,13 @@ import { GlLoadingIcon } from '@gitlab/ui'; import { s__ } from '~/locale'; import { createAlert } from '~/alert'; import { captureException } from '~/sentry/sentry_browser_wrapper'; -import getSecretManagerStatusQuery from '../graphql/queries/get_secret_manager_status.query.graphql'; -import { POLL_INTERVAL, SECRET_MANAGER_STATUS_PROVISIONING } from '../constants'; +import getProjectSecretsManagerStatusQuery from '../graphql/queries/get_secret_manager_status.query.graphql'; +import { + ACCEPTED_CONTEXTS, + ENTITY_PROJECT, + POLL_INTERVAL, + SECRET_MANAGER_STATUS_PROVISIONING, +} from '../constants'; export default { name: 'SecretsApp', @@ -12,6 +17,11 @@ export default { GlLoadingIcon, }, props: { + context: { + type: String, + required: true, + validator: (value) => ACCEPTED_CONTEXTS.includes(value), + }, fullPath: { type: String, required: true, @@ -24,7 +34,10 @@ export default { }, apollo: { secretManagerStatus: { - query: getSecretManagerStatusQuery, + query: getProjectSecretsManagerStatusQuery, + skip() { + return !this.isProjectContext; + }, variables() { return { projectPath: this.fullPath, @@ -51,6 +64,9 @@ export default { }, }, computed: { + isProjectContext() { + return this.context === ENTITY_PROJECT; + }, isProvisioning() { return this.secretManagerStatus === SECRET_MANAGER_STATUS_PROVISIONING; }, @@ -64,12 +80,12 @@ export default {