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>2023-07-25 15:08:22 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-07-25 15:08:22 +0300
commit5540824ee0e41db48486e378f03051832f521da6 (patch)
tree95138ba07fb4adbc503353ac3e47d65d565d70eb /app/assets/javascripts/issues
parentacad0870f7fd0cfe163a9d3a248a4a3eb8ca343d (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.vue13
-rw-r--r--app/assets/javascripts/issues/list/utils.js34
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;
+ });
+}