From 92e1b8b39add3d145f60d13fb5ed0ee0a9ec43d8 Mon Sep 17 00:00:00 2001 From: Ivan Semenov Date: Fri, 13 Jan 2023 19:07:01 +0100 Subject: [PATCH] [gitlab] better presentation for system discussions in timeline GitOrigin-RevId: 31b2df577246a56c9144f334b5ce195a95d16bc4 --- plugins/gitlab/intellij.vcs.gitlab.iml | 2 ++ ...LabMergeRequestTimelineComponentFactory.kt | 24 ++++++++++++++++--- .../plugins/gitlab/ui/GitLabUIUtil.kt | 15 ++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 plugins/gitlab/src/org/jetbrains/plugins/gitlab/ui/GitLabUIUtil.kt diff --git a/plugins/gitlab/intellij.vcs.gitlab.iml b/plugins/gitlab/intellij.vcs.gitlab.iml index c7dd9b16010e..d75262559102 100644 --- a/plugins/gitlab/intellij.vcs.gitlab.iml +++ b/plugins/gitlab/intellij.vcs.gitlab.iml @@ -57,5 +57,7 @@ + + \ No newline at end of file diff --git a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt index 61a1e70722ac..41ee0f5ac305 100644 --- a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt +++ b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/ui/timeline/GitLabMergeRequestTimelineComponentFactory.kt @@ -9,6 +9,7 @@ import com.intellij.collaboration.ui.codereview.CodeReviewChatItemUIUtil import com.intellij.collaboration.ui.codereview.timeline.StatusMessageComponentFactory import com.intellij.collaboration.ui.codereview.timeline.StatusMessageType import com.intellij.collaboration.ui.icon.IconsProvider +import com.intellij.openapi.diagnostic.thisLogger import com.intellij.openapi.editor.colors.EditorColorsManager import com.intellij.openapi.util.text.HtmlBuilder import com.intellij.openapi.util.text.HtmlChunk @@ -25,6 +26,7 @@ import org.jetbrains.annotations.Nls import org.jetbrains.plugins.gitlab.api.dto.* import org.jetbrains.plugins.gitlab.mergerequest.data.GitLabMergeRequestTimelineItem import org.jetbrains.plugins.gitlab.mergerequest.ui.timeline.GitLabMergeRequestTimelineViewModel.LoadingState +import org.jetbrains.plugins.gitlab.ui.GitLabUIUtil import org.jetbrains.plugins.gitlab.util.GitLabBundle import java.util.* import javax.swing.JComponent @@ -95,11 +97,27 @@ object GitLabMergeRequestTimelineComponentFactory { private fun createDiscussionContent(item: GitLabMergeRequestTimelineItem.Discussion): JComponent { val firstNote = item.discussion.notes.first() - return if (firstNote.system) { - StatusMessageComponentFactory.create(SimpleHtmlPane(firstNote.body)) + + if (firstNote.system) { + val body = firstNote.body + if (body.contains("Compare with previous version")) { + try { + val lines = body.lines() + val title = lines[0] + val commits = lines[2] + return VerticalListPanel().apply { + add(SimpleHtmlPane(title)) + add(StatusMessageComponentFactory.create(SimpleHtmlPane(commits))) + } + } + catch (e: Exception) { + thisLogger().warn("Error occurred while parsing the note with added commits", e) + } + } + return StatusMessageComponentFactory.create(SimpleHtmlPane(GitLabUIUtil.convertToHtml(body))) } else { - SimpleHtmlPane(firstNote.body) + return SimpleHtmlPane(GitLabUIUtil.convertToHtml(firstNote.body)) } } diff --git a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/ui/GitLabUIUtil.kt b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/ui/GitLabUIUtil.kt new file mode 100644 index 000000000000..b37a1412d936 --- /dev/null +++ b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/ui/GitLabUIUtil.kt @@ -0,0 +1,15 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gitlab.ui + +import com.intellij.markdown.utils.MarkdownToHtmlConverter +import com.intellij.openapi.util.NlsSafe +import org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor + +object GitLabUIUtil { + + private val mdConverter = MarkdownToHtmlConverter(GFMFlavourDescriptor()) + + internal fun convertToHtml(markdownSource: String): @NlsSafe String { + return mdConverter.convertMarkdownToHtml(markdownSource) + } +} \ No newline at end of file