import React, { useState } from 'react' import { Container, useToaster } from '@harness/uicore' import cx from 'classnames' import { useMutate } from 'restful-react' import { MarkdownViewer } from 'components/MarkdownViewer/MarkdownViewer' import { useStrings } from 'framework/strings' import type { OpenapiUpdatePullReqRequest } from 'services/code' import { OptionsMenuButton } from 'components/OptionsMenuButton/OptionsMenuButton' import { MarkdownEditorWithPreview } from 'components/MarkdownEditorWithPreview/MarkdownEditorWithPreview' import { getErrorMessage } from 'utils/Utils' import type { ConversationProps } from './Conversation' import css from './Conversation.module.scss' export const DescriptionBox: React.FC = ({ repoMetadata, pullRequestMetadata, onCommentUpdate: refreshPullRequestMetadata }) => { const [edit, setEdit] = useState(false) // const [updated, setUpdated] = useState(pullRequestMetadata.edited as number) const [originalContent, setOriginalContent] = useState(pullRequestMetadata.description as string) const [content, setContent] = useState(originalContent) const { getString } = useStrings() const { showError } = useToaster() const { mutate } = useMutate({ verb: 'PATCH', path: `/api/v1/repos/${repoMetadata.path}/+/pullreq/${pullRequestMetadata.number}` }) return ( {(edit && ( { const payload: OpenapiUpdatePullReqRequest = { title: pullRequestMetadata.title, description: value } mutate(payload) .then(() => { setContent(value) setOriginalContent(value) setEdit(false) // setUpdated(Date.now()) refreshPullRequestMetadata() }) .catch(exception => showError(getErrorMessage(exception), 0, getString('pr.failedToUpdate'))) }} onCancel={() => { setContent(originalContent) setEdit(false) }} i18n={{ placeHolder: getString('pr.enterDesc'), tabEdit: getString('write'), tabPreview: getString('preview'), save: getString('save'), cancel: getString('cancel') }} editorHeight="400px" /> )) || ( setEdit(true) } ]} /> )} ) }