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
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-07-21 18:09:12 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-07-21 18:09:12 +0300
commita09c6d7e91de9abab7e2ea8dffce1cbb89bf95d8 (patch)
treebab46ee809784804b92228a0b860f3837b050755 /app
parent32ac796097b0b8fbdbc22157307d1849a3e7b35c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/access_tokens/components/projects_field.vue69
-rw-r--r--app/assets/javascripts/access_tokens/components/projects_token_selector.vue156
-rw-r--r--app/assets/javascripts/access_tokens/index.js57
-rw-r--r--app/assets/javascripts/editor/graphql/typedefs.graphql14
-rw-r--r--app/assets/javascripts/environments/graphql/queries/environment_app.query.graphql1
-rw-r--r--app/assets/javascripts/graphql_shared/fragments/blobviewer.fragment.graphql7
-rw-r--r--app/assets/javascripts/graphql_shared/fragments/iteration.fragment.graphql4
-rw-r--r--app/assets/javascripts/pages/profiles/personal_access_tokens/index.js2
-rw-r--r--app/assets/javascripts/pipeline_editor/graphql/mutations/client/lint_ci.mutation.graphql1
-rw-r--r--app/assets/javascripts/snippets/fragments/snippet_base.fragment.graphql35
-rw-r--r--app/assets/javascripts/work_items/graphql/typedefs.graphql19
-rw-r--r--app/controllers/admin/broadcast_messages_controller.rb1
-rw-r--r--app/controllers/profiles/personal_access_tokens_controller.rb4
-rw-r--r--app/services/issues/clone_service.rb1
-rw-r--r--app/services/work_items/widgets/hierarchy_service/base_service.rb4
-rw-r--r--app/views/shared/access_tokens/_form.html.haml4
16 files changed, 31 insertions, 348 deletions
diff --git a/app/assets/javascripts/access_tokens/components/projects_field.vue b/app/assets/javascripts/access_tokens/components/projects_field.vue
deleted file mode 100644
index 066cea5e90c..00000000000
--- a/app/assets/javascripts/access_tokens/components/projects_field.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-<script>
-import { GlFormGroup, GlFormRadio, GlFormText } from '@gitlab/ui';
-import ProjectsTokenSelector from './projects_token_selector.vue';
-
-export default {
- name: 'ProjectsField',
- ALL_PROJECTS: 'ALL_PROJECTS',
- SELECTED_PROJECTS: 'SELECTED_PROJECTS',
- components: { GlFormGroup, GlFormRadio, GlFormText, ProjectsTokenSelector },
- props: {
- inputAttrs: {
- type: Object,
- required: true,
- },
- },
- data() {
- return {
- selectedRadio: !this.inputAttrs.value
- ? this.$options.ALL_PROJECTS
- : this.$options.SELECTED_PROJECTS,
- selectedProjects: [],
- };
- },
- computed: {
- allProjectsRadioSelected() {
- return this.selectedRadio === this.$options.ALL_PROJECTS;
- },
- hiddenInputValue() {
- return this.allProjectsRadioSelected
- ? null
- : this.selectedProjects.map((project) => project.id).join(',');
- },
- initialProjectIds() {
- if (!this.inputAttrs.value) {
- return [];
- }
-
- return this.inputAttrs.value.split(',');
- },
- },
- methods: {
- handleTokenSelectorFocus() {
- this.selectedRadio = this.$options.SELECTED_PROJECTS;
- },
- },
-};
-</script>
-
-<template>
- <div>
- <gl-form-group :label="__('Projects')" label-class="gl-pb-0!">
- <gl-form-text class="gl-pb-3">{{
- __('Set access permissions for this token.')
- }}</gl-form-text>
- <gl-form-radio v-model="selectedRadio" :value="$options.ALL_PROJECTS">{{
- __('All projects')
- }}</gl-form-radio>
- <gl-form-radio v-model="selectedRadio" :value="$options.SELECTED_PROJECTS">{{
- __('Selected projects')
- }}</gl-form-radio>
- <input :id="inputAttrs.id" type="hidden" :name="inputAttrs.name" :value="hiddenInputValue" />
- <projects-token-selector
- v-model="selectedProjects"
- :initial-project-ids="initialProjectIds"
- @focus="handleTokenSelectorFocus"
- />
- </gl-form-group>
- </div>
-</template>
diff --git a/app/assets/javascripts/access_tokens/components/projects_token_selector.vue b/app/assets/javascripts/access_tokens/components/projects_token_selector.vue
deleted file mode 100644
index 4843c52fcbb..00000000000
--- a/app/assets/javascripts/access_tokens/components/projects_token_selector.vue
+++ /dev/null
@@ -1,156 +0,0 @@
-<script>
-import {
- GlTokenSelector,
- GlAvatar,
- GlAvatarLabeled,
- GlIntersectionObserver,
- GlLoadingIcon,
-} from '@gitlab/ui';
-import produce from 'immer';
-
-import { convertToGraphQLIds, convertNodeIdsFromGraphQLIds } from '~/graphql_shared/utils';
-
-import getProjectsQuery from '../graphql/queries/get_projects.query.graphql';
-
-const DEBOUNCE_DELAY = 250;
-const PROJECTS_PER_PAGE = 20;
-const GRAPHQL_ENTITY_TYPE = 'Project';
-
-export default {
- name: 'ProjectsTokenSelector',
- components: {
- GlTokenSelector,
- GlAvatar,
- GlAvatarLabeled,
- GlIntersectionObserver,
- GlLoadingIcon,
- },
- model: {
- prop: 'selectedProjects',
- },
- props: {
- selectedProjects: {
- type: Array,
- required: true,
- },
- initialProjectIds: {
- type: Array,
- required: true,
- },
- },
- apollo: {
- projects: {
- query: getProjectsQuery,
- debounce: DEBOUNCE_DELAY,
- variables() {
- return {
- search: this.searchQuery,
- after: null,
- first: PROJECTS_PER_PAGE,
- };
- },
- update({ projects }) {
- return {
- list: convertNodeIdsFromGraphQLIds(projects.nodes),
- pageInfo: projects.pageInfo,
- };
- },
- result() {
- this.isLoadingMoreProjects = false;
- this.isSearching = false;
- },
- },
- initialProjects: {
- query: getProjectsQuery,
- variables() {
- return {
- ids: convertToGraphQLIds(GRAPHQL_ENTITY_TYPE, this.initialProjectIds),
- };
- },
- manual: true,
- skip() {
- return !this.initialProjectIds.length;
- },
- result({ data: { projects } }) {
- this.$emit('input', convertNodeIdsFromGraphQLIds(projects.nodes));
- },
- },
- },
- data() {
- return {
- projects: {
- list: [],
- pageInfo: {},
- },
- searchQuery: '',
- isLoadingMoreProjects: false,
- isSearching: false,
- };
- },
- methods: {
- handleSearch(query) {
- this.isSearching = true;
- this.searchQuery = query;
- },
- loadMoreProjects() {
- this.isLoadingMoreProjects = true;
-
- this.$apollo.queries.projects.fetchMore({
- variables: {
- after: this.projects.pageInfo.endCursor,
- first: PROJECTS_PER_PAGE,
- },
- updateQuery(previousResult, { fetchMoreResult: { projects: newProjects } }) {
- const { projects: previousProjects } = previousResult;
-
- return produce(previousResult, (draftData) => {
- draftData.projects.nodes = [...previousProjects.nodes, ...newProjects.nodes];
- draftData.projects.pageInfo = newProjects.pageInfo;
- });
- },
- });
- },
- },
-};
-</script>
-
-<template>
- <div class="gl-relative">
- <gl-token-selector
- :selected-tokens="selectedProjects"
- :dropdown-items="projects.list"
- :loading="isSearching"
- :placeholder="__('Select projects')"
- menu-class="gl-w-full! gl-max-w-full!"
- @input="$emit('input', $event)"
- @focus="$emit('focus', $event)"
- @text-input="handleSearch"
- @keydown.enter.prevent
- >
- <template #token-content="{ token: project }">
- <gl-avatar
- :entity-id="project.id"
- :entity-name="project.name"
- :src="project.avatarUrl"
- :size="16"
- />
- {{ project.nameWithNamespace }}
- </template>
- <template #dropdown-item-content="{ dropdownItem: project }">
- <gl-avatar-labeled
- :entity-id="project.id"
- :entity-name="project.name"
- :size="32"
- :src="project.avatarUrl"
- :label="project.name"
- :sub-label="project.nameWithNamespace"
- />
- </template>
- <template #dropdown-footer>
- <gl-intersection-observer v-if="projects.pageInfo.hasNextPage" @appear="loadMoreProjects">
- <gl-loading-icon v-if="isLoadingMoreProjects" class="gl-mb-3" size="sm" />
- </gl-intersection-observer>
- </template>
- </gl-token-selector>
- </div>
-</template>
diff --git a/app/assets/javascripts/access_tokens/index.js b/app/assets/javascripts/access_tokens/index.js
index a7a03523e7f..9801aa08e28 100644
--- a/app/assets/javascripts/access_tokens/index.js
+++ b/app/assets/javascripts/access_tokens/index.js
@@ -1,6 +1,5 @@
import Vue from 'vue';
-import createFlash from '~/flash';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
import { parseRailsFormFields } from '~/lib/utils/forms';
import { __, sprintf } from '~/locale';
@@ -99,62 +98,6 @@ export const initNewAccessTokenApp = () => {
});
};
-export const initProjectsField = () => {
- const el = document.querySelector('.js-access-tokens-projects');
-
- if (!el) {
- return null;
- }
-
- const { projects: inputAttrs } = parseRailsFormFields(el);
-
- if (window.gon.features.personalAccessTokensScopedToProjects) {
- return new Promise((resolve) => {
- Promise.all([
- import('./components/projects_field.vue'),
- import('vue-apollo'),
- import('~/lib/graphql'),
- ])
- .then(
- ([
- { default: ProjectsField },
- { default: VueApollo },
- { default: createDefaultClient },
- ]) => {
- const apolloProvider = new VueApollo({
- defaultClient: createDefaultClient(),
- });
-
- Vue.use(VueApollo);
-
- resolve(
- new Vue({
- el,
- apolloProvider,
- render(h) {
- return h(ProjectsField, {
- props: {
- inputAttrs,
- },
- });
- },
- }),
- );
- },
- )
- .catch(() => {
- createFlash({
- message: __(
- 'An error occurred while loading the access tokens form, please try again.',
- ),
- });
- });
- });
- }
-
- return null;
-};
-
export const initTokensApp = () => {
const el = document.getElementById('js-tokens-app');
diff --git a/app/assets/javascripts/editor/graphql/typedefs.graphql b/app/assets/javascripts/editor/graphql/typedefs.graphql
index 2433ebf6c66..49beae033f1 100644
--- a/app/assets/javascripts/editor/graphql/typedefs.graphql
+++ b/app/assets/javascripts/editor/graphql/typedefs.graphql
@@ -12,12 +12,22 @@ type Items {
nodes: [Item]!
}
+input ItemInput {
+ id: ID!
+ label: String!
+ icon: String
+ selected: Boolean
+ group: Int!
+ category: String
+ selectedLabel: String
+}
+
extend type Query {
items: Items
}
extend type Mutation {
- updateToolbarItem(id: ID!, propsToUpdate: Item!): LocalErrors
+ updateToolbarItem(id: ID!, propsToUpdate: ItemInput!): LocalErrors
removeToolbarItems(ids: [ID!]): LocalErrors
- addToolbarItems(items: [Item]): LocalErrors
+ addToolbarItems(items: [ItemInput]): LocalErrors
}
diff --git a/app/assets/javascripts/environments/graphql/queries/environment_app.query.graphql b/app/assets/javascripts/environments/graphql/queries/environment_app.query.graphql
index 2c17c42dd6d..c3ab9cf7fca 100644
--- a/app/assets/javascripts/environments/graphql/queries/environment_app.query.graphql
+++ b/app/assets/javascripts/environments/graphql/queries/environment_app.query.graphql
@@ -4,6 +4,5 @@ query getEnvironmentApp($page: Int, $scope: String) {
stoppedCount
environments
reviewApp
- stoppedCount
}
}
diff --git a/app/assets/javascripts/graphql_shared/fragments/blobviewer.fragment.graphql b/app/assets/javascripts/graphql_shared/fragments/blobviewer.fragment.graphql
deleted file mode 100644
index b202ed12f80..00000000000
--- a/app/assets/javascripts/graphql_shared/fragments/blobviewer.fragment.graphql
+++ /dev/null
@@ -1,7 +0,0 @@
-fragment BlobViewer on SnippetBlobViewer {
- collapsed
- renderError
- tooLarge
- type
- fileType
-}
diff --git a/app/assets/javascripts/graphql_shared/fragments/iteration.fragment.graphql b/app/assets/javascripts/graphql_shared/fragments/iteration.fragment.graphql
deleted file mode 100644
index 78a368089a8..00000000000
--- a/app/assets/javascripts/graphql_shared/fragments/iteration.fragment.graphql
+++ /dev/null
@@ -1,4 +0,0 @@
-fragment Iteration on Iteration {
- id
- title
-}
diff --git a/app/assets/javascripts/pages/profiles/personal_access_tokens/index.js b/app/assets/javascripts/pages/profiles/personal_access_tokens/index.js
index 3fae9809e51..c520042c172 100644
--- a/app/assets/javascripts/pages/profiles/personal_access_tokens/index.js
+++ b/app/assets/javascripts/pages/profiles/personal_access_tokens/index.js
@@ -2,12 +2,10 @@ import {
initAccessTokenTableApp,
initExpiresAtField,
initNewAccessTokenApp,
- initProjectsField,
initTokensApp,
} from '~/access_tokens';
initAccessTokenTableApp();
initExpiresAtField();
initNewAccessTokenApp();
-initProjectsField();
initTokensApp();
diff --git a/app/assets/javascripts/pipeline_editor/graphql/mutations/client/lint_ci.mutation.graphql b/app/assets/javascripts/pipeline_editor/graphql/mutations/client/lint_ci.mutation.graphql
index 5091d63111f..2d42ebb6ac3 100644
--- a/app/assets/javascripts/pipeline_editor/graphql/mutations/client/lint_ci.mutation.graphql
+++ b/app/assets/javascripts/pipeline_editor/graphql/mutations/client/lint_ci.mutation.graphql
@@ -13,7 +13,6 @@ mutation lintCI($endpoint: String, $content: String, $dry: Boolean) {
only {
refs
}
- afterScript
stage
tags
when
diff --git a/app/assets/javascripts/snippets/fragments/snippet_base.fragment.graphql b/app/assets/javascripts/snippets/fragments/snippet_base.fragment.graphql
deleted file mode 100644
index d75b4011d1c..00000000000
--- a/app/assets/javascripts/snippets/fragments/snippet_base.fragment.graphql
+++ /dev/null
@@ -1,35 +0,0 @@
-#import '~/graphql_shared/fragments/blobviewer.fragment.graphql'
-
-fragment SnippetBase on Snippet {
- id
- title
- description
- descriptionHtml
- createdAt
- updatedAt
- visibilityLevel
- webUrl
- httpUrlToRepo
- sshUrlToRepo
- blobs {
- nodes {
- binary
- name
- path
- rawPath
- size
- externalStorage
- renderedAsText
- simpleViewer {
- ...BlobViewer
- }
- richViewer {
- ...BlobViewer
- }
- }
- }
- userPermissions {
- adminSnippet
- updateSnippet
- }
-}
diff --git a/app/assets/javascripts/work_items/graphql/typedefs.graphql b/app/assets/javascripts/work_items/graphql/typedefs.graphql
index 44a2999a72e..36ffba8a540 100644
--- a/app/assets/javascripts/work_items/graphql/typedefs.graphql
+++ b/app/assets/javascripts/work_items/graphql/typedefs.graphql
@@ -22,10 +22,25 @@ extend type WorkItem {
mockWidgets: [LocalWorkItemWidget]
}
+input LocalUserInput {
+ id: ID!
+ name: String
+ username: String
+ webUrl: String
+ avatarUrl: String
+}
+
+input LocalLabelInput {
+ id: ID!
+ title: String!
+ color: String
+ description: String
+}
+
input LocalUpdateWorkItemInput {
id: WorkItemID!
- assignees: [UserCore!]
- labels: [Label]
+ assignees: [LocalUserInput!]
+ labels: [LocalLabelInput]
}
type LocalWorkItemPayload {
diff --git a/app/controllers/admin/broadcast_messages_controller.rb b/app/controllers/admin/broadcast_messages_controller.rb
index bf573d45852..a53e832329f 100644
--- a/app/controllers/admin/broadcast_messages_controller.rb
+++ b/app/controllers/admin/broadcast_messages_controller.rb
@@ -58,7 +58,6 @@ class Admin::BroadcastMessagesController < Admin::ApplicationController
def broadcast_message_params
params.require(:broadcast_message).permit(%i(
- color
theme
ends_at
message
diff --git a/app/controllers/profiles/personal_access_tokens_controller.rb b/app/controllers/profiles/personal_access_tokens_controller.rb
index 1a8908e8571..a8d8e1e38a3 100644
--- a/app/controllers/profiles/personal_access_tokens_controller.rb
+++ b/app/controllers/profiles/personal_access_tokens_controller.rb
@@ -3,10 +3,6 @@
class Profiles::PersonalAccessTokensController < Profiles::ApplicationController
feature_category :authentication_and_authorization
- before_action do
- push_frontend_feature_flag(:personal_access_tokens_scoped_to_projects, current_user)
- end
-
def index
set_index_vars
scopes = params[:scopes].split(',').map(&:squish).select(&:present?).map(&:to_sym) unless params[:scopes].nil?
diff --git a/app/services/issues/clone_service.rb b/app/services/issues/clone_service.rb
index d054cf7827d..07dd9a98f89 100644
--- a/app/services/issues/clone_service.rb
+++ b/app/services/issues/clone_service.rb
@@ -41,7 +41,6 @@ module Issues
def update_new_entity
# we don't call `super` because we want to be able to decide whether or not to copy all comments over.
update_new_entity_description
- copy_award_emoji
if with_notes
copy_notes
diff --git a/app/services/work_items/widgets/hierarchy_service/base_service.rb b/app/services/work_items/widgets/hierarchy_service/base_service.rb
index 085d6c6b0e7..05625cb5240 100644
--- a/app/services/work_items/widgets/hierarchy_service/base_service.rb
+++ b/app/services/work_items/widgets/hierarchy_service/base_service.rb
@@ -15,7 +15,7 @@ module WorkItems
elsif params.key?(:children)
update_work_item_children(params.delete(:children))
else
- invalid_args_error
+ invalid_args_error(params)
end
end
@@ -64,7 +64,7 @@ module WorkItems
error(_('A Work Item can be a parent or a child, but not both.'))
end
- def invalid_args_error
+ def invalid_args_error(params)
error(_("One or more arguments are invalid: %{args}." % { args: params.keys.to_sentence } ))
end
diff --git a/app/views/shared/access_tokens/_form.html.haml b/app/views/shared/access_tokens/_form.html.haml
index 0f6fc860883..3c39c1d6b74 100644
--- a/app/views/shared/access_tokens/_form.html.haml
+++ b/app/views/shared/access_tokens/_form.html.haml
@@ -45,9 +45,5 @@
= link_to _("Learn more."), help_path, target: '_blank', rel: 'noopener noreferrer'
= render 'shared/tokens/scopes_form', prefix: prefix, token: token, scopes: scopes, f: f
- - if prefix == :personal_access_token && Feature.enabled?(:personal_access_tokens_scoped_to_projects, current_user)
- .js-access-tokens-projects
- %input{ type: 'hidden', name: 'personal_access_token[projects]', id: 'personal_access_token_projects', data: { js_name: 'projects' } }
-
.gl-mt-3
= f.submit _('Create %{type}') % { type: type }, class: 'gl-button btn btn-confirm', data: { qa_selector: 'create_token_button' }