|
9 | 9 | class AsyncFlagValueChangeListener: |
10 | 10 | """Calls the user's listener when a specific flag's evaluated value changes for a specific context.""" |
11 | 11 |
|
12 | | - def __init__(self, key: str, context: Context, listener: Callable[[FlagValueChange], None], eval_fn: Callable, scheduler: AsyncCallbackScheduler): |
| 12 | + def __init__(self, key: str, context: Context, listener: Callable[[FlagValueChange], None], eval_fn: Callable, scheduler: AsyncCallbackScheduler, value: Any): |
13 | 13 | self.__key = key |
14 | 14 | self.__context = context |
15 | 15 | self.__listener = listener |
16 | 16 | self.__eval_fn = eval_fn |
17 | 17 | self.__scheduler = scheduler |
18 | 18 |
|
19 | 19 | self.__lock = AsyncLock() |
20 | | - self.__value: Any = None |
| 20 | + self.__value = value |
21 | 21 |
|
22 | 22 | @classmethod |
23 | 23 | async def create(cls, key: str, context: Context, listener: Callable[[FlagValueChange], None], eval_fn: Callable, scheduler: AsyncCallbackScheduler) -> 'AsyncFlagValueChangeListener': |
24 | 24 | """Evaluates the flag once to capture the baseline value, then returns the listener.""" |
25 | | - instance = cls(key, context, listener, eval_fn, scheduler) |
26 | | - instance.__value = await eval_fn(key, context) |
27 | | - return instance |
| 25 | + value = await eval_fn(key, context) |
| 26 | + return cls(key, context, listener, eval_fn, scheduler, value) |
28 | 27 |
|
29 | 28 | def __call__(self, flag_change: FlagChange): |
30 | 29 | self.__scheduler.call(self._on_flag_change, flag_change) |
|
0 commit comments