diff --git a/web/src/components/DiffViewer/DiffViewerUtils.tsx b/web/src/components/DiffViewer/DiffViewerUtils.tsx index 8aeedcea0..dd8a59526 100644 --- a/web/src/components/DiffViewer/DiffViewerUtils.tsx +++ b/web/src/components/DiffViewer/DiffViewerUtils.tsx @@ -36,7 +36,9 @@ export enum CommentType { BRANCH_DELETE = 'branch-delete', BRANCH_RESTORE = 'branch-restore', STATE_CHANGE = 'state-change', - LABEL_MODIFY = 'label-modify' + LABEL_MODIFY = 'label-modify', + REVIEWER_ADD = 'reviewer-add', + REVIEWER_DELETE = 'reviewer-delete' } export enum LabelActivity { @@ -45,6 +47,12 @@ export enum LabelActivity { RE_ASSIGN = 'reassign' } +export enum ReviewerAddActivity { + REQUESTED = 'requested', + ASSIGNED = 'assigned', + SELF_ASSIGNED = 'self_assigned' +} + /** * @deprecated */ diff --git a/web/src/framework/strings/stringTypes.ts b/web/src/framework/strings/stringTypes.ts index 99de6df2b..470371068 100644 --- a/web/src/framework/strings/stringTypes.ts +++ b/web/src/framework/strings/stringTypes.ts @@ -851,6 +851,11 @@ export interface StringsMap { prGenSummary: string prHasNoConflicts: string prMustSelectSourceAndTargetBranches: string + 'prReview.assigned': string + 'prReview.removed': string + 'prReview.requested': string + 'prReview.selfAssigned': string + 'prReview.selfRemoved': string prSourceAndTargetMustBeDifferent: string 'prState.draftDesc': string 'prState.draftHeading': string diff --git a/web/src/i18n/strings.en.yaml b/web/src/i18n/strings.en.yaml index 8b9b46b48..c619562d1 100644 --- a/web/src/i18n/strings.en.yaml +++ b/web/src/i18n/strings.en.yaml @@ -367,6 +367,12 @@ prChecks: killed: '{count}/{total} {count|1:check,checks} killed.' notFound: No pipelines or external checks found for this repository. viewExternal: View Details +prReview: + assigned: '{author} assigned {reviewer} as a reviewer' + requested: '{author} requested a review from {reviewer}' + selfAssigned: '{reviewer} self-requested a review' + removed: '{author} removed the request for review from {reviewer}' + selfRemoved: '{author} removed their request for review' webhookListingContent: 'create,delete,deployment ...' general: 'General' webhooks: 'Webhooks' diff --git a/web/src/pages/PullRequest/Conversation/SystemComment.tsx b/web/src/pages/PullRequest/Conversation/SystemComment.tsx index 6ab24e551..8255b88bf 100644 --- a/web/src/pages/PullRequest/Conversation/SystemComment.tsx +++ b/web/src/pages/PullRequest/Conversation/SystemComment.tsx @@ -19,13 +19,13 @@ import { Avatar, Container, Layout, StringSubstitute, Text } from '@harnessio/ui import { Icon, IconName } from '@harnessio/icons' import { Color, FontVariation } from '@harnessio/design-system' import { defaultTo } from 'lodash-es' -import { Case, Match } from 'react-jsx-match' +import { Case, Falsy, Match, Truthy } from 'react-jsx-match' import { CodeIcon, GitInfoProps, MergeStrategy } from 'utils/GitUtils' import { useStrings } from 'framework/strings' import type { TypesPullReqActivity } from 'services/code' import type { CommentItem } from 'components/CommentBox/CommentBox' import { PullRequestSection } from 'utils/Utils' -import { CommentType, LabelActivity } from 'components/DiffViewer/DiffViewerUtils' +import { CommentType, LabelActivity, ReviewerAddActivity } from 'components/DiffViewer/DiffViewerUtils' import { useAppContext } from 'AppContext' import { CommitActions } from 'components/CommitActions/CommitActions' import { PipeSeparator } from 'components/PipeSeparator/PipeSeparator' @@ -44,6 +44,10 @@ interface MergePayload { merge_method: string rules_bypassed: boolean } + +interface ReviewerAddActivityPayload { + reviewer_type: ReviewerAddActivity +} //ToDo : update all comment options with the correct payload type and remove Unknown export const SystemComment: React.FC = ({ pullReqMetadata, commentItems, repoMetadataPath }) => { const { getString } = useStrings() @@ -424,6 +428,99 @@ export const SystemComment: React.FC = ({ pullReqMetadata, c ) } + case CommentType.REVIEWER_ADD: { + const mentionId = payload?.metadata?.mentions?.ids?.[0] ?? 0 + const mentionDisplayName = payload?.mentions?.[mentionId]?.display_name ?? '' + return ( + + + + + + + {payload?.author?.display_name}, + reviewer: {mentionDisplayName} + }} + /> + + + {payload?.author?.display_name}, + reviewer: {mentionDisplayName} + }} + /> + + + {mentionDisplayName} + }} + /> + + + + + + + + + ) + } + + case CommentType.REVIEWER_DELETE: { + const mentionId = payload?.metadata?.mentions?.ids?.[0] ?? 0 + const mentionDisplayName = payload?.mentions?.[mentionId]?.display_name ?? '' + return ( + + + + + + + {payload?.author?.display_name} + }} + /> + + + {payload?.author?.display_name}, + reviewer: {mentionDisplayName} + }} + /> + + + + + + + + + ) + } + default: { // eslint-disable-next-line no-console console.warn('Unable to render system type activity', commentItems) diff --git a/web/src/services/code/index.tsx b/web/src/services/code/index.tsx index d0524c1a1..8ea7898b2 100644 --- a/web/src/services/code/index.tsx +++ b/web/src/services/code/index.tsx @@ -135,6 +135,7 @@ export type EnumPullReqActivityType = | 'label-modify' | 'merge' | 'review-submit' + | 'reviewer-add' | 'reviewer-delete' | 'state-change' | 'title-change' @@ -4996,6 +4997,7 @@ export interface ListPullReqActivitiesQueryParams { | 'label-modify' | 'merge' | 'review-submit' + | 'reviewer-add' | 'reviewer-delete' | 'state-change' | 'title-change' diff --git a/web/src/services/code/swagger.yaml b/web/src/services/code/swagger.yaml index 01d2d91aa..9fa503ccf 100644 --- a/web/src/services/code/swagger.yaml +++ b/web/src/services/code/swagger.yaml @@ -4644,6 +4644,7 @@ paths: - label-modify - merge - review-submit + - reviewer-add - reviewer-delete - state-change - title-change @@ -4772,6 +4773,12 @@ paths: schema: $ref: '#/components/schemas/UsererrorError' description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/UsererrorError' + description: Conflict '422': content: application/json: @@ -4834,6 +4841,12 @@ paths: schema: $ref: '#/components/schemas/UsererrorError' description: Forbidden + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/UsererrorError' + description: Conflict '422': content: application/json: @@ -10562,6 +10575,7 @@ components: - label-modify - merge - review-submit + - reviewer-add - reviewer-delete - state-change - title-change