diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-07-25 15:08:22 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-07-25 15:08:22 +0300 |
commit | 5540824ee0e41db48486e378f03051832f521da6 (patch) | |
tree | 95138ba07fb4adbc503353ac3e47d65d565d70eb /app/assets/javascripts/issues | |
parent | acad0870f7fd0cfe163a9d3a248a4a3eb8ca343d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/issues')
-rw-r--r-- | app/assets/javascripts/issues/list/components/issues_list_app.vue | 13 | ||||
-rw-r--r-- | app/assets/javascripts/issues/list/utils.js | 34 |
2 files changed, 34 insertions, 13 deletions
diff --git a/app/assets/javascripts/issues/list/components/issues_list_app.vue b/app/assets/javascripts/issues/list/components/issues_list_app.vue index 9372618fb2a..db3008c17a4 100644 --- a/app/assets/javascripts/issues/list/components/issues_list_app.vue +++ b/app/assets/javascripts/issues/list/components/issues_list_app.vue @@ -106,6 +106,7 @@ import { getSortOptions, isSortKey, mapWorkItemWidgetsToIssueFields, + updateUpvotesCount, } from '../utils'; import { hasNewIssueDropdown } from '../has_new_issue_dropdown_mixin'; import EmptyStateWithAnyIssues from './empty_state_with_any_issues.vue'; @@ -885,6 +886,17 @@ export default { Sentry.captureException(error); }); }, + updateIssuableEmojis(workItem) { + const client = this.$apollo.provider.clients.defaultClient; + const issuesList = client.readQuery({ + query: getIssuesQuery, + variables: this.queryVariables, + }); + + const data = updateUpvotesCount(issuesList, workItem); + + client.writeQuery({ query: getIssuesQuery, variables: this.queryVariables, data }); + }, }, }; </script> @@ -908,6 +920,7 @@ export default { :key="activeIssuable.iid" :work-item-iid="activeIssuable.iid" @work-item-updated="updateIssuablesCache" + @work-item-emoji-updated="updateIssuableEmojis" @addChild="refetchIssuables" @deleteWorkItem="deleteIssuable" @promotedToObjective="promoteToObjective" diff --git a/app/assets/javascripts/issues/list/utils.js b/app/assets/javascripts/issues/list/utils.js index 8859021b16c..ad88182da1d 100644 --- a/app/assets/javascripts/issues/list/utils.js +++ b/app/assets/javascripts/issues/list/utils.js @@ -364,19 +364,6 @@ export function mapWorkItemWidgetsToIssueFields(issuesList, workItem) { activeItem[property] = { __persist: true, ...currentWidget[property] }; return; } - - // handling emojis - if (property === WORK_ITEM_TO_ISSUE_MAP[WIDGET_TYPE_AWARD_EMOJI]) { - const upvotesCount = - currentWidget[property].nodes.filter((emoji) => emoji.name === EMOJI_THUMBSUP)?.length ?? - 0; - const downvotesCount = - currentWidget[property].nodes.filter((emoji) => emoji.name === EMOJI_THUMBSDOWN) - ?.length ?? 0; - activeItem.upvotes = upvotesCount; - activeItem.downvotes = downvotesCount; - return; - } activeItem[property] = currentWidget[property]; }); @@ -384,3 +371,24 @@ export function mapWorkItemWidgetsToIssueFields(issuesList, workItem) { activeItem.confidential = workItem.confidential; }); } + +export function updateUpvotesCount(issuesList, workItem) { + const type = WIDGET_TYPE_AWARD_EMOJI; + const property = WORK_ITEM_TO_ISSUE_MAP[type]; + + return produce(issuesList, (draftData) => { + const activeItem = draftData.project.issues.nodes.find((issue) => issue.iid === workItem.iid); + + const currentWidget = findWidget(type, workItem); + if (!currentWidget) { + return; + } + + const upvotesCount = + currentWidget[property].nodes.filter((emoji) => emoji.name === EMOJI_THUMBSUP)?.length ?? 0; + const downvotesCount = + currentWidget[property].nodes.filter((emoji) => emoji.name === EMOJI_THUMBSDOWN)?.length ?? 0; + activeItem.upvotes = upvotesCount; + activeItem.downvotes = downvotesCount; + }); +} |