Add: Changelogs markdown support (closes #165)

This commit is contained in:
machiav3lli 2022-02-06 02:56:47 +01:00
parent e6b9c93242
commit 79865b49cc
2 changed files with 18 additions and 2 deletions

View File

@ -167,6 +167,9 @@ dependencies {
// JackSon
implementation 'com.fasterxml.jackson.core:jackson-core:2.13.1'
// Markdown
implementation "org.jetbrains:markdown:0.2.4"
// Coroutines / Lifecycle
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0'

View File

@ -55,9 +55,15 @@ import com.looker.droidify.utility.PackageItemResolver
import com.looker.droidify.utility.Utils
import com.looker.droidify.utility.extension.android.Android
import com.looker.droidify.utility.extension.resources.*
import com.looker.droidify.utility.extension.text.*
import com.looker.droidify.utility.extension.text.formatSize
import com.looker.droidify.utility.extension.text.nullIfEmpty
import com.looker.droidify.utility.extension.text.trimAfter
import com.looker.droidify.utility.extension.text.trimBefore
import com.looker.droidify.widget.ClickableMovementMethod
import com.looker.droidify.widget.StableRecyclerAdapter
import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor
import org.intellij.markdown.html.HtmlGenerator
import org.intellij.markdown.parser.MarkdownParser
import java.lang.ref.WeakReference
import java.util.*
import kotlin.math.roundToInt
@ -689,7 +695,14 @@ class AppDetailAdapter(private val callbacks: Callbacks) :
items += Item.TextItem(TextType.ANTI_FEATURES, antiFeatures)
}
val changes = formatHtml(productRepository.first.whatsNew)
// Two steps parsing as some changelogs mix markdown with html
val source = formatHtml(productRepository.first.whatsNew).toString()
val flavour = CommonMarkFlavourDescriptor()
val parsedTree = MarkdownParser(flavour)
.buildMarkdownTreeFromString(source)
val html = HtmlGenerator(source, parsedTree, flavour)
.generateHtml()
val changes = formatHtml(html)
if (changes.isNotEmpty()) {
items += Item.SectionItem(SectionType.CHANGES)
val cropped =