mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[gitlab] better presentation for system discussions in timeline
GitOrigin-RevId: 31b2df577246a56c9144f334b5ce195a95d16bc4
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8f86e85ce5
commit
92e1b8b39a
@@ -57,5 +57,7 @@
|
||||
<orderEntry type="module" module-name="intellij.vcs.git" />
|
||||
<orderEntry type="module" module-name="intellij.platform.vcs.log.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.vcs.impl" />
|
||||
<orderEntry type="library" name="jetbrains.markdown" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.platform.markdown.utils" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user