@@ -7,10 +7,13 @@ import com.formbricks.android.extensions.expiresAt
77import com.formbricks.android.extensions.guard
88import com.formbricks.android.logger.Logger
99import com.formbricks.android.model.environment.EnvironmentDataHolder
10+ import com.formbricks.android.model.environment.SegmentFilterResource
11+ import com.formbricks.android.model.environment.SegmentFilterResourceDeserializer
1012import com.formbricks.android.model.environment.Survey
1113import com.formbricks.android.model.error.SDKError
1214import com.formbricks.android.model.user.Display
1315import com.google.gson.Gson
16+ import com.google.gson.GsonBuilder
1417import kotlinx.coroutines.CoroutineScope
1518import kotlinx.coroutines.Dispatchers
1619import kotlinx.coroutines.launch
@@ -36,6 +39,16 @@ object SurveyManager {
3639 private val prefManager by lazy { Formbricks .applicationContext.getSharedPreferences(FORMBRICKS_PREFS , Context .MODE_PRIVATE ) }
3740 internal var filteredSurveys: MutableList <Survey > = mutableListOf ()
3841
42+ // 1) Build your Gson once, registering only the SegmentFilterResource adapter:
43+ val gson = GsonBuilder ()
44+ .registerTypeAdapter(
45+ SegmentFilterResource ::class .java,
46+ SegmentFilterResourceDeserializer ()
47+ )
48+ .create()
49+
50+
51+
3952 private var environmentDataHolderJson: String?
4053 get() {
4154 return prefManager.getString(PREF_FORMBRICKS_DATA_HOLDER , " " )
@@ -57,7 +70,7 @@ object SurveyManager {
5770 synchronized(this ) {
5871 backingEnvironmentDataHolder = environmentDataHolderJson?.let { json ->
5972 try {
60- Gson () .fromJson(json, EnvironmentDataHolder ::class .java)
73+ gson .fromJson(json, EnvironmentDataHolder ::class .java)
6174 } catch (e: Exception ) {
6275 Logger .e(RuntimeException (" Unable to retrieve environment data from the local storage." ))
6376 null
0 commit comments