| Total Complexity | 7 |
| Total Lines | 25 |
| Duplicated Lines | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
| 1 | #!/usr/bin/env python |
||
| 15 | class Store(object): |
||
| 16 | |||
| 17 | @property |
||
| 18 | def state(self) -> Optional[State]: |
||
| 19 | return self.__state |
||
| 20 | |||
| 21 | def __init__(self, reducer: Reducer, initial_state: Optional[State] = None) -> None: |
||
| 22 | self.__observer = [] |
||
| 23 | self.__state = initial_state |
||
| 24 | self.__reducer = reducer |
||
| 25 | |||
| 26 | def add_observer(self, observer: Callable[["Store"], None]) -> None: |
||
| 27 | self.__observer.append(observer) |
||
| 28 | observer(self) |
||
| 29 | |||
| 30 | def remove_observer(self, observer: Callable[["Store"], None]) -> None: |
||
| 31 | self.__observer.remove(observer) |
||
| 32 | |||
| 33 | def dispatch(self, action: Action) -> None: |
||
| 34 | new_state = self.__reducer.reduce(self.state, action) |
||
| 35 | if new_state != self.__state: |
||
| 36 | log.info(action.__class__.__name__) |
||
| 37 | self.__state = new_state |
||
| 38 | for curr_observer in self.__observer: |
||
| 39 | curr_observer(self) |
||
| 40 |