diff --git a/web/src/components/MarkdownEditorWithPreview/MarkdownEditorWithPreview.tsx b/web/src/components/MarkdownEditorWithPreview/MarkdownEditorWithPreview.tsx index 5fe338116..516b93907 100644 --- a/web/src/components/MarkdownEditorWithPreview/MarkdownEditorWithPreview.tsx +++ b/web/src/components/MarkdownEditorWithPreview/MarkdownEditorWithPreview.tsx @@ -31,11 +31,12 @@ import { Color, FontVariation } from '@harnessio/design-system' import cx from 'classnames' import type { EditorView } from '@codemirror/view' import { EditorSelection } from '@codemirror/state' +import { isEmpty } from 'lodash-es' import { Editor } from 'components/Editor/Editor' import { MarkdownViewer } from 'components/MarkdownViewer/MarkdownViewer' import { useStrings } from 'framework/strings' import { formatBytes, handleFileDrop, handlePaste } from 'utils/Utils' -import { handleUpload } from 'utils/GitUtils' +import { decodeGitContent, handleUpload } from 'utils/GitUtils' import type { TypesRepository } from 'services/code' import css from './MarkdownEditorWithPreview.module.scss' @@ -73,6 +74,7 @@ const toolbar: ToolbarItem[] = [ interface MarkdownEditorWithPreviewProps { className?: string value?: string + templateData?: string onChange?: (value: string) => void onSave?: (value: string) => void onCancel?: () => void @@ -102,6 +104,7 @@ interface MarkdownEditorWithPreviewProps { export function MarkdownEditorWithPreview({ className, value = '', + templateData = '', onChange, onSave, onCancel, @@ -271,6 +274,18 @@ export function MarkdownEditorWithPreview({ } // eslint-disable-next-line react-hooks/exhaustive-deps }, [autoFocusAndPosition, viewRef, containerRef, scrollToAndSetCursorToEnd, dirty]) + useEffect(() => { + if (!isEmpty(templateData)) { + viewRef.current?.dispatch({ + changes: { + from: 0, + to: 0, + insert: decodeGitContent(templateData) + } + }) + } + }, [templateData]) + const setFileCallback = (newFile: File) => { setFile(newFile) } diff --git a/web/src/pages/Compare/Compare.tsx b/web/src/pages/Compare/Compare.tsx index b70f79d1d..cf21a345c 100644 --- a/web/src/pages/Compare/Compare.tsx +++ b/web/src/pages/Compare/Compare.tsx @@ -41,6 +41,8 @@ import { CodeIcon, normalizeGitRef, isRefATag, makeDiffRefs, isGitRev } from 'ut import { Changes } from 'components/Changes/Changes' import type { OpenapiCreatePullReqRequest, + OpenapiGetContentOutput, + RepoFileContent, TypesCommit, TypesDiffStats, TypesPullReq, @@ -88,6 +90,15 @@ export default function Compare() { }, lazy: !repoMetadata || sourceGitRef === '' }) + const { data: prTemplateData } = useGet({ + path: `/api/v1/repos/${repoMetadata?.path}/+/content/.harness/pull_request_template.md`, + queryParams: { + include_commit: false, + git_ref: normalizeGitRef(targetGitRef) + }, + lazy: !repoMetadata || sourceGitRef === '' + }) + const onCreatePullRequest = useCallback( (creationType: PRCreationType) => { if (!sourceGitRef || !targetGitRef) { @@ -247,6 +258,7 @@ export default function Compare() { standalone={standalone} repoMetadata={repoMetadata} value={description} + templateData={(prTemplateData?.content as RepoFileContent)?.data} onChange={setDescription} hideButtons autoFocusAndPosition={true}