Improve and condense related controls
This commit is contained in:
@@ -32,6 +32,7 @@ class WhatsAppClient(ClientBase):
|
||||
self._accounts = []
|
||||
self._chat_presence = None
|
||||
self._chat_presence_media = None
|
||||
self._last_pair_request = 0
|
||||
|
||||
self.enabled = bool(
|
||||
str(getattr(settings, "WHATSAPP_ENABLED", "false")).lower()
|
||||
@@ -120,8 +121,39 @@ class WhatsAppClient(ClientBase):
|
||||
|
||||
# Keep task alive so state/callbacks remain active.
|
||||
while not self._stopping:
|
||||
await self._sync_pair_request()
|
||||
await asyncio.sleep(1)
|
||||
|
||||
async def _sync_pair_request(self):
|
||||
state = transport.get_runtime_state(self.service)
|
||||
requested_at = int(state.get("pair_requested_at") or 0)
|
||||
if requested_at <= 0 or requested_at <= self._last_pair_request:
|
||||
return
|
||||
self._last_pair_request = requested_at
|
||||
self._publish_state(
|
||||
connected=False,
|
||||
pair_qr="",
|
||||
warning="Waiting for WhatsApp QR from Neonize.",
|
||||
)
|
||||
|
||||
if self._client is None:
|
||||
return
|
||||
|
||||
try:
|
||||
if hasattr(self._client, "disconnect"):
|
||||
await self._maybe_await(self._client.disconnect())
|
||||
except Exception as exc:
|
||||
self.log.warning("whatsapp disconnect before pairing failed: %s", exc)
|
||||
|
||||
try:
|
||||
await self._maybe_await(self._client.connect())
|
||||
except Exception as exc:
|
||||
self._publish_state(
|
||||
connected=False,
|
||||
warning=f"WhatsApp pairing refresh failed: {exc}",
|
||||
)
|
||||
self.log.warning("whatsapp pairing refresh failed: %s", exc)
|
||||
|
||||
def _register_event(self, event_cls, callback):
|
||||
if event_cls is None:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user