From f70db7704bdc8119b27e2e2f135d44464b7e858b Mon Sep 17 00:00:00 2001 From: kunfei Date: Sun, 19 Mar 2023 13:00:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/entities/ReplaceRule.kt | 9 +++++++++ .../app/ui/replace/edit/ReplaceEditActivity.kt | 18 ++++-------------- .../ui/replace/edit/ReplaceEditViewModel.kt | 3 +++ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt index 9f69d31d8..67a720682 100644 --- a/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt @@ -6,7 +6,10 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Index import androidx.room.PrimaryKey +import io.legado.app.R +import io.legado.app.exception.NoStackTraceException import kotlinx.parcelize.Parcelize +import splitties.init.appCtx import java.util.regex.Pattern import java.util.regex.PatternSyntaxException @@ -85,6 +88,12 @@ data class ReplaceRule( return true } + fun checkValid() { + if (!isValid()) { + throw NoStackTraceException(appCtx.getString(R.string.replace_rule_invalid)) + } + } + fun getValidTimeoutMillisecond(): Long { if (timeoutMillisecond <= 0) { return 3000L diff --git a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt index b5db76be1..73204c1a7 100644 --- a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt @@ -17,7 +17,6 @@ import io.legado.app.ui.widget.keyboard.KeyboardToolPop import io.legado.app.utils.GSON import io.legado.app.utils.sendToClip import io.legado.app.utils.showDialogFragment -import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding /** @@ -70,7 +69,10 @@ class ReplaceEditActivity : override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - R.id.menu_save -> saveRule() + R.id.menu_save -> viewModel.save(getReplaceRule()) { + setResult(RESULT_OK) + finish() + } R.id.menu_copy_rule -> sendToClip(GSON.toJson(getReplaceRule())) R.id.menu_paste_rule -> viewModel.pasteRule { upReplaceView(it) @@ -110,18 +112,6 @@ class ReplaceEditActivity : return replaceRule } - private fun saveRule() { - val rule = getReplaceRule() - if (!rule.isValid()) { - toastOnUi(R.string.replace_rule_invalid) - } else { - viewModel.save(rule) { - setResult(RESULT_OK) - finish() - } - } - } - override fun helpActions(): List> { return arrayListOf( SelectItem("正则教程", "regexHelp") diff --git a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditViewModel.kt index ee89f5c7a..36dc19f1d 100644 --- a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditViewModel.kt @@ -54,12 +54,15 @@ class ReplaceEditViewModel(application: Application) : BaseViewModel(application fun save(replaceRule: ReplaceRule, success: () -> Unit) { execute { + replaceRule.checkValid() if (replaceRule.order == Int.MIN_VALUE) { replaceRule.order = appDb.replaceRuleDao.maxOrder + 1 } appDb.replaceRuleDao.insert(replaceRule) }.onSuccess { success() + }.onError { + context.toastOnUi("save error, ${it.localizedMessage}") } }