Skip to content

Commit

Permalink
feat: 更友好的配置导入提醒
Browse files Browse the repository at this point in the history
  • Loading branch information
jing332 committed Jul 14, 2023
1 parent d940e04 commit 9bdc611
Show file tree
Hide file tree
Showing 10 changed files with 77 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.github.jing332.tts_server_android.constant

import androidx.annotation.StringRes
import com.github.jing332.tts_server_android.R

enum class ConfigType(@StringRes val strId: Int) {
UNKNOWN(R.string.unknown),
LIST(R.string.config_list),
PLUGIN(R.string.plugin),
REPLACE_RULE(R.string.replace_rule),
SPEECH_RULE(R.string.speech_rule);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.github.jing332.tts_server_android.help

import com.github.jing332.tts_server_android.constant.ConfigType

object ConfigImportHelper {
private val fieldMap = mapOf(
"list" to ConfigType.LIST,
"pluginId" to ConfigType.PLUGIN,
"pattern" to ConfigType.REPLACE_RULE,
"ruleId" to ConfigType.SPEECH_RULE
)

/**
* 检查配置字符串是否符合配置格式
*/
fun getConfigType(str: String): ConfigType {
fieldMap.forEach {
if (str.contains("\"${it.key}\":")) {
return it.value
}
}

return ConfigType.UNKNOWN
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.net.Uri
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.core.view.isInvisible
import androidx.core.view.setPadding
Expand All @@ -17,11 +18,12 @@ import com.drake.brv.utils.models
import com.drake.brv.utils.setup
import com.drake.net.Net
import com.drake.net.okhttp.trustSSLCertificate
import com.drake.net.utils.withIO
import com.drake.net.utils.withMain
import com.github.jing332.tts_server_android.R
import com.github.jing332.tts_server_android.constant.ConfigType
import com.github.jing332.tts_server_android.databinding.BaseConfigImportItemBinding
import com.github.jing332.tts_server_android.databinding.SysttsBaseImportConfigBottomSheetBinding
import com.github.jing332.tts_server_android.help.ConfigImportHelper
import com.github.jing332.tts_server_android.ui.AppActivityResultContracts
import com.github.jing332.tts_server_android.ui.FilePickerActivity
import com.github.jing332.tts_server_android.ui.view.AppDialogs.displayErrorDialog
Expand All @@ -43,6 +45,7 @@ import okhttp3.Response
abstract class BaseImportConfigBottomSheetFragment(
@StringRes
protected var title: Int = R.string.import_config,
val configType: ConfigType,
var fileUri: Uri? = null,
var remoteUrl: String? = null,
) : BottomSheetDialogFragment(R.layout.systts_base_import_config_bottom_sheet) {
Expand Down Expand Up @@ -137,10 +140,26 @@ abstract class BaseImportConfigBottomSheetFragment(
}

kotlin.runCatching {
if (checkJson(json))
val type = ConfigImportHelper.getConfigType(json)
if (type == configType)
onImport(json)
else
throw Exception(getString(R.string.format_error))
else {
if (type == ConfigType.UNKNOWN)
throw Exception(getString(R.string.import_config_type_unknown_msg))

MaterialAlertDialogBuilder(requireContext())
.setIcon(R.drawable.baseline_error_24)
.setTitle(R.string.import_config)
.setMessage(
getString(
R.string.import_config_type_not_match_msg,
getString(configType.strId),
getString(type.strId)
)
)
.setPositiveButton(android.R.string.ok, null)
.show()
}
}.onFailure {
requireContext().displayErrorDialog(it)
}
Expand Down Expand Up @@ -217,7 +236,4 @@ abstract class BaseImportConfigBottomSheetFragment(
.setNeutralButton(R.string.cancel, null)
.show()
}

open fun checkJson(json: String): Boolean = true

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.view.View
import com.github.jing332.tts_server_android.R
import com.github.jing332.tts_server_android.bean.LegadoHttpTts
import com.github.jing332.tts_server_android.constant.AppConst
import com.github.jing332.tts_server_android.constant.ConfigType
import com.github.jing332.tts_server_android.data.appDb
import com.github.jing332.tts_server_android.data.entities.systts.CompatSystemTts
import com.github.jing332.tts_server_android.data.entities.systts.GroupWithSystemTts
Expand All @@ -20,7 +21,8 @@ import com.github.jing332.tts_server_android.utils.longToast
import com.github.jing332.tts_server_android.utils.toJsonListString
import kotlinx.serialization.decodeFromString

class ImportConfigBottomSheetFragment : BaseImportConfigBottomSheetFragment() {
class ImportConfigBottomSheetFragment :
BaseImportConfigBottomSheetFragment(configType = ConfigType.LIST) {
companion object {
const val TAG = "ConfigImportBottomSheetFragment"
}
Expand All @@ -37,8 +39,6 @@ class ImportConfigBottomSheetFragment : BaseImportConfigBottomSheetFragment() {
private val isLegado: Boolean
get() = binding.groupType.checkedButtonId == binding.btnTypeLegado.id

override fun checkJson(json: String) = json.contains("tts")

@Suppress("UNCHECKED_CAST")
override fun onImport(json: String) {
val allList = mutableListOf<ConfigItemModel>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ package com.github.jing332.tts_server_android.ui.systts.plugin

import com.github.jing332.tts_server_android.R
import com.github.jing332.tts_server_android.constant.AppConst
import com.github.jing332.tts_server_android.constant.ConfigType
import com.github.jing332.tts_server_android.data.appDb
import com.github.jing332.tts_server_android.data.entities.plugin.Plugin
import com.github.jing332.tts_server_android.ui.base.import1.BaseImportConfigBottomSheetFragment
import com.github.jing332.tts_server_android.ui.base.import1.ConfigItemModel
import com.github.jing332.tts_server_android.utils.longToast
import kotlinx.serialization.decodeFromString

class ImportBottomSheetFragment : BaseImportConfigBottomSheetFragment(R.string.import_plugin) {
class ImportBottomSheetFragment :
BaseImportConfigBottomSheetFragment(R.string.import_plugin, ConfigType.PLUGIN) {
companion object {
const val TAG = "ImportConfigBottomSheetFragment"
}
Expand All @@ -23,7 +25,4 @@ class ImportBottomSheetFragment : BaseImportConfigBottomSheetFragment(R.string.i
dismiss()
}
}

override fun checkJson(json: String)= json.contains("pluginId")

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.github.jing332.tts_server_android.ui.systts.replace

import com.github.jing332.tts_server_android.R
import com.github.jing332.tts_server_android.constant.AppConst
import com.github.jing332.tts_server_android.constant.ConfigType
import com.github.jing332.tts_server_android.data.appDb
import com.github.jing332.tts_server_android.data.entities.replace.GroupWithReplaceRule
import com.github.jing332.tts_server_android.data.entities.replace.ReplaceRule
Expand All @@ -14,7 +15,7 @@ import com.github.jing332.tts_server_android.utils.toJsonListString
import kotlinx.serialization.decodeFromString

class ImportConfigBottomSheetFragment :
BaseImportConfigBottomSheetFragment(R.string.import_replace_rule) {
BaseImportConfigBottomSheetFragment(R.string.import_replace_rule, ConfigType.REPLACE_RULE) {
companion object {
const val TAG = "ImportConfigBottomSheetFragment"
}
Expand Down Expand Up @@ -63,7 +64,4 @@ class ImportConfigBottomSheetFragment :
dismiss()
}
}

override fun checkJson(json: String) = json.contains("pattern")

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ package com.github.jing332.tts_server_android.ui.systts.speech_rule

import com.github.jing332.tts_server_android.R
import com.github.jing332.tts_server_android.constant.AppConst
import com.github.jing332.tts_server_android.constant.ConfigType
import com.github.jing332.tts_server_android.data.appDb
import com.github.jing332.tts_server_android.data.entities.SpeechRule
import com.github.jing332.tts_server_android.ui.base.import1.BaseImportConfigBottomSheetFragment
import com.github.jing332.tts_server_android.ui.base.import1.ConfigItemModel
import com.github.jing332.tts_server_android.utils.longToast
import kotlinx.serialization.decodeFromString

class ImportConfigBottomSheetFragment : BaseImportConfigBottomSheetFragment() {
class ImportConfigBottomSheetFragment :
BaseImportConfigBottomSheetFragment(R.string.speech_rule, ConfigType.SPEECH_RULE) {
companion object {
const val TAG = "ImportConfigBottomSheetFragment"
}
Expand All @@ -23,6 +25,4 @@ class ImportConfigBottomSheetFragment : BaseImportConfigBottomSheetFragment() {
dismiss()
}
}

override fun checkJson(json: String) = json.contains("ruleId")
}
2 changes: 2 additions & 0 deletions app/src/main/res/values-en/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -413,4 +413,6 @@
<string name="theme_ink_grey">墨灰</string>
<string name="theme_emerald_green">碧绿</string>
<string name="theme_red_gold">赤金</string>
<string name="import_config_type_not_match_msg">Format error (expected: %1$s).\nThe format you entered is %2$s, please go to the corresponding management interface for import.</string>
<string name="import_config_type_unknown_msg">Unknown format, please enter the correct configuration.</string>
</resources>
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -397,4 +397,6 @@
<string name="theme_ink_grey">墨灰</string>
<string name="theme_emerald_green">碧绿</string>
<string name="theme_red_gold">赤金</string>
<string name="import_config_type_not_match_msg">格式错误(预期为: %1$s)。\n您输入的格式为 %2$s, 请前往对应管理界面进行导入。</string>
<string name="import_config_type_unknown_msg">格式未知,请输入正确的配置。</string>
</resources>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -409,4 +409,6 @@
<string name="theme_ink_grey">墨灰</string>
<string name="theme_emerald_green">碧绿</string>
<string name="theme_red_gold">赤金</string>
<string name="import_config_type_not_match_msg">格式错误(预期为: %1$s)。\n您输入的格式为 %2$s, 请前往对应管理界面进行导入。</string>
<string name="import_config_type_unknown_msg">格式未知,请输入正确的配置。</string>
</resources>

0 comments on commit 9bdc611

Please sign in to comment.