diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt index 6e1c98db2..73293a824 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt @@ -11,6 +11,7 @@ import io.legado.app.help.http.HttpHelper import io.legado.app.help.storage.OldRule import io.legado.app.help.storage.Restore.jsonPath import io.legado.app.utils.* +import kotlinx.coroutines.Dispatchers import java.io.File class BookSourceViewModel(application: Application) : BaseViewModel(application) { @@ -130,7 +131,7 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application) } fun importSource(text: String) { - execute { + execute(context = Dispatchers.Main) { val text1 = text.trim() if (text1.isJsonObject()) { val json = JsonPath.parse(text1) diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt index 79bf0f9f5..ae6e8c739 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditViewModel.kt @@ -9,6 +9,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.RssSource import io.legado.app.utils.GSON import io.legado.app.utils.fromJsonObject +import kotlinx.coroutines.Dispatchers class RssSourceEditViewModel(application: Application) : BaseViewModel(application) { @@ -50,7 +51,7 @@ class RssSourceEditViewModel(application: Application) : BaseViewModel(applicati } fun pasteSource(onSuccess: (source: RssSource) -> Unit) { - execute { + execute(context = Dispatchers.Main) { var source: RssSource? = null val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager? clipboard?.primaryClip?.let { diff --git a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt index d81ef7ac6..13b105618 100644 --- a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt @@ -2,6 +2,7 @@ package io.legado.app.utils import com.google.gson.Gson import com.google.gson.GsonBuilder +import com.google.gson.JsonSyntaxException import com.google.gson.reflect.TypeToken import org.jetbrains.anko.attempt import java.lang.reflect.ParameterizedType @@ -16,6 +17,8 @@ val GSON: Gson by lazy { inline fun genericType() = object : TypeToken() {}.type + +@Throws(JsonSyntaxException::class) inline fun Gson.fromJsonObject(json: String?): T? {//可转成任意类型 return attempt { val result: T? = fromJson(json, genericType()) @@ -23,6 +26,7 @@ inline fun Gson.fromJsonObject(json: String?): T? {//可转成任意 }.value } +@Throws(JsonSyntaxException::class) inline fun Gson.fromJsonArray(json: String?): List? { return attempt { val result: List? = fromJson(json, ParameterizedTypeImpl(T::class.java))