diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-19 21:09:09 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-19 21:09:09 +0300 |
commit | 6463521e08b00e62d3c877aefd8517f5387d54ab (patch) | |
tree | 1e9c49e6a7cd0e926d32f81c92604cd03ee57fac /app/assets/javascripts/jira_connect | |
parent | 6a3c4476fa8f1c686eadbed05262bce95504ffa7 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/jira_connect')
4 files changed, 15 insertions, 53 deletions
diff --git a/app/assets/javascripts/jira_connect/components/app.vue b/app/assets/javascripts/jira_connect/components/app.vue index ffc95130783..ff4dfb23687 100644 --- a/app/assets/javascripts/jira_connect/components/app.vue +++ b/app/assets/javascripts/jira_connect/components/app.vue @@ -3,7 +3,6 @@ import { GlAlert, GlButton, GlLink, GlModal, GlModalDirective, GlSprintf } from import { mapState, mapMutations } from 'vuex'; import { retrieveAlert, getLocation } from '~/jira_connect/utils'; import { __ } from '~/locale'; -import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { SET_ALERT } from '../store/mutation_types'; import GroupsList from './groups_list.vue'; import SubscriptionsList from './subscriptions_list.vue'; @@ -22,7 +21,6 @@ export default { directives: { GlModalDirective, }, - mixins: [glFeatureFlagsMixin()], inject: { usersPath: { default: '', diff --git a/app/assets/javascripts/jira_connect/components/group_item_name.vue b/app/assets/javascripts/jira_connect/components/group_item_name.vue index c5ce24b3de3..e6c172dae9e 100644 --- a/app/assets/javascripts/jira_connect/components/group_item_name.vue +++ b/app/assets/javascripts/jira_connect/components/group_item_name.vue @@ -23,13 +23,10 @@ export default { </div> <div> - <span - class="gl-mr-3 gl-text-gray-900! gl-font-weight-bold" - data-testid="group-list-item-name" - > + <span class="gl-mr-3 gl-text-gray-900! gl-font-weight-bold"> {{ group.full_name }} </span> - <div v-if="group.description" data-testid="group-list-item-description"> + <div v-if="group.description"> <p class="gl-mt-2! gl-mb-0 gl-text-gray-600" v-text="group.description"></p> </div> </div> diff --git a/app/assets/javascripts/jira_connect/components/subscriptions_list.vue b/app/assets/javascripts/jira_connect/components/subscriptions_list.vue index 4b0f9acd6ca..a606e2edbbb 100644 --- a/app/assets/javascripts/jira_connect/components/subscriptions_list.vue +++ b/app/assets/javascripts/jira_connect/components/subscriptions_list.vue @@ -1,10 +1,12 @@ <script> import { GlButton, GlEmptyState, GlTable } from '@gitlab/ui'; import { isEmpty } from 'lodash'; +import { mapMutations } from 'vuex'; import { removeSubscription } from '~/jira_connect/api'; import { reloadPage } from '~/jira_connect/utils'; import { __, s__ } from '~/locale'; import TimeagoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; +import { SET_ALERT } from '../store/mutation_types'; import GroupItemName from './group_item_name.vue'; export default { @@ -46,8 +48,12 @@ export default { emptyDescription: s__( 'Integrations|Namespaces are the GitLab groups and subgroups you link to this Jira instance.', ), + unlinkError: s__('Integrations|Failed to unlink namespace. Please try again.'), }, methods: { + ...mapMutations({ + setAlert: SET_ALERT, + }), isEmpty, isLoadingItem(item) { return this.loadingItem === item; @@ -62,7 +68,11 @@ export default { .then(() => { reloadPage(); }) - .catch(() => { + .catch((error) => { + this.setAlert({ + message: error?.response?.data?.error || this.$options.i18n.unlinkError, + variant: 'danger', + }); this.loadingItem = null; }); }, @@ -89,6 +99,7 @@ export default { :class="unlinkBtnClass(item)" category="secondary" :loading="isLoadingItem(item)" + :disabled="!isEmpty(loadingItem)" @click.prevent="onClick(item)" >{{ __('Unlink') }}</gl-button > diff --git a/app/assets/javascripts/jira_connect/index.js b/app/assets/javascripts/jira_connect/index.js index 24828e2f1d1..dc8bb3b0c77 100644 --- a/app/assets/javascripts/jira_connect/index.js +++ b/app/assets/javascripts/jira_connect/index.js @@ -1,22 +1,14 @@ import setConfigs from '@gitlab/ui/dist/config'; import Vue from 'vue'; -import { addSubscription, removeSubscription } from '~/jira_connect/api'; -import { getLocation, reloadPage, sizeToParent } from '~/jira_connect/utils'; +import { getLocation, sizeToParent } from '~/jira_connect/utils'; import GlFeatureFlagsPlugin from '~/vue_shared/gl_feature_flags_plugin'; import Translate from '~/vue_shared/translate'; import JiraConnectApp from './components/app.vue'; import createStore from './store'; -import { SET_ALERT } from './store/mutation_types'; const store = createStore(); -const reqFailed = (res, fallbackErrorMessage) => { - const { error = fallbackErrorMessage } = res || {}; - - store.commit(SET_ALERT, { message: error, variant: 'danger' }); -}; - const updateSignInLinks = async () => { const location = await getLocation(); Array.from(document.querySelectorAll('.js-jira-connect-sign-in')).forEach((el) => { @@ -25,43 +17,7 @@ const updateSignInLinks = async () => { }); }; -const initRemoveSubscriptionButtonHandlers = () => { - Array.from(document.querySelectorAll('.js-jira-connect-remove-subscription')).forEach((el) => { - el.addEventListener('click', function onRemoveSubscriptionClick(e) { - e.preventDefault(); - - const removePath = e.target.getAttribute('href'); - removeSubscription(removePath) - .then(reloadPage) - .catch((err) => - reqFailed(err.response.data, 'Failed to remove namespace. Please try again.'), - ); - }); - }); -}; - -const initAddSubscriptionFormHandler = () => { - const formEl = document.querySelector('#add-subscription-form'); - if (!formEl) { - return; - } - - formEl.addEventListener('submit', function onAddSubscriptionForm(e) { - e.preventDefault(); - - const addPath = e.target.getAttribute('action'); - const namespace = (e.target.querySelector('#namespace-input') || {}).value; - - addSubscription(addPath, namespace) - .then(reloadPage) - .catch((err) => reqFailed(err.response.data, 'Failed to add namespace. Please try again.')); - }); -}; - export async function initJiraConnect() { - initAddSubscriptionFormHandler(); - initRemoveSubscriptionButtonHandlers(); - await updateSignInLinks(); const el = document.querySelector('.js-jira-connect-app'); |