This commit is contained in:
Horis
2025-11-21 11:08:58 +08:00
parent 09c9209a26
commit 72aeedfafe
3 changed files with 12 additions and 39 deletions
@@ -1,6 +1,7 @@
package io.legado.app.ui.association
import android.app.Application
import androidx.core.net.toUri
import androidx.lifecycle.MutableLiveData
import io.legado.app.R
import io.legado.app.base.BaseViewModel
@@ -16,6 +17,9 @@ import io.legado.app.help.http.text
import io.legado.app.utils.isAbsUrl
import io.legado.app.utils.isJsonArray
import io.legado.app.utils.isJsonObject
import io.legado.app.utils.isUri
import io.legado.app.utils.readText
import splitties.init.appCtx
class ImportHttpTtsViewModel(app: Application) : BaseViewModel(app) {
@@ -79,12 +83,19 @@ class ImportHttpTtsViewModel(app: Application) : BaseViewModel(app) {
allSources.add(it)
}
}
text.isJsonArray() -> HttpTTS.fromJsonArray(text).getOrThrow().let { items ->
allSources.addAll(items)
}
text.isAbsUrl() -> {
importSourceUrl(text)
}
text.isUri() -> {
importSourceAwait(text.toUri().readText(appCtx))
}
else -> throw NoStackTraceException(context.getString(R.string.wrong_format))
}
}
@@ -66,7 +66,7 @@ class SpeakEngineDialog() : BaseDialogFragment(R.layout.dialog_recycler_view),
private val callBack: CallBack? get() = parentFragment as? CallBack
private val importDocResult = registerForActivityResult(HandleFileContract()) {
it.uri?.let { uri ->
viewModel.importLocal(uri)
showDialogFragment(ImportHttpTtsDialog(uri.toString()))
}
}
private val exportDirResult = registerForActivityResult(HandleFileContract()) {
@@ -1,17 +1,9 @@
package io.legado.app.ui.book.read.config
import android.app.Application
import android.net.Uri
import android.speech.tts.TextToSpeech
import io.legado.app.base.BaseViewModel
import io.legado.app.data.appDb
import io.legado.app.data.entities.HttpTTS
import io.legado.app.exception.NoStackTraceException
import io.legado.app.help.DefaultData
import io.legado.app.utils.isJsonArray
import io.legado.app.utils.isJsonObject
import io.legado.app.utils.readText
import io.legado.app.utils.toastOnUi
class SpeakEngineViewModel(application: Application) : BaseViewModel(application) {
@@ -28,34 +20,4 @@ class SpeakEngineViewModel(application: Application) : BaseViewModel(application
}
}
fun importLocal(uri: Uri) {
execute {
import(uri.readText(context))
}.onSuccess {
context.toastOnUi("导入成功")
}.onError {
context.toastOnUi("导入失败\n${it.localizedMessage}")
}
}
fun import(text: String) {
when {
text.isJsonArray() -> {
HttpTTS.fromJsonArray(text).getOrThrow().let {
appDb.httpTTSDao.insert(*it.toTypedArray())
}
}
text.isJsonObject() -> {
HttpTTS.fromJson(text).getOrThrow().let {
appDb.httpTTSDao.insert(it)
}
}
else -> {
throw NoStackTraceException("格式不对")
}
}
}
}