mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-19 05:55:34 +09:00
feat(experiments): target rollouts by guild and premium status (#3012)
This commit is contained in:
1 parent
564c5ae164
commit
eaee820216
22 files changed
+803
-65
No files matched your search
@@ -14,3 +14,18 @@ export function experimentBucket(userId: string, salt: string): number {
|
||||
}
|
||||
return hash % EXPERIMENT_BUCKET_RESOLUTION;
|
||||
}
|
||||
|
||||
export interface ExperimentTargeting {
|
||||
readonly memberGuildIds: ReadonlySet<string>;
|
||||
readonly premium: boolean;
|
||||
}
|
||||
|
||||
interface ExperimentAudienceRules {
|
||||
readonly included_guild_ids: ReadonlyArray<string>;
|
||||
readonly include_premium_users: boolean;
|
||||
}
|
||||
|
||||
export function experimentAudienceIncludes(rules: ExperimentAudienceRules, targeting: ExperimentTargeting): boolean {
|
||||
if (rules.include_premium_users && targeting.premium) return true;
|
||||
return rules.included_guild_ids.some((guildId) => targeting.memberGuildIds.has(guildId));
|
||||
}
|
||||
Reference in new issue
Block a user