Fix changelog formatting
This commit is contained in:
@@ -80,6 +80,12 @@ class AppUpdateRepository @Inject constructor(
|
|||||||
return BuildConfig.DEBUG || getCertificateSHA1Fingerprint() == CERT_SHA1
|
return BuildConfig.DEBUG || getCertificateSHA1Fingerprint() == CERT_SHA1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun getCurrentVersionChangelog(): String? {
|
||||||
|
val currentVersion = VersionId(BuildConfig.VERSION_NAME)
|
||||||
|
val available = getAvailableVersions()
|
||||||
|
return available.find { x -> x.versionId == currentVersion }?.description
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
@SuppressLint("PackageManagerGetSignatures")
|
@SuppressLint("PackageManagerGetSignatures")
|
||||||
private fun getCertificateSHA1Fingerprint(): String? = runCatching {
|
private fun getCertificateSHA1Fingerprint(): String? = runCatching {
|
||||||
|
|||||||
@@ -3,30 +3,31 @@ package org.koitharu.kotatsu.settings.about
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import com.google.android.material.R as materialR
|
import androidx.core.text.buildSpannedString
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import io.noties.markwon.Markwon
|
import io.noties.markwon.Markwon
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
import org.koitharu.kotatsu.core.github.AppVersion
|
import org.koitharu.kotatsu.core.github.AppVersion
|
||||||
import org.koitharu.kotatsu.utils.FileSize
|
import org.koitharu.kotatsu.utils.FileSize
|
||||||
|
import com.google.android.material.R as materialR
|
||||||
|
|
||||||
class AppUpdateDialog(private val context: Context) {
|
class AppUpdateDialog(private val context: Context) {
|
||||||
|
|
||||||
fun show(version: AppVersion) {
|
fun show(version: AppVersion) {
|
||||||
val message = buildString {
|
val message = buildSpannedString {
|
||||||
append(context.getString(R.string.new_version_s, version.name))
|
append(context.getString(R.string.new_version_s, version.name))
|
||||||
appendLine()
|
appendLine()
|
||||||
append(context.getString(R.string.size_s, FileSize.BYTES.format(context, version.apkSize)))
|
append(context.getString(R.string.size_s, FileSize.BYTES.format(context, version.apkSize)))
|
||||||
appendLine()
|
appendLine()
|
||||||
appendLine()
|
appendLine()
|
||||||
append(version.description)
|
append(Markwon.create(context).toMarkdown(version.description))
|
||||||
}
|
}
|
||||||
MaterialAlertDialogBuilder(
|
MaterialAlertDialogBuilder(
|
||||||
context,
|
context,
|
||||||
materialR.style.ThemeOverlay_Material3_MaterialAlertDialog_Centered,
|
materialR.style.ThemeOverlay_Material3_MaterialAlertDialog_Centered,
|
||||||
)
|
)
|
||||||
.setTitle(R.string.app_update_available)
|
.setTitle(R.string.app_update_available)
|
||||||
.setMessage(Markwon.create(context).toMarkdown(message))
|
.setMessage(message)
|
||||||
.setIcon(R.drawable.ic_app_update)
|
.setIcon(R.drawable.ic_app_update)
|
||||||
.setPositiveButton(R.string.download) { _, _ ->
|
.setPositiveButton(R.string.download) { _, _ ->
|
||||||
val intent = Intent(Intent.ACTION_VIEW, version.apkUrl.toUri())
|
val intent = Intent(Intent.ACTION_VIEW, version.apkUrl.toUri())
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import androidx.core.widget.TextViewCompat
|
|||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import com.google.android.material.color.MaterialColors
|
import com.google.android.material.color.MaterialColors
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import io.noties.markwon.Markwon
|
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
import org.koitharu.kotatsu.base.ui.BaseFragment
|
import org.koitharu.kotatsu.base.ui.BaseFragment
|
||||||
import org.koitharu.kotatsu.base.ui.widgets.SegmentedBarView
|
import org.koitharu.kotatsu.base.ui.widgets.SegmentedBarView
|
||||||
@@ -48,7 +47,6 @@ class ToolsFragment :
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
binding.buttonSettings.setOnClickListener(this)
|
binding.buttonSettings.setOnClickListener(this)
|
||||||
binding.buttonDownloads.setOnClickListener(this)
|
binding.buttonDownloads.setOnClickListener(this)
|
||||||
binding.cardUpdate.root.setOnClickListener(this)
|
|
||||||
binding.cardUpdate.buttonChangelog.setOnClickListener(this)
|
binding.cardUpdate.buttonChangelog.setOnClickListener(this)
|
||||||
binding.cardUpdate.buttonDownload.setOnClickListener(this)
|
binding.cardUpdate.buttonDownload.setOnClickListener(this)
|
||||||
binding.switchIncognito.setOnCheckedChangeListener(this)
|
binding.switchIncognito.setOnCheckedChangeListener(this)
|
||||||
@@ -72,12 +70,10 @@ class ToolsFragment :
|
|||||||
startActivity(Intent.createChooser(intent, getString(R.string.open_in_browser)))
|
startActivity(Intent.createChooser(intent, getString(R.string.open_in_browser)))
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.card_update -> {
|
R.id.button_changelog -> {
|
||||||
val version = viewModel.appUpdate.value ?: return
|
val version = viewModel.appUpdate.value ?: return
|
||||||
AppUpdateDialog(v.context).show(version)
|
AppUpdateDialog(v.context).show(version)
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.button_changelog -> showChangelog()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,7 +93,6 @@ class ToolsFragment :
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
binding.cardUpdate.textSecondary.text = getString(R.string.new_version_s, version.name)
|
binding.cardUpdate.textSecondary.text = getString(R.string.new_version_s, version.name)
|
||||||
binding.cardUpdate.textChangelog.text = Markwon.create(requireActivity()).toMarkdown(version.description)
|
|
||||||
binding.cardUpdate.root.isVisible = true
|
binding.cardUpdate.root.isVisible = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,13 +141,6 @@ class ToolsFragment :
|
|||||||
return MaterialColors.harmonize(color, backgroundColor)
|
return MaterialColors.harmonize(color, backgroundColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showChangelog() {
|
|
||||||
TransitionManager.beginDelayedTransition(binding.cardUpdate.root)
|
|
||||||
binding.cardUpdate.buttonChangelog.isVisible = false
|
|
||||||
binding.cardUpdate.textSecondary.isVisible = true
|
|
||||||
binding.cardUpdate.textChangelog.isVisible = true
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun newInstance() = ToolsFragment()
|
fun newInstance() = ToolsFragment()
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
<com.google.android.material.card.MaterialCardView
|
<com.google.android.material.card.MaterialCardView
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:id="@+id/card_update"
|
android:id="@+id/card_update"
|
||||||
style="@style/Widget.Material3.CardView.Filled"
|
style="@style/Widget.Material3.CardView.Filled"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -30,25 +29,9 @@
|
|||||||
android:layout_marginTop="@dimen/margin_small"
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
android:text="@string/new_version_s"
|
android:text="@string/new_version_s"
|
||||||
android:textAppearance="?attr/textAppearanceBodyMedium"
|
android:textAppearance="?attr/textAppearanceBodyMedium"
|
||||||
android:visibility="gone"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/textPrimary"
|
app:layout_constraintTop_toBottomOf="@id/textPrimary" />
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/textChangelog"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="@dimen/margin_small"
|
|
||||||
android:fontFamily="monospace"
|
|
||||||
android:textAppearance="?attr/textAppearanceBodyMedium"
|
|
||||||
android:visibility="gone"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@id/textSecondary"
|
|
||||||
tools:text="- Fixes\n- Improvements"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/button_changelog"
|
android:id="@+id/button_changelog"
|
||||||
@@ -59,7 +42,7 @@
|
|||||||
android:layout_marginEnd="12dp"
|
android:layout_marginEnd="12dp"
|
||||||
android:text="@string/details"
|
android:text="@string/details"
|
||||||
app:layout_constraintEnd_toStartOf="@id/button_download"
|
app:layout_constraintEnd_toStartOf="@id/button_download"
|
||||||
app:layout_constraintTop_toBottomOf="@id/textChangelog" />
|
app:layout_constraintTop_toBottomOf="@id/textSecondary" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/button_download"
|
android:id="@+id/button_download"
|
||||||
@@ -69,7 +52,7 @@
|
|||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
android:text="@string/download"
|
android:text="@string/download"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/textChangelog" />
|
app:layout_constraintTop_toBottomOf="@id/textSecondary" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user