11from abc import ABC , abstractmethod
22from dataclasses import dataclass
3- from typing import Callable , Generic , Iterable , Optional , TypeVar
3+ from typing import Iterable , Optional
44
55from OTAnalytics .domain .section import SectionId
66
@@ -84,44 +84,15 @@ class FlowListObserver(ABC):
8484 @abstractmethod
8585 def notify_flows (self , flows : list [FlowId ]) -> None :
8686 """
87- Notifies that the given flows have been added or removed .
87+ Notifies that the given flows have been added or updated .
8888
89- Args:
90- flows (list[FlowId]): list of added or removed flows
91- """
92- pass
93-
94-
95- VALUE = TypeVar ("VALUE" )
96-
97- FlowChangedObserver = Callable [[FlowId ], None ]
98-
99-
100- class FlowChangedSubject (Generic [VALUE ]):
101- """
102- Helper class to handle and notify observers
103- """
104-
105- def __init__ (self ) -> None :
106- self .observers : set [FlowChangedObserver ] = set ()
107-
108- def register (self , observer : FlowChangedObserver ) -> None :
109- """
110- Listen to events.
111-
112- Args:
113- observer (FlowChangedObserver): listener to add
114- """
115- self .observers .add (observer )
116-
117- def notify (self , value : FlowId ) -> None :
118- """
119- Notifies observers about the changed value.
89+ An empty list indicates that flows have been removed.
12090
12191 Args:
122- value (FlowId): changed value
92+ flows (list[FlowId]): list of added or updated flows, empty if flows
93+ have been removed
12394 """
124- [ observer ( value ) for observer in self . observers ]
95+ pass
12596
12697
12798class FlowListSubject :
@@ -146,7 +117,8 @@ def notify(self, flows: list[FlowId]) -> None:
146117 Notifies observers about the list of flows.
147118
148119 Args:
149- flows (list[FlowId]): list of added flows
120+ flows (list[FlowId]): list of added or updated flows, empty if flows
121+ have been removed
150122 """
151123 [observer .notify_flows (flows ) for observer in self .observers ]
152124
@@ -156,14 +128,10 @@ def __init__(self) -> None:
156128 self ._flows : dict [FlowId , Flow ] = {}
157129 self ._current_id = 0
158130 self ._repository_content_observers : FlowListSubject = FlowListSubject ()
159- self ._flow_content_observers : FlowChangedSubject = FlowChangedSubject ()
160131
161132 def register_flows_observer (self , observer : FlowListObserver ) -> None :
162133 self ._repository_content_observers .register (observer )
163134
164- def register_flow_changed_observer (self , observer : FlowChangedObserver ) -> None :
165- self ._flow_content_observers .register (observer )
166-
167135 def get_id (self ) -> FlowId :
168136 """
169137 Get an id for a new flow
@@ -219,7 +187,7 @@ def remove(self, flow_id: FlowId) -> None:
219187
220188 def update (self , flow : Flow ) -> None :
221189 self ._flows [flow .id ] = flow
222- self ._flow_content_observers .notify (flow .id )
190+ self ._repository_content_observers .notify ([ flow .id ] )
223191
224192 def get (self , flow_id : FlowId ) -> Optional [Flow ]:
225193 return self ._flows .get (flow_id )
0 commit comments