All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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