kunfei пре 4 година
родитељ
комит
fc2de61b1c

+ 1 - 1
app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt

@@ -48,7 +48,7 @@ data class ReplaceRule(
     var timeoutMillisecond: Long = 3000L,
     var timeoutMillisecond: Long = 3000L,
     //排序
     //排序
     @ColumnInfo(name = "sortOrder", defaultValue = "0")
     @ColumnInfo(name = "sortOrder", defaultValue = "0")
-    var order: Int = 0
+    var order: Int = Int.MIN_VALUE
 ) : Parcelable {
 ) : Parcelable {
 
 
     override fun equals(other: Any?): Boolean {
     override fun equals(other: Any?): Boolean {

+ 4 - 4
app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditViewModel.kt

@@ -13,13 +13,13 @@ class ReplaceEditViewModel(application: Application) : BaseViewModel(application
     fun initData(intent: Intent, finally: (replaceRule: ReplaceRule) -> Unit) {
     fun initData(intent: Intent, finally: (replaceRule: ReplaceRule) -> Unit) {
         execute {
         execute {
             val id = intent.getLongExtra("id", -1)
             val id = intent.getLongExtra("id", -1)
-            if (id > 0) {
-                replaceRule = appDb.replaceRuleDao.findById(id)
+            replaceRule = if (id > 0) {
+                appDb.replaceRuleDao.findById(id)
             } else {
             } else {
                 val pattern = intent.getStringExtra("pattern") ?: ""
                 val pattern = intent.getStringExtra("pattern") ?: ""
                 val isRegex = intent.getBooleanExtra("isRegex", false)
                 val isRegex = intent.getBooleanExtra("isRegex", false)
                 val scope = intent.getStringExtra("scope")
                 val scope = intent.getStringExtra("scope")
-                replaceRule = ReplaceRule(
+                ReplaceRule(
                     name = pattern,
                     name = pattern,
                     pattern = pattern,
                     pattern = pattern,
                     isRegex = isRegex,
                     isRegex = isRegex,
@@ -35,7 +35,7 @@ class ReplaceEditViewModel(application: Application) : BaseViewModel(application
 
 
     fun save(replaceRule: ReplaceRule, success: () -> Unit) {
     fun save(replaceRule: ReplaceRule, success: () -> Unit) {
         execute {
         execute {
-            if (replaceRule.order == 0) {
+            if (replaceRule.order == Int.MIN_VALUE) {
                 replaceRule.order = appDb.replaceRuleDao.maxOrder + 1
                 replaceRule.order = appDb.replaceRuleDao.maxOrder + 1
             }
             }
             appDb.replaceRuleDao.insert(replaceRule)
             appDb.replaceRuleDao.insert(replaceRule)

+ 8 - 11
app/src/main/java/io/legado/app/utils/RegexExtensions.kt

@@ -5,9 +5,7 @@ import com.script.SimpleBindings
 import io.legado.app.constant.AppConst
 import io.legado.app.constant.AppConst
 import io.legado.app.exception.RegexTimeoutException
 import io.legado.app.exception.RegexTimeoutException
 import io.legado.app.help.CrashHandler
 import io.legado.app.help.CrashHandler
-import io.legado.app.help.coroutine.Coroutine
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.suspendCancellableCoroutine
-import splitties.init.appCtx
 import kotlin.coroutines.resume
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
 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 {
 suspend fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): String {
     val charSequence = this
     val charSequence = this
     return suspendCancellableCoroutine { block ->
     return suspendCancellableCoroutine { block ->
-        val coroutine = Coroutine.async {
+        val thread = Thread {
             try {
             try {
                 if (replacement.startsWith("@js:")) {
                 if (replacement.startsWith("@js:")) {
                     val js = replacement.substring(4)
                     val js = replacement.substring(4)
@@ -43,18 +41,17 @@ suspend fun CharSequence.replace(regex: Regex, replacement: String, timeout: Lon
                 block.resumeWithException(e)
                 block.resumeWithException(e)
             }
             }
         }
         }
+        thread.start()
         handler.postDelayed(timeout) {
         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)
                 val exception = RegexTimeoutException(timeoutMsg)
                 block.cancel(exception)
                 block.cancel(exception)
-                appCtx.longToastOnUi(timeoutMsg)
                 CrashHandler.saveCrashInfo2File(exception)
                 CrashHandler.saveCrashInfo2File(exception)
-                handler.postDelayed(3000) {
-                    if (coroutine.isActive) {
-                        appCtx.restart()
-                    }
-                }
             }
             }
         }
         }
     }
     }