1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-11-01 19:07:38 +01:00
unleash.unleash/frontend/src/utils/variants.ts
Nuno Góis 4adc977ba0
fix: properly handle flag resolver variants (#3808)
Variants were not being properly handled in the `flag-resolver`: The
fact that the default value of the variant is not falsy made it so we
never asked the external flag resolver for the value.

This also moves the logic from `Variant | undefined` to `Variant` where
we use the `getDefaultVariant()` helper method to return us a [default
variant](55274e4953/src/variant.ts (L37-L42)).
2023-05-18 17:04:55 +01:00

30 lines
616 B
TypeScript

export enum PayloadType {
STRING = 'string',
JSON = 'json',
CSV = 'csv',
}
export interface Payload {
type: PayloadType;
value: string;
}
export interface Variant {
name: string;
enabled: boolean;
payload?: Payload;
}
export const getVariantValue = <T = string>(
variant: Variant | undefined
): T | undefined => {
if (variant?.enabled) {
if (!variant.payload) return variant.name as T;
if (variant.payload.type === PayloadType.JSON) {
return JSON.parse(variant.payload.value) as T;
}
return variant.payload.value as T;
}
};