优化
This commit is contained in:
@@ -48,7 +48,7 @@ data class ReplaceRule(
|
||||
var timeoutMillisecond: Long = 3000L,
|
||||
//排序
|
||||
@ColumnInfo(name = "sortOrder", defaultValue = "0")
|
||||
var order: Int = 0
|
||||
var order: Int = Int.MIN_VALUE
|
||||
) : Parcelable {
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
|
||||
@@ -13,13 +13,13 @@ class ReplaceEditViewModel(application: Application) : BaseViewModel(application
|
||||
fun initData(intent: Intent, finally: (replaceRule: ReplaceRule) -> Unit) {
|
||||
execute {
|
||||
val id = intent.getLongExtra("id", -1)
|
||||
if (id > 0) {
|
||||
replaceRule = appDb.replaceRuleDao.findById(id)
|
||||
replaceRule = if (id > 0) {
|
||||
appDb.replaceRuleDao.findById(id)
|
||||
} else {
|
||||
val pattern = intent.getStringExtra("pattern") ?: ""
|
||||
val isRegex = intent.getBooleanExtra("isRegex", false)
|
||||
val scope = intent.getStringExtra("scope")
|
||||
replaceRule = ReplaceRule(
|
||||
ReplaceRule(
|
||||
name = pattern,
|
||||
pattern = pattern,
|
||||
isRegex = isRegex,
|
||||
@@ -35,7 +35,7 @@ class ReplaceEditViewModel(application: Application) : BaseViewModel(application
|
||||
|
||||
fun save(replaceRule: ReplaceRule, success: () -> Unit) {
|
||||
execute {
|
||||
if (replaceRule.order == 0) {
|
||||
if (replaceRule.order == Int.MIN_VALUE) {
|
||||
replaceRule.order = appDb.replaceRuleDao.maxOrder + 1
|
||||
}
|
||||
appDb.replaceRuleDao.insert(replaceRule)
|
||||
|
||||
@@ -5,9 +5,7 @@ import com.script.SimpleBindings
|
||||
import io.legado.app.constant.AppConst
|
||||
import io.legado.app.exception.RegexTimeoutException
|
||||
import io.legado.app.help.CrashHandler
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import splitties.init.appCtx
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.resumeWithException
|
||||
|
||||
@@ -20,7 +18,7 @@ private val handler by lazy { buildMainHandler() }
|
||||
suspend fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): String {
|
||||
val charSequence = this
|
||||
return suspendCancellableCoroutine { block ->
|
||||
val coroutine = Coroutine.async {
|
||||
val thread = Thread {
|
||||
try {
|
||||
if (replacement.startsWith("@js:")) {
|
||||
val js = replacement.substring(4)
|
||||
@@ -43,18 +41,17 @@ suspend fun CharSequence.replace(regex: Regex, replacement: String, timeout: Lon
|
||||
block.resumeWithException(e)
|
||||
}
|
||||
}
|
||||
thread.start()
|
||||
handler.postDelayed(timeout) {
|
||||
if (coroutine.isActive) {
|
||||
val timeoutMsg = "替换超时,3秒后还未结束将重启应用\n替换规则$regex\n替换内容:${this}"
|
||||
if (thread.isAlive) {
|
||||
runCatching {
|
||||
@Suppress("DEPRECATION")
|
||||
thread.stop()
|
||||
}
|
||||
val timeoutMsg = "替换超时,将禁用替换规则"
|
||||
val exception = RegexTimeoutException(timeoutMsg)
|
||||
block.cancel(exception)
|
||||
appCtx.longToastOnUi(timeoutMsg)
|
||||
CrashHandler.saveCrashInfo2File(exception)
|
||||
handler.postDelayed(3000) {
|
||||
if (coroutine.isActive) {
|
||||
appCtx.restart()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user