Quellcode durchsuchen

Add another error type to detect disconnects

Signed-off-by: Sumner Evans <sumner@beeper.com>
Max Sandholm vor 2 Jahren
Ursprung
Commit
887220c202
2 geänderte Dateien mit 7 neuen und 2 gelöschten Zeilen
  1. 5 0
      mausignald/errors.py
  2. 2 2
      mausignald/signald.py

+ 5 - 0
mausignald/errors.py

@@ -110,6 +110,10 @@ class ProfileUnavailableError(ResponseError):
     pass
 
 
+class NoSuchAccountError(ResponseError):
+    pass
+
+
 response_error_types = {
     "invalid_request": RequestValidationFailure,
     "TimeoutException": TimeoutException,
@@ -124,6 +128,7 @@ response_error_types = {
     "OwnProfileKeyDoesNotExistError": OwnProfileKeyDoesNotExistError,
     "UnregisteredUserError": UnregisteredUserError,
     "ProfileUnavailableError": ProfileUnavailableError,
+    "NoSuchAccountError": NoSuchAccountError,
     # TODO add rest from https://gitlab.com/signald/signald/-/tree/main/src/main/java/io/finn/signald/clientprotocol/v1/exceptions
 }
 

+ 2 - 2
mausignald/signald.py

@@ -11,7 +11,7 @@ import asyncio
 
 from mautrix.util.logging import TraceLogger
 
-from .errors import AuthorizationFailedError, RPCError, UnexpectedResponse
+from .errors import AuthorizationFailedError, NoSuchAccountError, RPCError, UnexpectedResponse
 from .rpc import CONNECT_EVENT, DISCONNECT_EVENT, SignaldRPCClient
 from .types import (
     Account,
@@ -131,7 +131,7 @@ class SignaldClient(SignaldRPCClient):
         except RPCError as e:
             self.log.debug("Failed to subscribe to %s: %s", username, e)
             state = WebsocketConnectionState.DISCONNECTED
-            if isinstance(e, AuthorizationFailedError):
+            if isinstance(e, (AuthorizationFailedError, NoSuchAccountError)):
                 state = WebsocketConnectionState.AUTHENTICATION_FAILED
             evt = WebsocketConnectionStateChangeEvent(state=state, account=username)
             await self._run_event_handler(evt)