Format changelog in app (#51)

Formats the in-app changelog when updating

Also allows for force updating to allow for switching develop tags.
This commit is contained in:
damontecres 2025-10-21 19:48:19 -04:00 committed by GitHub
parent 6344cc77bf
commit 177e009f8c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 26 deletions

View file

@ -228,6 +228,8 @@ dependencies {
implementation(libs.timber) implementation(libs.timber)
implementation(libs.aboutlibraries.core) implementation(libs.aboutlibraries.core)
implementation(libs.aboutlibraries.compose.m3) implementation(libs.aboutlibraries.compose.m3)
implementation(libs.multiplatform.markdown.renderer)
implementation(libs.multiplatform.markdown.renderer.m3)
androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4) androidTestImplementation(libs.androidx.compose.ui.test.junit4)

View file

@ -54,6 +54,7 @@ import com.github.damontecres.wholphin.util.LoadingState
import com.github.damontecres.wholphin.util.Release import com.github.damontecres.wholphin.util.Release
import com.github.damontecres.wholphin.util.UpdateChecker import com.github.damontecres.wholphin.util.UpdateChecker
import com.github.damontecres.wholphin.util.Version import com.github.damontecres.wholphin.util.Version
import com.mikepenz.markdown.m3.Markdown
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -120,7 +121,6 @@ fun InstallUpdatePage(
LoadingState.Success -> LoadingState.Success ->
release?.let { release?.let {
if (it.version.isGreaterThan(viewModel.currentVersion)) {
InstallUpdatePageContent( InstallUpdatePageContent(
currentVersion = viewModel.currentVersion, currentVersion = viewModel.currentVersion,
release = it, release = it,
@ -136,11 +136,6 @@ fun InstallUpdatePage(
}, },
modifier = modifier, modifier = modifier,
) )
} else {
Text(
text = "No update available",
)
}
} }
} }
} }
@ -202,11 +197,14 @@ fun InstallUpdatePageContent(
}, },
) { ) {
item { item {
Text( Markdown(
// TODO render markdown (release.notes.joinToString("\n\n") + (release.body ?: ""))
text = release.notes.joinToString("\n\n") + (release.body ?: ""), .replace(
style = MaterialTheme.typography.bodyLarge, Regex("https://github.com/damontecres/\\w+/pull/(\\d+)"),
color = MaterialTheme.colorScheme.onSurface, "#$1",
)
// Remove the last line for full changelog since its just a link
.replace(Regex("\\*\\*Full Changelog\\*\\*.*"), ""),
) )
} }
} }

View file

@ -9,6 +9,7 @@ coreKtx = "1.17.0"
appcompat = "1.7.1" appcompat = "1.7.1"
composeBom = "2025.10.00" composeBom = "2025.10.00"
compose-runtime = "1.9.3" compose-runtime = "1.9.3"
multiplatformMarkdownRenderer = "0.37.0"
timber = "5.0.1" timber = "5.0.1"
tvFoundation = "1.0.0-alpha12" tvFoundation = "1.0.0-alpha12"
tvMaterial = "1.0.1" tvMaterial = "1.0.1"
@ -56,6 +57,8 @@ androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "d
desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" } desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" }
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" }
multiplatform-markdown-renderer = { module = "com.mikepenz:multiplatform-markdown-renderer", version.ref = "multiplatformMarkdownRenderer" }
multiplatform-markdown-renderer-m3 = { module = "com.mikepenz:multiplatform-markdown-renderer-m3", version.ref = "multiplatformMarkdownRenderer" }
protobuf-kotlin-lite = { module = "com.google.protobuf:protobuf-kotlin-lite", version.ref = "protobuf-javalite" } protobuf-kotlin-lite = { module = "com.google.protobuf:protobuf-kotlin-lite", version.ref = "protobuf-javalite" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines-android" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines-android" }
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinx-serialization" } kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinx-serialization" }