
cohort.CohortIdProvider.kt Maven / Gradle / Ivy
package com.amplitude.experiment.cohort
import com.amplitude.experiment.evaluation.FlagConfig
import com.amplitude.experiment.evaluation.UserPropertyFilter
internal const val COHORT_PROP_KEY = "userdata_cohort"
internal typealias CohortIdProvider = () -> Set
internal fun Collection.getCohortIds(): Set {
val cohortIds = mutableSetOf()
for (flag in this) {
cohortIds += flag.getCohortIds()
}
return cohortIds
}
internal fun FlagConfig.getCohortIds(): Set {
val cohortIds = mutableSetOf()
for (filter in this.allUsersTargetingConfig.conditions) {
if (filter.isCohortFilter()) {
cohortIds += filter.values
}
}
val customSegments = this.customSegmentTargetingConfigs ?: listOf()
for (segment in customSegments) {
for (filter in segment.conditions) {
if (filter.isCohortFilter()) {
cohortIds += filter.values
}
}
}
return cohortIds
}
private fun UserPropertyFilter.isCohortFilter(): Boolean = this.prop == COHORT_PROP_KEY
© 2015 - 2025 Weber Informatics LLC | Privacy Policy