Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class FormbricksInstrumentedTest {
assertNotNull("Should have click_demo_button action class", clickDemoButtonAction)

val triggers = firstSurveyBeforeTrack?.triggers ?: listOf()
val matchingTrigger = triggers.firstOrNull { it.actionClass?.id == clickDemoButtonAction?.id }
val matchingTrigger = triggers.firstOrNull { it.actionClass?.name == clickDemoButtonAction?.name }
assertNotNull("Survey should have matching trigger", matchingTrigger)

// Now track the event
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package com.formbricks.android.manager

import androidx.test.ext.junit.runners.AndroidJUnit4
import com.formbricks.android.Formbricks
import com.formbricks.android.model.environment.*
import com.formbricks.android.model.user.Display
import org.junit.Assert.*
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import java.util.Date
import java.util.concurrent.TimeUnit

@RunWith(AndroidJUnit4::class)
class SurveyManagerInstrumentedTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@ import com.formbricks.android.extensions.expiresAt
import com.formbricks.android.extensions.guard
import com.formbricks.android.logger.Logger
import com.formbricks.android.model.environment.EnvironmentDataHolder
import com.formbricks.android.model.environment.SegmentFilterResource
import com.formbricks.android.model.environment.SegmentFilterResourceDeserializer
import com.formbricks.android.model.environment.Survey
import com.formbricks.android.model.error.SDKError
import com.formbricks.android.model.user.Display
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand All @@ -36,6 +39,16 @@ object SurveyManager {
private val prefManager by lazy { Formbricks.applicationContext.getSharedPreferences(FORMBRICKS_PREFS, Context.MODE_PRIVATE) }
internal var filteredSurveys: MutableList<Survey> = mutableListOf()

// 1) Build your Gson once, registering only the SegmentFilterResource adapter:
val gson = GsonBuilder()
.registerTypeAdapter(
SegmentFilterResource::class.java,
SegmentFilterResourceDeserializer()
)
.create()



private var environmentDataHolderJson: String?
get() {
return prefManager.getString(PREF_FORMBRICKS_DATA_HOLDER, "")
Expand All @@ -57,7 +70,7 @@ object SurveyManager {
synchronized(this) {
backingEnvironmentDataHolder = environmentDataHolderJson?.let { json ->
try {
Gson().fromJson(json, EnvironmentDataHolder::class.java)
gson.fromJson(json, EnvironmentDataHolder::class.java)
} catch (e: Exception) {
Logger.e(RuntimeException("Unable to retrieve environment data from the local storage."))
null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,5 @@ import kotlinx.serialization.Serializable

@Serializable
data class ActionClassReference(
@SerializedName("id") val id: String?,
@SerializedName("name") val name: String?
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.formbricks.android.model.environment

import com.google.gson.*
import com.google.gson.reflect.TypeToken
import java.lang.reflect.Type

class SegmentFilterResourceDeserializer : JsonDeserializer<SegmentFilterResource> {
override fun deserialize(
json: JsonElement,
typeOfT: Type,
context: JsonDeserializationContext
): SegmentFilterResource {
return if (json.isJsonArray) {
// JSON is an array → treat it as a Group
val listType = object : TypeToken<List<SegmentFilter>>() {}.type
val filters: List<SegmentFilter> = context.deserialize(json, listType)
SegmentFilterResource.Group(filters)
} else {
// JSON is an object → treat it as a Primitive
val prim: SegmentPrimitiveFilter =
context.deserialize(json, SegmentPrimitiveFilter::class.java)
SegmentFilterResource.Primitive(prim)
}
}
}
1 change: 1 addition & 0 deletions sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ sonar.coverage.exclusions=**/test/**/*,**/androidTest/**/*,**/*.js,**/*.json,\
**/*_Factory.kt,\
**/*_MembersInjector.kt,\
**/FormbricksAPIError.kt,\
**/network/FormbricksService.kt,\
**/Logger.kt,\
**/Guard.kt,\
**/DateExtensions.kt,\
Expand Down
Loading