diff --git a/fbchat/__init__.py b/fbchat/__init__.py index 9d5e8bb..8dda631 100644 --- a/fbchat/__init__.py +++ b/fbchat/__init__.py @@ -111,7 +111,7 @@ from ._events import ( FriendRequest, Presence, ) -from ._mqtt import Listener +from ._listen import Listener from ._client import Client diff --git a/fbchat/_mqtt.py b/fbchat/_listen.py similarity index 98% rename from fbchat/_mqtt.py rename to fbchat/_listen.py index e61c5bd..4ff4bed 100644 --- a/fbchat/_mqtt.py +++ b/fbchat/_listen.py @@ -153,9 +153,7 @@ class Listener: " events may have been lost" ) self._sync_token = None - self._sequence_id = fetch_sequence_id(self.session) - self._messenger_queue_publish() - # TODO: Signal to the user that they should reload their data! + self._sequence_id = None return False log.error("MQTT error code %s received", error) return False @@ -312,7 +310,7 @@ class Listener: >>> for event in listener.listen(): ... print(event) """ - if not self._sequence_id: + if self._sequence_id is None: self._sequence_id = fetch_sequence_id(self.session) # Make sure we're connected @@ -326,6 +324,12 @@ class Listener: while True: rc = self._mqtt.loop(timeout=1.0) + # The sequence ID was reset in _handle_ms + # TODO: Signal to the user that they should reload their data! + if self._sequence_id is None: + self._sequence_id = fetch_sequence_id(self.session) + self._messenger_queue_publish() + # If disconnect() has been called # Beware, internal API, may have to change this to something more stable! if self._mqtt._state == paho.mqtt.client.mqtt_cs_disconnecting: @@ -349,7 +353,7 @@ class Listener: if self._tmp_events: yield from self._tmp_events - self._tmp_events = None + self._tmp_events = [] def disconnect(self) -> None: """Disconnect the MQTT listener.