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>2021-08-12 12:09:05 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-08-12 12:09:05 +0300
commitdcb517514405d6f550cc077686889dbb34c37c75 (patch)
tree484a0dc16cbce6b5bb638d8a2e29131374ca1363 /app/assets/javascripts/import_entities
parentb684feb6c8dc322efb73d1e0473bcd3f37e08d34 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/import_entities')
-rw-r--r--app/assets/javascripts/import_entities/import_groups/components/import_table.vue24
-rw-r--r--app/assets/javascripts/import_entities/import_groups/components/import_table_row.vue46
-rw-r--r--app/assets/javascripts/import_entities/import_groups/constants.js5
-rw-r--r--app/assets/javascripts/import_entities/import_groups/graphql/client_factory.js68
-rw-r--r--app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_import_target.mutation.graphql13
-rw-r--r--app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_new_name.mutation.graphql8
-rw-r--r--app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_target_namespace.mutation.graphql8
-rw-r--r--app/assets/javascripts/import_entities/import_groups/graphql/queries/group_and_project.query.graphql (renamed from app/assets/javascripts/import_entities/import_groups/graphql/queries/groupAndProject.query.graphql)0
8 files changed, 95 insertions, 77 deletions
diff --git a/app/assets/javascripts/import_entities/import_groups/components/import_table.vue b/app/assets/javascripts/import_entities/import_groups/components/import_table.vue
index e9559f735d6..bcacf9a3bbc 100644
--- a/app/assets/javascripts/import_entities/import_groups/components/import_table.vue
+++ b/app/assets/javascripts/import_entities/import_groups/components/import_table.vue
@@ -16,8 +16,7 @@ import { s__, __, n__ } from '~/locale';
import PaginationLinks from '~/vue_shared/components/pagination_links.vue';
import { STATUSES } from '../../constants';
import importGroupsMutation from '../graphql/mutations/import_groups.mutation.graphql';
-import setNewNameMutation from '../graphql/mutations/set_new_name.mutation.graphql';
-import setTargetNamespaceMutation from '../graphql/mutations/set_target_namespace.mutation.graphql';
+import setImportTargetMutation from '../graphql/mutations/set_import_target.mutation.graphql';
import availableNamespacesQuery from '../graphql/queries/available_namespaces.query.graphql';
import bulkImportSourceGroupsQuery from '../graphql/queries/bulk_import_source_groups.query.graphql';
import ImportTableRow from './import_table_row.vue';
@@ -142,17 +141,10 @@ export default {
this.page = page;
},
- updateTargetNamespace(sourceGroupId, targetNamespace) {
+ updateImportTarget(sourceGroupId, targetNamespace, newName) {
this.$apollo.mutate({
- mutation: setTargetNamespaceMutation,
- variables: { sourceGroupId, targetNamespace },
- });
- },
-
- updateNewName(sourceGroupId, newName) {
- this.$apollo.mutate({
- mutation: setNewNameMutation,
- variables: { sourceGroupId, newName },
+ mutation: setImportTargetMutation,
+ variables: { sourceGroupId, targetNamespace, newName },
});
},
@@ -266,8 +258,12 @@ export default {
:available-namespaces="availableNamespaces"
:group-path-regex="groupPathRegex"
:group-url-error-message="groupUrlErrorMessage"
- @update-target-namespace="updateTargetNamespace(group.id, $event)"
- @update-new-name="updateNewName(group.id, $event)"
+ @update-target-namespace="
+ updateImportTarget(group.id, $event, group.import_target.new_name)
+ "
+ @update-new-name="
+ updateImportTarget(group.id, group.import_target.target_namespace, $event)
+ "
@import-group="importGroups([group.id])"
/>
</template>
diff --git a/app/assets/javascripts/import_entities/import_groups/components/import_table_row.vue b/app/assets/javascripts/import_entities/import_groups/components/import_table_row.vue
index 96c1dd21821..3dd780895a2 100644
--- a/app/assets/javascripts/import_entities/import_groups/components/import_table_row.vue
+++ b/app/assets/javascripts/import_entities/import_groups/components/import_table_row.vue
@@ -9,15 +9,9 @@ import {
GlFormInput,
} from '@gitlab/ui';
import { joinPaths } from '~/lib/utils/url_utility';
-import { s__ } from '~/locale';
import ImportGroupDropdown from '../../components/group_dropdown.vue';
import ImportStatus from '../../components/import_status.vue';
import { STATUSES } from '../../constants';
-import addValidationErrorMutation from '../graphql/mutations/add_validation_error.mutation.graphql';
-import removeValidationErrorMutation from '../graphql/mutations/remove_validation_error.mutation.graphql';
-import groupAndProjectQuery from '../graphql/queries/groupAndProject.query.graphql';
-
-const DEBOUNCE_INTERVAL = 300;
export default {
components: {
@@ -50,42 +44,6 @@ export default {
},
},
- apollo: {
- existingGroupAndProject: {
- query: groupAndProjectQuery,
- debounce: DEBOUNCE_INTERVAL,
- variables() {
- return {
- fullPath: this.fullPath,
- };
- },
- update({ existingGroup, existingProject }) {
- const variables = {
- field: 'new_name',
- sourceGroupId: this.group.id,
- };
-
- if (!existingGroup && !existingProject) {
- this.$apollo.mutate({
- mutation: removeValidationErrorMutation,
- variables,
- });
- } else {
- this.$apollo.mutate({
- mutation: addValidationErrorMutation,
- variables: {
- ...variables,
- message: this.$options.i18n.NAME_ALREADY_EXISTS,
- },
- });
- }
- },
- skip() {
- return !this.isNameValid || this.isAlreadyImported;
- },
- },
- },
-
computed: {
availableNamespaceNames() {
return this.availableNamespaces.map((ns) => ns.full_path);
@@ -123,10 +81,6 @@ export default {
return joinPaths(gon.relative_url_root || '/', this.fullPath);
},
},
-
- i18n: {
- NAME_ALREADY_EXISTS: s__('BulkImport|Name already exists.'),
- },
};
</script>
diff --git a/app/assets/javascripts/import_entities/import_groups/constants.js b/app/assets/javascripts/import_entities/import_groups/constants.js
new file mode 100644
index 00000000000..d920e87aac8
--- /dev/null
+++ b/app/assets/javascripts/import_entities/import_groups/constants.js
@@ -0,0 +1,5 @@
+import { s__ } from '~/locale';
+
+export const i18n = {
+ NAME_ALREADY_EXISTS: s__('BulkImport|Name already exists.'),
+};
diff --git a/app/assets/javascripts/import_entities/import_groups/graphql/client_factory.js b/app/assets/javascripts/import_entities/import_groups/graphql/client_factory.js
index 2cde3781a6a..c608aa164d1 100644
--- a/app/assets/javascripts/import_entities/import_groups/graphql/client_factory.js
+++ b/app/assets/javascripts/import_entities/import_groups/graphql/client_factory.js
@@ -4,11 +4,15 @@ import axios from '~/lib/utils/axios_utils';
import { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';
import { s__ } from '~/locale';
import { STATUSES } from '../../constants';
+import { i18n } from '../constants';
import bulkImportSourceGroupItemFragment from './fragments/bulk_import_source_group_item.fragment.graphql';
+import addValidationErrorMutation from './mutations/add_validation_error.mutation.graphql';
+import removeValidationErrorMutation from './mutations/remove_validation_error.mutation.graphql';
import setImportProgressMutation from './mutations/set_import_progress.mutation.graphql';
import updateImportStatusMutation from './mutations/update_import_status.mutation.graphql';
import availableNamespacesQuery from './queries/available_namespaces.query.graphql';
import bulkImportSourceGroupQuery from './queries/bulk_import_source_group.query.graphql';
+import groupAndProjectQuery from './queries/group_and_project.query.graphql';
import { SourceGroupsManager } from './services/source_groups_manager';
import { StatusPoller } from './services/status_poller';
import typeDefs from './typedefs.graphql';
@@ -46,6 +50,37 @@ function makeGroup(data) {
return result;
}
+async function checkImportTargetIsValid({ client, newName, targetNamespace, sourceGroupId }) {
+ const {
+ data: { existingGroup, existingProject },
+ } = await client.query({
+ query: groupAndProjectQuery,
+ variables: {
+ fullPath: `${targetNamespace}/${newName}`,
+ },
+ });
+
+ const variables = {
+ field: 'new_name',
+ sourceGroupId,
+ };
+
+ if (!existingGroup && !existingProject) {
+ client.mutate({
+ mutation: removeValidationErrorMutation,
+ variables,
+ });
+ } else {
+ client.mutate({
+ mutation: addValidationErrorMutation,
+ variables: {
+ ...variables,
+ message: i18n.NAME_ALREADY_EXISTS,
+ },
+ });
+ }
+}
+
const localProgressId = (id) => `not-started-${id}`;
export function createResolvers({ endpoints, sourceUrl, GroupsManager = SourceGroupsManager }) {
@@ -99,7 +134,7 @@ export function createResolvers({ endpoints, sourceUrl, GroupsManager = SourceGr
]) => {
const pagination = parseIntPagination(normalizeHeaders(headers));
- return {
+ const response = {
__typename: clientTypenames.BulkImportSourceGroupConnection,
nodes: data.importable_data.map((group) => {
const { jobId, importState: cachedImportState } =
@@ -123,6 +158,21 @@ export function createResolvers({ endpoints, sourceUrl, GroupsManager = SourceGr
...pagination,
},
};
+
+ setTimeout(() => {
+ response.nodes.forEach((group) => {
+ if (group.progress.status === STATUSES.NONE) {
+ checkImportTargetIsValid({
+ client,
+ newName: group.import_target.new_name,
+ targetNamespace: group.import_target.target_namespace,
+ sourceGroupId: group.id,
+ });
+ }
+ });
+ });
+
+ return response;
},
);
},
@@ -136,6 +186,22 @@ export function createResolvers({ endpoints, sourceUrl, GroupsManager = SourceGr
),
},
Mutation: {
+ setImportTarget(_, { targetNamespace, newName, sourceGroupId }, { client }) {
+ checkImportTargetIsValid({
+ client,
+ sourceGroupId,
+ targetNamespace,
+ newName,
+ });
+ return makeGroup({
+ id: sourceGroupId,
+ import_target: {
+ target_namespace: targetNamespace,
+ new_name: newName,
+ },
+ });
+ },
+
setTargetNamespace: (_, { targetNamespace, sourceGroupId }) =>
makeGroup({
id: sourceGroupId,
diff --git a/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_import_target.mutation.graphql b/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_import_target.mutation.graphql
new file mode 100644
index 00000000000..793b60ee378
--- /dev/null
+++ b/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_import_target.mutation.graphql
@@ -0,0 +1,13 @@
+mutation setImportTarget($newName: String!, $targetNamespace: String!, $sourceGroupId: String!) {
+ setImportTarget(
+ newName: $newName
+ targetNamespace: $targetNamespace
+ sourceGroupId: $sourceGroupId
+ ) @client {
+ id
+ import_target {
+ new_name
+ target_namespace
+ }
+ }
+}
diff --git a/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_new_name.mutation.graphql b/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_new_name.mutation.graphql
deleted file mode 100644
index 354bf2a5815..00000000000
--- a/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_new_name.mutation.graphql
+++ /dev/null
@@ -1,8 +0,0 @@
-mutation setNewName($newName: String!, $sourceGroupId: String!) {
- setNewName(newName: $newName, sourceGroupId: $sourceGroupId) @client {
- id
- import_target {
- new_name
- }
- }
-}
diff --git a/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_target_namespace.mutation.graphql b/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_target_namespace.mutation.graphql
deleted file mode 100644
index a0ef407f135..00000000000
--- a/app/assets/javascripts/import_entities/import_groups/graphql/mutations/set_target_namespace.mutation.graphql
+++ /dev/null
@@ -1,8 +0,0 @@
-mutation setTargetNamespace($targetNamespace: String!, $sourceGroupId: String!) {
- setTargetNamespace(targetNamespace: $targetNamespace, sourceGroupId: $sourceGroupId) @client {
- id
- import_target {
- target_namespace
- }
- }
-}
diff --git a/app/assets/javascripts/import_entities/import_groups/graphql/queries/groupAndProject.query.graphql b/app/assets/javascripts/import_entities/import_groups/graphql/queries/group_and_project.query.graphql
index d6124f84025..d6124f84025 100644
--- a/app/assets/javascripts/import_entities/import_groups/graphql/queries/groupAndProject.query.graphql
+++ b/app/assets/javascripts/import_entities/import_groups/graphql/queries/group_and_project.query.graphql