优化 #5565
This commit is contained in:
@@ -4,9 +4,8 @@ import android.app.Application
|
||||
import android.net.Uri
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import io.legado.app.base.BaseViewModel
|
||||
import io.legado.app.utils.contains
|
||||
import io.legado.app.utils.inputStream
|
||||
import io.legado.app.utils.readText
|
||||
import io.legado.app.utils.jsonPath
|
||||
|
||||
abstract class BaseAssociationViewModel(application: Application) : BaseViewModel(application) {
|
||||
|
||||
@@ -14,28 +13,34 @@ abstract class BaseAssociationViewModel(application: Application) : BaseViewMode
|
||||
val errorLive = MutableLiveData<String>()
|
||||
|
||||
fun importJson(uri: Uri) {
|
||||
when {
|
||||
uri.inputStream(context).getOrNull().contains("bookSourceUrl") ->
|
||||
successLive.postValue(Pair("bookSource", uri.toString()))
|
||||
else -> importJson(uri.readText(context))
|
||||
}
|
||||
val map = uri.inputStream(context).getOrThrow().use {
|
||||
jsonPath.parse(it).read<Map<String, *>>("$[0]")
|
||||
} ?: uri.inputStream(context).getOrThrow().use {
|
||||
jsonPath.parse(it).read("$")
|
||||
}
|
||||
|
||||
private fun importJson(json: String) {
|
||||
//暂时根据文件内容判断属于什么
|
||||
when {
|
||||
json.contains("sourceUrl") ->
|
||||
successLive.postValue(Pair("rssSource", json))
|
||||
json.contains("pattern") ->
|
||||
successLive.postValue(Pair("replaceRule", json))
|
||||
json.contains("themeName") ->
|
||||
successLive.postValue(Pair("theme", json))
|
||||
json.contains("urlRule") && json.contains("showRule") ->
|
||||
successLive.postValue(Pair("dictRule", json))
|
||||
json.contains("name") && json.contains("rule") ->
|
||||
successLive.postValue(Pair("txtRule", json))
|
||||
json.contains("name") && json.contains("url") ->
|
||||
successLive.postValue(Pair("httpTts", json))
|
||||
map.containsKey("bookSourceUrl") ->
|
||||
successLive.postValue("bookSource" to uri.toString())
|
||||
|
||||
map.containsKey("sourceUrl") ->
|
||||
successLive.postValue("rssSource" to uri.toString())
|
||||
|
||||
map.containsKey("pattern") ->
|
||||
successLive.postValue("replaceRule" to uri.toString())
|
||||
|
||||
map.containsKey("themeName") ->
|
||||
successLive.postValue("theme" to uri.toString())
|
||||
|
||||
map.containsKey("showRule") ->
|
||||
successLive.postValue("dictRule" to uri.toString())
|
||||
|
||||
map.containsKey("name") && map.containsKey("rule") ->
|
||||
successLive.postValue("txtRule" to uri.toString())
|
||||
|
||||
map.containsKey("name") && map.containsKey("url") ->
|
||||
successLive.postValue("httpTts" to uri.toString())
|
||||
|
||||
else -> errorLive.postValue("格式不对")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -19,6 +20,9 @@ import io.legado.app.utils.fromJsonObject
|
||||
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 ImportDictRuleViewModel(app: Application) : BaseViewModel(app) {
|
||||
|
||||
@@ -82,12 +86,19 @@ class ImportDictRuleViewModel(app: Application) : BaseViewModel(app) {
|
||||
allSources.add(it)
|
||||
}
|
||||
}
|
||||
|
||||
text.isJsonArray() -> GSON.fromJsonArray<DictRule>(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))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.base.BaseViewModel
|
||||
import io.legado.app.constant.AppConst
|
||||
@@ -17,7 +18,10 @@ 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 io.legado.app.utils.splitNotBlank
|
||||
import splitties.init.appCtx
|
||||
|
||||
class ImportReplaceRuleViewModel(app: Application) : BaseViewModel(app) {
|
||||
var isAddGroup = false
|
||||
@@ -102,6 +106,10 @@ class ImportReplaceRuleViewModel(app: Application) : BaseViewModel(app) {
|
||||
allRules.add(rule)
|
||||
}
|
||||
|
||||
text.isUri() -> {
|
||||
importAwait(text.toUri().readText(appCtx))
|
||||
}
|
||||
|
||||
else -> throw NoStackTraceException("格式不对")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.legado.app.ui.association
|
||||
|
||||
import android.app.Application
|
||||
import androidx.core.net.toUri
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.jayway.jsonpath.JsonPath
|
||||
import io.legado.app.R
|
||||
@@ -22,8 +23,11 @@ import io.legado.app.utils.fromJsonObject
|
||||
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.jsonPath
|
||||
import io.legado.app.utils.readText
|
||||
import io.legado.app.utils.splitNotBlank
|
||||
import splitties.init.appCtx
|
||||
|
||||
class ImportRssSourceViewModel(app: Application) : BaseViewModel(app) {
|
||||
var isAddGroup = false
|
||||
@@ -135,6 +139,10 @@ class ImportRssSourceViewModel(app: Application) : BaseViewModel(app) {
|
||||
importSourceUrl(mText)
|
||||
}
|
||||
|
||||
mText.isUri() -> {
|
||||
importSource(mText.toUri().readText(appCtx))
|
||||
}
|
||||
|
||||
else -> throw NoStackTraceException(context.getString(R.string.wrong_format))
|
||||
}
|
||||
}.onError {
|
||||
|
||||
@@ -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
|
||||
@@ -12,7 +13,15 @@ import io.legado.app.help.http.decompressed
|
||||
import io.legado.app.help.http.newCallResponseBody
|
||||
import io.legado.app.help.http.okHttpClient
|
||||
import io.legado.app.help.http.text
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.fromJsonArray
|
||||
import io.legado.app.utils.fromJsonObject
|
||||
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 ImportThemeViewModel(app: Application) : BaseViewModel(app) {
|
||||
|
||||
@@ -74,13 +83,20 @@ class ImportThemeViewModel(app: Application) : BaseViewModel(app) {
|
||||
allSources.add(it)
|
||||
}
|
||||
}
|
||||
|
||||
text.isJsonArray() -> GSON.fromJsonArray<ThemeConfig.Config>(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))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -19,6 +20,9 @@ import io.legado.app.utils.fromJsonObject
|
||||
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 ImportTxtTocRuleViewModel(app: Application) : BaseViewModel(app) {
|
||||
|
||||
@@ -82,13 +86,20 @@ class ImportTxtTocRuleViewModel(app: Application) : BaseViewModel(app) {
|
||||
allSources.add(it)
|
||||
}
|
||||
}
|
||||
|
||||
text.isJsonArray() -> GSON.fromJsonArray<TxtTocRule>(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))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user