manager: Fix changelog dialog, close #1005

This commit is contained in:
weishu
2023-10-08 15:56:27 +08:00
parent e352ccc470
commit c4db2bab4f
2 changed files with 11 additions and 42 deletions

View File

@@ -26,21 +26,14 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.viewinterop.AndroidView
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import com.maxkeppeker.sheets.core.CoreDialog
import com.maxkeppeker.sheets.core.models.CoreSelection
import com.maxkeppeker.sheets.core.models.base.Header
import com.maxkeppeker.sheets.core.models.base.SelectionButton
import com.maxkeppeker.sheets.core.models.base.rememberUseCaseState
import io.noties.markwon.Markwon import io.noties.markwon.Markwon
import io.noties.markwon.utils.NoCopySpannableFactory import io.noties.markwon.utils.NoCopySpannableFactory
import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.CancellableContinuation
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.suspendCancellableCoroutine
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext
import me.weishu.kernelsu.ui.util.LocalDialogHost import me.weishu.kernelsu.ui.util.LocalDialogHost
import kotlin.coroutines.resume import kotlin.coroutines.resume
@@ -179,7 +172,11 @@ class DialogHostState {
} }
suspend fun showConfirm( suspend fun showConfirm(
title: String, content: String, markdown: Boolean = false, confirm: String? = null, dismiss: String? = null title: String,
content: String,
markdown: Boolean = false,
confirm: String? = null,
dismiss: String? = null
): ConfirmResult = mutex.withLock { ): ConfirmResult = mutex.withLock {
try { try {
return@withLock suspendCancellableCoroutine { continuation -> return@withLock suspendCancellableCoroutine { continuation ->
@@ -262,37 +259,6 @@ fun ConfirmDialog(state: DialogHostState = LocalDialogHost.current) {
val visuals = confirmDialogData.visuals val visuals = confirmDialogData.visuals
if (visuals.isMarkdown) {
CoreDialog(
state = rememberUseCaseState(visible = true, onCloseRequest = {
confirmDialogData.dismiss()
}),
header = Header.Default(
title = visuals.title
),
selection = CoreSelection(
withButtonView = true,
negativeButton = SelectionButton(
visuals.dismiss ?: stringResource(id = android.R.string.cancel),
),
positiveButton = SelectionButton(
visuals.confirm ?: stringResource(id = android.R.string.ok),
),
onPositiveClick = {
confirmDialogData.confirm()
},
onNegativeClick = {
confirmDialogData.dismiss()
},
),
onPositiveValid = true,
body = {
MarkdownContent(visuals.content)
},
)
return
}
AlertDialog( AlertDialog(
onDismissRequest = { onDismissRequest = {
confirmDialogData.dismiss() confirmDialogData.dismiss()
@@ -301,7 +267,11 @@ fun ConfirmDialog(state: DialogHostState = LocalDialogHost.current) {
Text(text = visuals.title) Text(text = visuals.title)
}, },
text = { text = {
Text(text = visuals.content) if (visuals.isMarkdown) {
MarkdownContent(content = visuals.content)
} else {
Text(text = visuals.content)
}
}, },
confirmButton = { confirmButton = {
TextButton(onClick = { confirmDialogData.confirm() }) { TextButton(onClick = { confirmDialogData.confirm() }) {

View File

@@ -163,10 +163,9 @@ private fun ModuleList(
) { ) {
val changelog = dialogHost.withLoading { val changelog = dialogHost.withLoading {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val str = OkHttpClient().newCall( OkHttpClient().newCall(
okhttp3.Request.Builder().url(changelogUrl).build() okhttp3.Request.Builder().url(changelogUrl).build()
).execute().body!!.string() ).execute().body!!.string()
if (str.length > 1000) str.substring(0, 1000) else str
} }
} }