diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-10 00:09:12 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-10 00:09:12 +0300 |
commit | d183d2d76bcc25f983c0836805c712af096bcc2f (patch) | |
tree | 982987f91e1cf268dbad55e51c4ea57292abbbd6 /app/assets/javascripts/import_entities | |
parent | 453634293e24164ffaa5cd708e47a1cebc07bcd3 (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.vue | 21 | ||||
-rw-r--r-- | app/assets/javascripts/import_entities/import_groups/constants.js | 3 |
2 files changed, 18 insertions, 6 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 68e255e14b9..d686522c748 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 @@ -17,6 +17,7 @@ import { import { debounce } from 'lodash'; import { createAlert } from '~/flash'; import { s__, __, n__, sprintf } from '~/locale'; +import { HTTP_STATUS_TOO_MANY_REQUESTS } from '~/lib/utils/http_status'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import PaginationBar from '~/vue_shared/components/pagination_bar/pagination_bar.vue'; import HelpPopover from '~/vue_shared/components/help_popover.vue'; @@ -181,7 +182,7 @@ export default { const status = this.getStatus(group); const flags = { - isInvalid: importTarget.validationErrors?.length > 0, + isInvalid: (importTarget.validationErrors ?? []).filter((e) => !e.nonBlocking).length > 0, isAvailableForImport: isAvailableForImport(group) && status !== STATUSES.SCHEDULING, isFinished: isFinished(group), }; @@ -376,11 +377,19 @@ export default { variables: { importRequests }, }); } catch (error) { - createAlert({ - message: i18n.ERROR_IMPORT, - captureError: true, - error, - }); + if (error.networkError?.response?.status === HTTP_STATUS_TOO_MANY_REQUESTS) { + newPendingGroupsIds.forEach((id) => { + this.importTargets[id].validationErrors = [ + { field: NEW_NAME_FIELD, message: i18n.ERROR_TOO_MANY_REQUESTS, nonBlocking: true }, + ]; + }); + } else { + createAlert({ + message: i18n.ERROR_IMPORT, + captureError: true, + error, + }); + } } finally { this.pendingGroupsIds = this.pendingGroupsIds.filter( (id) => !newPendingGroupsIds.includes(id), diff --git a/app/assets/javascripts/import_entities/import_groups/constants.js b/app/assets/javascripts/import_entities/import_groups/constants.js index 7e532dfec05..60938272d11 100644 --- a/app/assets/javascripts/import_entities/import_groups/constants.js +++ b/app/assets/javascripts/import_entities/import_groups/constants.js @@ -11,6 +11,9 @@ export const i18n = { ), ERROR_IMPORT: s__('BulkImport|Importing the group failed.'), ERROR_IMPORT_COMPLETED: s__('BulkImport|Import is finished. Pick another name for re-import'), + ERROR_TOO_MANY_REQUESTS: s__( + 'Bulkmport|Over six imports in one minute were attempted. Wait at least one minute and try again.', + ), NO_GROUPS_FOUND: s__('BulkImport|No groups found'), OWNER: __('Owner'), |