diff --git a/app/src/main/java/de/kuschku/quasseldroid/defaults/DefaultNetworks.kt b/app/src/main/java/de/kuschku/quasseldroid/defaults/DefaultNetworks.kt index bd6b22942d43e4c19c9f25ff15aca38dac6e137d..b0f559d82bb20f2e9e95bb483640951e8e63120e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/defaults/DefaultNetworks.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/defaults/DefaultNetworks.kt @@ -21,7 +21,7 @@ package de.kuschku.quasseldroid.defaults import android.content.Context import com.google.gson.Gson -import de.kuschku.quasseldroid.util.helper.fromJson +import de.kuschku.quasseldroid.util.helper.fromJsonList import java.io.IOException import javax.inject.Inject @@ -29,7 +29,7 @@ class DefaultNetworks @Inject constructor(context: Context, gson: Gson) { val networks: List<DefaultNetwork> by lazy { try { context.assets.open("networks.json").use { - gson.fromJson(it.bufferedReader(Charsets.UTF_8)) + gson.fromJsonList(it.bufferedReader(Charsets.UTF_8)) } } catch (e: IOException) { throw IllegalStateException("networks.json missing from assets.", e) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/AndroidEmojiProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/util/AndroidEmojiProvider.kt index e0eea29ac6c6712f68f80dcd56863462b4cffabb..a7510c71aa210e7928346def1de61134c1666554 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/AndroidEmojiProvider.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/AndroidEmojiProvider.kt @@ -23,13 +23,13 @@ import android.content.Context import com.google.gson.Gson import de.kuschku.quasseldroid.util.emoji.EmojiHandler import de.kuschku.quasseldroid.util.emoji.EmojiProvider -import de.kuschku.quasseldroid.util.helper.fromJson +import de.kuschku.quasseldroid.util.helper.fromJsonList import java.io.IOException class AndroidEmojiProvider(context: Context, gson: Gson) : EmojiProvider { override val emoji: List<EmojiHandler.Emoji> = try { context.assets.open("emoji.json").use { - gson.fromJson(it.bufferedReader(Charsets.UTF_8)) + gson.fromJsonList(it.bufferedReader(Charsets.UTF_8)) } } catch (e: IOException) { throw IllegalStateException("emoji.json missing from assets.", e) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt index 0c7657f404ad09c3ee90991dd675a5b5022a65a3..6789a0c30689db87f847473e1fc2a48af16adf38 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/GsonHelper.kt @@ -24,26 +24,20 @@ import com.google.gson.JsonElement import com.google.gson.reflect.TypeToken import java.io.Reader +inline fun <reified T> Gson.fromJsonList(jsonElement: JsonElement): T = + this.fromJson(jsonElement, object : TypeToken<T>() {}.type) + +inline fun <reified T> Gson.fromJsonList(reader: Reader): T = + this.fromJson(reader, object : TypeToken<T>() {}.type) + +inline fun <reified T> Gson.fromJsonList(text: String): T = + this.fromJson(text, object : TypeToken<T>() {}.type) + inline fun <reified T> Gson.fromJson(jsonElement: JsonElement): T = - if (T::class.java.typeParameters.isEmpty()) { - this.fromJson(jsonElement, T::class.java) - } else { - val type = object : TypeToken<T>() {}.type - this.fromJson(jsonElement, type) - } + this.fromJson(jsonElement, T::class.java) inline fun <reified T> Gson.fromJson(reader: Reader): T = - if (T::class.java.typeParameters.isEmpty()) { - this.fromJson(reader, T::class.java) - } else { - val type = object : TypeToken<T>() {}.type - this.fromJson(reader, type) - } + this.fromJson(reader, T::class.java) inline fun <reified T> Gson.fromJson(text: String): T = - if (T::class.java.typeParameters.isEmpty()) { - this.fromJson(text, T::class.java) - } else { - val type = object : TypeToken<T>() {}.type - this.fromJson(text, type) - } + this.fromJson(text, T::class.java)