package com.myfatoorahreactnative.utils import com.facebook.react.bridge.ReadableMap import com.google.gson.GsonBuilder import com.google.gson.JsonDeserializationContext import com.google.gson.JsonDeserializer import com.google.gson.JsonElement import com.myfatoorah.sdk.enums.MFFontFamily import java.lang.reflect.Type fun handleReadableMap(requestMap: ReadableMap, classOfT: Class): T { var requestJson = requestMap.toString() if (requestJson.contains("{ NativeMap: ")) { requestJson = requestJson.replace("{ NativeMap: ", "") requestJson = requestJson.substring(0, requestJson.length - 1) } val gson = GsonBuilder() .registerTypeAdapter(classOfT, MFJsonAdapterHelper()) .registerTypeAdapter(MFFontFamily::class.java, MFFontFamilyDeserializer()) .create() return gson.fromJson(requestJson, classOfT) } fun convertJsonStringToLowercase(jsonString: String): String { val jsonHelper = MFJsonAdapterHelper() return jsonHelper.convertJsonStringToLowercase(jsonString) } fun convertJsonStringToUppercase(jsonString: String): String { val jsonHelper = MFJsonAdapterHelper() return jsonHelper.convertJsonStringToUppercase(jsonString) } class MFFontFamilyDeserializer : JsonDeserializer { override fun deserialize( json: JsonElement, typeOfT: Type, context: JsonDeserializationContext ): MFFontFamily { return MFFontFamily.getValue(json.asString) } }