diff --git a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt index 38a5971b4..3c8247595 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt @@ -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)) } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt index 9a4e17fea..0b14dd45d 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt @@ -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()) { diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineViewModel.kt index a43195b49..ae9ab7b90 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineViewModel.kt @@ -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("格式不对") - } - } - } - } \ No newline at end of file