Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 364176e7 authored by dev-12's avatar dev-12
Browse files

bugfix: avoid (de)serializer of protobuf fields

it is not supported by gson and will cause `
java.lang.IllegalArgumentException: field <field_name> has type com.google.protobuf.*, got java.util.ArrayList
`.

it is not needed/intended anyway.
parent 193b5d5d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import foundation.e.apps.BuildConfig
import foundation.e.apps.utils.ProtobufExclusionStrategy
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
@@ -105,6 +106,7 @@ object CommonUtilsModule {
    fun provideGsonInstance(): Gson {
        return GsonBuilder()
            .excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.STATIC)
            .addDeserializationExclusionStrategy(ProtobufExclusionStrategy)
            .create()
    }

+17 −0
Original line number Diff line number Diff line
package foundation.e.apps.utils

import com.google.gson.ExclusionStrategy
import com.google.gson.FieldAttributes

object ProtobufExclusionStrategy : ExclusionStrategy {

    override fun shouldSkipField(field: FieldAttributes?): Boolean {
        if (field == null) return false
        val protobufClass = "com.google.protobuf"

        return field.declaredType.typeName.startsWith(protobufClass) ||
                field.declaringClass.typeName.startsWith(protobufClass)
    }

    override fun shouldSkipClass(clazz: Class<*>?): Boolean = false
}