diff --git a/app/src/main/java/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt b/app/src/main/java/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt
index 988c6007d..b26b346dc 100644
--- a/app/src/main/java/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt
+++ b/app/src/main/java/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt
@@ -4,13 +4,13 @@ import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
-import android.text.Html
import android.text.style.URLSpan
import androidx.core.app.NotificationChannelCompat
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.app.PendingIntentCompat
import androidx.core.text.getSpans
+import androidx.core.text.parseAsHtml
import androidx.work.Constraints
import androidx.work.CoroutineWorker
import androidx.work.ExistingPeriodicWorkPolicy
@@ -109,7 +109,7 @@ fun showEventNotification(html: String) {
.setName(CHANNEL_ID)
.build()
notificationManager.createNotificationChannel(chan)
- val text = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY)
+ val text = html.parseAsHtml()
val msg = NotificationCompat.Builder(appCtx, CHANNEL_ID)
.setAutoCancel(true)
.setSmallIcon(R.drawable.ic_launcher_monochrome)
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt
index a04474e37..f5e308bee 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt
@@ -23,7 +23,6 @@ import android.graphics.Typeface
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.os.Looper
-import android.text.Html
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.CharacterStyle
@@ -45,6 +44,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.core.content.ContextCompat
import androidx.core.text.getSpans
import androidx.core.text.inSpans
+import androidx.core.text.parseAsHtml
import androidx.core.text.set
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsAnimationCompat
@@ -767,12 +767,7 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh
textView: ObservedTextView,
comment: GalleryComment,
): CharSequence {
- sp = Html.fromHtml(
- comment.comment,
- Html.FROM_HTML_MODE_LEGACY,
- URLImageGetter(textView),
- null,
- )
+ sp = comment.comment.orEmpty().parseAsHtml(imageGetter = URLImageGetter(textView))
val ssb = SpannableStringBuilder(sp)
if (0L != comment.id && 0 != comment.score) {
val score = comment.score
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt
index 16edad9e7..8c52473d9 100755
--- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt
@@ -27,7 +27,6 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
-import android.text.Html
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -104,6 +103,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.content.ContextCompat
+import androidx.core.text.parseAsHtml
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import arrow.core.partially1
@@ -1109,12 +1109,7 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener {
user.setBackgroundColor(Color.TRANSPARENT)
time.text = ReadableTime.getTimeAgo(comment.time)
this.comment.maxLines = 5
- this.comment.text = Html.fromHtml(
- comment.comment,
- Html.FROM_HTML_MODE_LEGACY,
- URLImageGetter(this.comment),
- null,
- )
+ this.comment.text = comment.comment.orEmpty().parseAsHtml(imageGetter = URLImageGetter(this.comment))
}.root
})
}
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt
index 95f927388..04ffaa482 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt
@@ -1,6 +1,5 @@
package com.hippo.ehviewer.ui.settings
-import android.text.Html
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
@@ -16,6 +15,7 @@ import androidx.compose.runtime.Stable
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
+import androidx.core.text.parseAsHtml
import com.hippo.ehviewer.BuildConfig
import com.hippo.ehviewer.R
import com.hippo.ehviewer.ui.LICENSE_SCREEN
@@ -31,7 +31,7 @@ private fun versionCode() = "${BuildConfig.VERSION_NAME} (${BuildConfig.COMMIT_S
@Composable
@Stable
-private fun author() = stringResource(R.string.settings_about_author_summary).replace('$', '@').let { Html.fromHtml(it, Html.FROM_HTML_MODE_LEGACY).toAnnotatedString() }
+private fun author() = stringResource(R.string.settings_about_author_summary).replace('$', '@').parseAsHtml().toAnnotatedString()
@Composable
fun AboutScreen() {
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
index 5d7d5495e..27ace6b81 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
@@ -2,7 +2,6 @@ package com.hippo.ehviewer.ui.settings
import android.content.DialogInterface
import android.os.Build
-import android.text.Html
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
@@ -34,6 +33,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringArrayResource
import androidx.compose.ui.res.stringResource
+import androidx.core.text.parseAsHtml
import com.hippo.ehviewer.R
import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhCookieStore
@@ -107,7 +107,7 @@ fun EhScreen() {
BaseDialogBuilder(context).apply {
if (ipbMemberId != null || ipbPassHash != null || igneous != null) {
val str = EhCookieStore.KEY_IPB_MEMBER_ID + ": " + ipbMemberId + "
" + EhCookieStore.KEY_IPB_PASS_HASH + ": " + ipbPassHash + "
" + EhCookieStore.KEY_IGNEOUS + ": " + igneous
- val spanned = Html.fromHtml(context.getString(R.string.settings_eh_identity_cookies_signed, str), Html.FROM_HTML_MODE_LEGACY)
+ val spanned = context.getString(R.string.settings_eh_identity_cookies_signed, str).parseAsHtml()
setMessage(spanned)
setNeutralButton(R.string.settings_eh_identity_cookies_copy) { _, _ ->
context whisperClipboard str.replace("
", "\n")
diff --git a/app/src/main/java/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt b/app/src/main/java/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt
index 5f6f69480..84e37bbf0 100644
--- a/app/src/main/java/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt
+++ b/app/src/main/java/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt
@@ -37,6 +37,7 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.text.HtmlCompat
+import androidx.core.text.parseAsHtml
import com.mikepenz.aboutlibraries.entity.Library
import com.mikepenz.aboutlibraries.ui.compose.util.author
import com.mikepenz.aboutlibraries.ui.compose.util.htmlReadyLicenseContent
@@ -190,7 +191,7 @@ fun HtmlText(
AndroidView(
modifier = modifier,
factory = { context -> TextView(context) },
- update = { it.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_COMPACT) },
+ update = { it.text = html.parseAsHtml(flags = HtmlCompat.FROM_HTML_MODE_COMPACT) },
)
}