From 1615d2b3a0b94400195ea61d8b56ec653e23ad27 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Thu, 18 Jul 2024 22:14:34 -0600 Subject: [PATCH 1/5] Add My Reaction search token to Vue MR list app --- .../components/merge_requests_list_app.vue | 46 ++++++++++++++----- .../javascripts/merge_requests/list/index.js | 2 + .../queries/get_merge_requests.query.graphql | 2 + 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue index e77d011b98b676..308533e54dfe73 100644 --- a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue +++ b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue @@ -5,6 +5,7 @@ import { createAlert } from '~/alert'; import Api from '~/api'; import * as Sentry from '~/sentry/sentry_browser_wrapper'; import { STATUS_ALL, STATUS_CLOSED, STATUS_OPEN, STATUS_MERGED } from '~/issues/constants'; +import axios from '~/lib/utils/axios_utils'; import { fetchPolicies } from '~/lib/graphql'; import { isPositiveInteger } from '~/lib/utils/number_utils'; import { scrollUp } from '~/lib/utils/scroll_utils'; @@ -30,6 +31,8 @@ import { TOKEN_TYPE_REVIEWER, TOKEN_TITLE_MILESTONE, TOKEN_TYPE_MILESTONE, + TOKEN_TITLE_MY_REACTION, + TOKEN_TYPE_MY_REACTION, TOKEN_TITLE_LABEL, TOKEN_TYPE_LABEL, TOKEN_TITLE_RELEASE, @@ -70,6 +73,8 @@ const MilestoneToken = () => const LabelToken = () => import('~/vue_shared/components/filtered_search_bar/tokens/label_token.vue'); const ReleaseToken = () => import('./tokens/release_client_search_token.vue'); +const EmojiToken = () => + import('~/vue_shared/components/filtered_search_bar/tokens/emoji_token.vue'); export default { name: 'MergeRequestsListApp', @@ -83,6 +88,7 @@ export default { MergeRequestMoreActionsDropdown, }, inject: [ + 'autocompleteAwardEmojisPath', 'fullPath', 'hasAnyMergeRequests', 'hasScopedLabelsFeature', @@ -180,17 +186,7 @@ export default { }, searchTokens() { const preloadedUsers = []; - - if (gon.current_user_id) { - preloadedUsers.push({ - id: convertToGraphQLId(TYPENAME_USER, gon.current_user_id), - name: gon.current_user_fullname, - username: gon.current_username, - avatar_url: gon.current_user_avatar_url, - }); - } - - return [ + const tokens = [ { type: TOKEN_TYPE_ASSIGNEE, title: TOKEN_TITLE_ASSIGNEE, @@ -299,6 +295,31 @@ export default { releasesEndpoint: this.releasesEndpoint, }, ]; + + if (gon.current_user_id) { + preloadedUsers.push({ + id: convertToGraphQLId(TYPENAME_USER, gon.current_user_id), + name: gon.current_user_fullname, + username: gon.current_username, + avatar_url: gon.current_user_avatar_url, + }); + } + + if(this.isSignedIn){ + tokens.push( + { + type: TOKEN_TYPE_MY_REACTION, + title: TOKEN_TITLE_MY_REACTION, + icon: 'thumb-up', + token: EmojiToken, + unique: true, + fetchEmojis: this.fetchEmojis, + recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-my_reaction`, + } + ); + } + + return tokens; }, showPaginationControls() { return ( @@ -355,6 +376,9 @@ export default { }); }); }, + fetchEmojis(search) { + return axios.get(this.autocompleteAwardEmojisPath); + }, fetchLabelsWithFetchPolicy(search, fetchPolicy = fetchPolicies.CACHE_FIRST) { return this.$apollo .query({ diff --git a/app/assets/javascripts/merge_requests/list/index.js b/app/assets/javascripts/merge_requests/list/index.js index b702b99429db73..71804416078078 100644 --- a/app/assets/javascripts/merge_requests/list/index.js +++ b/app/assets/javascripts/merge_requests/list/index.js @@ -17,6 +17,7 @@ export async function mountMergeRequestListsApp() { Vue.use(VueRouter); const { + autocompleteAwardEmojisPath, fullPath, hasAnyMergeRequests, hasScopedLabelsFeature, @@ -46,6 +47,7 @@ export async function mountMergeRequestListsApp() { }), provide: { fullPath, + autocompleteAwardEmojisPath, hasAnyMergeRequests: parseBoolean(hasAnyMergeRequests), hasScopedLabelsFeature: parseBoolean(hasScopedLabelsFeature), initialSort, diff --git a/app/assets/javascripts/merge_requests/list/queries/get_merge_requests.query.graphql b/app/assets/javascripts/merge_requests/list/queries/get_merge_requests.query.graphql index 3af02862e76061..037b242aa51b3c 100644 --- a/app/assets/javascripts/merge_requests/list/queries/get_merge_requests.query.graphql +++ b/app/assets/javascripts/merge_requests/list/queries/get_merge_requests.query.graphql @@ -17,6 +17,7 @@ query getMergeRequests( $releaseTag: String $milestoneTitle: String $milestoneWildcardId: MilestoneWildcardId + $myReactionEmoji: String $sourceBranches: [String!] $targetBranches: [String!] $not: MergeRequestsResolverNegatedParams @@ -40,6 +41,7 @@ query getMergeRequests( releaseTag: $releaseTag milestoneTitle: $milestoneTitle milestoneWildcardId: $milestoneWildcardId + myReactionEmoji: $myReactionEmoji sourceBranches: $sourceBranches targetBranches: $targetBranches not: $not -- GitLab From 34da3ad449e08c02317d50fe4c6b64daa45e348d Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Thu, 25 Jul 2024 16:06:33 -0600 Subject: [PATCH 2/5] Add tests for My Reaction filter token --- .../list/components/merge_requests_list_app_spec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js b/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js index 745c6fe250dc38..cf3c8695e95f7f 100644 --- a/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js +++ b/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js @@ -13,6 +13,7 @@ import { TOKEN_TYPE_DRAFT, TOKEN_TYPE_LABEL, TOKEN_TYPE_MILESTONE, + TOKEN_TYPE_MY_REACTION, TOKEN_TYPE_SOURCE_BRANCH, TOKEN_TYPE_TARGET_BRANCH, TOKEN_TYPE_ASSIGNEE, @@ -132,6 +133,7 @@ describe('Merge requests list app', () => { { type: TOKEN_TYPE_AUTHOR, preloadedUsers: [] }, { type: TOKEN_TYPE_DRAFT }, { type: TOKEN_TYPE_MILESTONE }, + { type: TOKEN_TYPE_MY_REACTION }, { type: TOKEN_TYPE_TARGET_BRANCH }, { type: TOKEN_TYPE_SOURCE_BRANCH }, { type: TOKEN_TYPE_LABEL }, @@ -147,6 +149,7 @@ describe('Merge requests list app', () => { draft: 'yes', 'label_name[]': 'fluff', milestone_title: 'milestone', + my_reaction_emoji: '🔥', 'target_branches[]': 'branch-a', 'source_branches[]': 'branch-b', }; @@ -181,6 +184,7 @@ describe('Merge requests list app', () => { { type: TOKEN_TYPE_AUTHOR, preloadedUsers }, { type: TOKEN_TYPE_DRAFT }, { type: TOKEN_TYPE_MILESTONE }, + { type: TOKEN_TYPE_MY_REACTION }, { type: TOKEN_TYPE_TARGET_BRANCH }, { type: TOKEN_TYPE_SOURCE_BRANCH }, { type: TOKEN_TYPE_LABEL }, @@ -195,6 +199,7 @@ describe('Merge requests list app', () => { { type: TOKEN_TYPE_DRAFT }, { type: TOKEN_TYPE_LABEL }, { type: TOKEN_TYPE_MILESTONE }, + { type: TOKEN_TYPE_MY_REACTION }, { type: TOKEN_TYPE_TARGET_BRANCH }, { type: TOKEN_TYPE_SOURCE_BRANCH }, ]); -- GitLab From 58ffa2c615760312c6bcb1cc6ec4d676e0db6f8e Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Thu, 25 Jul 2024 16:20:52 -0600 Subject: [PATCH 3/5] Fix tests for My Reaction filter token --- .../list/components/merge_requests_list_app_spec.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js b/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js index cf3c8695e95f7f..5802462f258c9c 100644 --- a/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js +++ b/spec/frontend/merge_requests/list/components/merge_requests_list_app_spec.js @@ -52,6 +52,7 @@ function createComponent({ provide = {} } = {}) { wrapper = shallowMountExtended(MergeRequestsListApp, { provide: { + autocompleteAwardEmojisPath: 'pathy/pathface', fullPath: 'gitlab-org/gitlab', hasAnyMergeRequests: true, hasScopedLabelsFeature: false, @@ -133,11 +134,11 @@ describe('Merge requests list app', () => { { type: TOKEN_TYPE_AUTHOR, preloadedUsers: [] }, { type: TOKEN_TYPE_DRAFT }, { type: TOKEN_TYPE_MILESTONE }, - { type: TOKEN_TYPE_MY_REACTION }, { type: TOKEN_TYPE_TARGET_BRANCH }, { type: TOKEN_TYPE_SOURCE_BRANCH }, { type: TOKEN_TYPE_LABEL }, { type: TOKEN_TYPE_RELEASE }, + { type: TOKEN_TYPE_MY_REACTION }, ]); }); }); @@ -184,11 +185,11 @@ describe('Merge requests list app', () => { { type: TOKEN_TYPE_AUTHOR, preloadedUsers }, { type: TOKEN_TYPE_DRAFT }, { type: TOKEN_TYPE_MILESTONE }, - { type: TOKEN_TYPE_MY_REACTION }, { type: TOKEN_TYPE_TARGET_BRANCH }, { type: TOKEN_TYPE_SOURCE_BRANCH }, { type: TOKEN_TYPE_LABEL }, { type: TOKEN_TYPE_RELEASE }, + { type: TOKEN_TYPE_MY_REACTION }, ]); }); -- GitLab From 6be2de105516d6517141661020dbc82247f8ea76 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Wed, 21 Aug 2024 11:41:16 -0600 Subject: [PATCH 4/5] Update My Reaction to be not-able ...Also runs Prettier --- .../components/merge_requests_list_app.vue | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue index 308533e54dfe73..9098556c785e6b 100644 --- a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue +++ b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue @@ -305,18 +305,17 @@ export default { }); } - if(this.isSignedIn){ - tokens.push( - { - type: TOKEN_TYPE_MY_REACTION, - title: TOKEN_TITLE_MY_REACTION, - icon: 'thumb-up', - token: EmojiToken, - unique: true, - fetchEmojis: this.fetchEmojis, - recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-my_reaction`, - } - ); + if (this.isSignedIn) { + tokens.push({ + type: TOKEN_TYPE_MY_REACTION, + title: TOKEN_TITLE_MY_REACTION, + icon: 'thumb-up', + token: EmojiToken, + operators: OPERATORS_IS_NOT, + unique: true, + fetchEmojis: this.fetchEmojis, + recentSuggestionsStorageKey: `${this.fullPath}-merge_requests-recent-tokens-my_reaction`, + }); } return tokens; -- GitLab From 3d9065bcefad349771a77f23be30c9f7b45bcf90 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Wed, 21 Aug 2024 11:58:07 -0600 Subject: [PATCH 5/5] Remove unused parameter for emoji search --- .../merge_requests/list/components/merge_requests_list_app.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue index 9098556c785e6b..65cfdb79a9eadf 100644 --- a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue +++ b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue @@ -375,7 +375,7 @@ export default { }); }); }, - fetchEmojis(search) { + fetchEmojis() { return axios.get(this.autocompleteAwardEmojisPath); }, fetchLabelsWithFetchPolicy(search, fetchPolicy = fetchPolicies.CACHE_FIRST) { -- GitLab