mirror of
https://github.com/Unleash/unleash.git
synced 2024-11-01 19:07:38 +01:00
4adc977ba0
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)
).
30 lines
616 B
TypeScript
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;
|
|
}
|
|
};
|