@@ -54,8 +54,8 @@ def __init__(
5454 msg = create_sync_message (ydoc )
5555 self ._comm .send (buffers = [msg ])
5656 self ._comm .on_msg (self ._receive )
57- self . _subscription_id = ydoc .observe (self ._bufferize )
58- self ._updates : list [bytes ] = []
57+ ydoc .observe (self ._bufferize )
58+ self ._updates : list [bytes ] | None = []
5959
6060 @property
6161 def awareness (self ) -> Awareness :
@@ -69,19 +69,20 @@ def _receive(self, msg):
6969 if reply is not None :
7070 self ._comm .send (buffers = [reply ])
7171 if message [1 ] == YSyncMessageType .SYNC_STEP2 :
72- self ._ydoc . unobserve ( self . _subscription_id )
72+ assert self ._updates is not None
7373 for update in self ._updates :
7474 message = create_update_message (update )
7575 self ._comm .send (buffers = [message ])
76- self ._updates . clear ()
77- self ._subscription_id = self . _ydoc .observe (self ._send )
76+ self ._updates = None
77+ self ._ydoc .observe (self ._send )
7878 case YMessageType .AWARENESS :
7979 # Same as pycrdt.websocket.yroom: strip Y message kind, decode body.
8080 update = read_message (message [1 :])
8181 self ._awareness .apply_awareness_update (update , None )
8282
8383 def _bufferize (self , event : TransactionEvent ):
84- self ._updates .append (event .update )
84+ if self ._updates is not None :
85+ self ._updates .append (event .update )
8586
8687 def _send (self , event : TransactionEvent ):
8788 message = create_update_message (event .update )
0 commit comments