Skip to content

Commit 23f5e66

Browse files
remove redundant empty type converters
1 parent d670f47 commit 23f5e66

1 file changed

Lines changed: 6 additions & 35 deletions

File tree

data-saver-core/src/commonMain/kotlin/com/funny/data_saver/core/DataSaverConverter.kt

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.funny.data_saver.core
22

3+
import com.funny.data_saver.kmp.Log
34
import kotlin.reflect.KClass
45
import kotlin.reflect.KType
56
import kotlin.reflect.typeOf
@@ -109,53 +110,23 @@ object DataSaverConverter {
109110
}
110111
}
111112

112-
fun <T: Any> findSaver(data: T): ((Any?) -> String)? {
113-
return typeConverters.find { it.accept(data) }?.let {
113+
fun <T> findSaver(data: T): ((Any?) -> String)? {
114+
return typeConverters.findLast { it.accept(data) }?.let {
114115
it::save
115116
}
116117
}
117118

118119
inline fun <reified T> findTypeConverter(data: T): ITypeConverter? {
119-
return typeConverters.find { it.accept(data) }
120+
return typeConverters.findLast { it.accept(data) }.also {
121+
Log.d("DataSaverConverter", "findTypeConverter for data($data): $it")
122+
}
120123
}
121124

122125
fun unsupportedType(data: Any?, action: String = "save"): Nothing =
123126
error("Unable to $action data: type of $data (class: ${if (data == null)"null" else data::class.java} is not supported, please call [registerTypeConverters] at first!")
124127

125128

126129
private fun registerDefaultTypeConverters() {
127-
// kotlin.collections.EmptyList
128-
val emptyList: List<Nothing> = emptyList()
129-
registerTypeConverters(object : ITypeConverter {
130-
override fun save(data: Any?): String {
131-
return "[]"
132-
}
133-
134-
override fun restore(str: String): Any {
135-
return emptyList
136-
}
137-
138-
override fun accept(data: Any?): Boolean {
139-
return data is List<*> && data.isEmpty()
140-
}
141-
})
142-
143-
// kotlin.collections.EmptyMap
144-
val emptyMap = emptyMap<String, Any>()
145-
registerTypeConverters(object : ITypeConverter {
146-
override fun save(data: Any?): String {
147-
return "{}"
148-
}
149-
150-
override fun restore(str: String): Any {
151-
return emptyMap
152-
}
153-
154-
override fun accept(data: Any?): Boolean {
155-
return data is Map<*, *> && data.isEmpty()
156-
}
157-
})
158-
159130
// String
160131
registerTypeConverters<String>(
161132
save = { it },

0 commit comments

Comments
 (0)