diff options
Diffstat (limited to 'app/assets/javascripts/packages_and_registries/package_registry/components/functional/delete_package.vue')
-rw-r--r-- | app/assets/javascripts/packages_and_registries/package_registry/components/functional/delete_package.vue | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/functional/delete_package.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/functional/delete_package.vue new file mode 100644 index 00000000000..7a85fd3052e --- /dev/null +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/functional/delete_package.vue @@ -0,0 +1,62 @@ +<script> +import destroyPackageMutation from '~/packages_and_registries/package_registry/graphql/mutations/destroy_package.mutation.graphql'; +import createFlash from '~/flash'; +import { s__ } from '~/locale'; + +import { DELETE_PACKAGE_SUCCESS_MESSAGE } from '~/packages_and_registries/package_registry/constants'; + +export default { + props: { + refetchQueries: { + type: Array, + required: false, + default: null, + }, + showSuccessAlert: { + type: Boolean, + required: false, + default: false, + }, + }, + i18n: { + errorMessage: s__('PackageRegistry|Something went wrong while deleting the package.'), + successMessage: DELETE_PACKAGE_SUCCESS_MESSAGE, + }, + methods: { + async deletePackage(packageEntity) { + try { + this.$emit('start'); + const { data } = await this.$apollo.mutate({ + mutation: destroyPackageMutation, + variables: { + id: packageEntity.id, + }, + awaitRefetchQueries: Boolean(this.refetchQueries), + refetchQueries: this.refetchQueries, + }); + + if (data?.destroyPackage?.errors[0]) { + throw data.destroyPackage.errors[0]; + } + if (this.showSuccessAlert) { + createFlash({ + message: this.$options.i18n.successMessage, + type: 'success', + }); + } + } catch (error) { + createFlash({ + message: this.$options.i18n.errorMessage, + type: 'warning', + captureError: true, + error, + }); + } + this.$emit('end'); + }, + }, + render() { + return this.$scopedSlots.default({ deletePackage: this.deletePackage }); + }, +}; +</script> |