kunfei 4 лет назад
Родитель
Сommit
f37d72c0e1

+ 2 - 2
app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt

@@ -328,7 +328,7 @@ object ReadBookConfig {
         }
 
     fun getExportConfig(): Config {
-        val exportConfig = durConfig.deepCopy()
+        val exportConfig = durConfig.copy()
         if (shareLayout) {
             exportConfig.textFont = shareConfig.textFont
             exportConfig.textBold = shareConfig.textBold
@@ -430,7 +430,7 @@ object ReadBookConfig {
     }
 
     @Keep
-    class Config(
+    data class Config(
         var name: String = "",
         var bgStr: String = "#EEEEEE",//白天背景
         var bgStrNight: String = "#000000",//夜间背景

+ 1 - 1
app/src/main/java/io/legado/app/help/config/ThemeConfig.kt

@@ -249,7 +249,7 @@ object ThemeConfig {
     }
 
     @Keep
-    class Config(
+    data class Config(
         var themeName: String,
         var isNightTheme: Boolean,
         var primaryColor: String,

+ 4 - 0
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt

@@ -9,6 +9,10 @@ import io.legado.app.utils.*
 import java.io.File
 import java.io.FileOutputStream
 
+/**
+ * 书源管理数据修改
+ * 修改数据要copy,直接修改会导致界面不刷新
+ */
 class BookSourceViewModel(application: Application) : BaseViewModel(application) {
 
     fun topSource(vararg sources: BookSource) {

+ 4 - 0
app/src/main/java/io/legado/app/ui/replace/ReplaceRuleViewModel.kt

@@ -7,6 +7,10 @@ import io.legado.app.data.appDb
 import io.legado.app.data.entities.ReplaceRule
 import io.legado.app.utils.splitNotBlank
 
+/**
+ * 替换规则数据修改
+ * 修改数据要copy,直接修改会导致界面不刷新
+ */
 class ReplaceRuleViewModel(application: Application) : BaseViewModel(application) {
 
     fun update(vararg rule: ReplaceRule) {

+ 4 - 0
app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceViewModel.kt

@@ -9,6 +9,10 @@ import io.legado.app.help.DefaultData
 import io.legado.app.utils.*
 import java.io.File
 
+/**
+ * 订阅源管理数据修改
+ * 修改数据要copy,直接修改会导致界面不刷新
+ */
 class RssSourceViewModel(application: Application) : BaseViewModel(application) {
 
     fun topSource(vararg sources: RssSource) {

+ 0 - 41
app/src/main/java/io/legado/app/utils/DataExtensions.kt

@@ -1,41 +0,0 @@
-package io.legado.app.utils
-
-import kotlin.reflect.KClass
-import kotlin.reflect.full.memberProperties
-import kotlin.reflect.full.primaryConstructor
-
-@Suppress("UNCHECKED_CAST")
-fun <T : Any> T.deepCopy(): T {
-    //如果不是数据类,直接返回
-    if (!this::class.isData) {
-        return this
-    }
-
-    //拿到构造函数
-    return this::class.primaryConstructor!!.let { primaryConstructor ->
-        //转换类型
-        //memberProperties 返回非扩展属性中的第一个并将构造函数赋值给其
-        //最终value=第一个参数类型的对象
-
-        //如果当前类(这里的当前类指的是参数对应的类型,比如说这里如果非基本类型时)是数据类
-
-        //最终返回一个新的映射map,即返回一个属性值重新组合的map,并调用callBy返回指定的对象
-        primaryConstructor.parameters.associate { parameter ->
-            //转换类型
-            //memberProperties 返回非扩展属性中的第一个并将构造函数赋值给其
-            //最终value=第一个参数类型的对象
-            val value = (this::class as KClass<T>).memberProperties.first {
-                it.name == parameter.name
-            }.get(this)
-
-            //如果当前类(这里的当前类指的是参数对应的类型,比如说这里如果非基本类型时)是数据类
-            if ((parameter.type.classifier as? KClass<*>)?.isData == true) {
-                parameter to value?.deepCopy()
-            } else {
-                parameter to value
-            }
-
-            //最终返回一个新的映射map,即返回一个属性值重新组合的map,并调用callBy返回指定的对象
-        }.let(primaryConstructor::callBy)
-    }
-}