Эх сурвалжийг харах

Remove some unnecessary branches

Tulir Asokan 3 жил өмнө
parent
commit
59874a7aa5

+ 20 - 20
mautrix_signal/web/provisioning_api.py

@@ -367,22 +367,23 @@ class ProvisioningAPI:
         contacts = await self.bridge.signal.list_contacts(user.username)
         return web.json_response(
             {
-                str(c.address.number): {
+                c.address.number: {
                     "name": c.name,
-                    "address": Address.serialize(c.address),
+                    "address": c.address.serialize(),
                 }
                 for c in contacts
-                if c.address is not None
+                if c.address and c.address.number
             },
             headers=self._acao_headers,
         )
 
     async def start_pm(self, request: web.Request) -> web.Response:
         user = await self.check_token_and_logged_in(request)
-        number = normalize_number(request.match_info.get("number"))
+        number = normalize_number(request.match_info["number"])
 
         puppet: pu.Puppet = await pu.Puppet.get_by_address(Address(number=number))
-        if not puppet.uuid and user.username:
+        assert puppet, "Puppet.get_by_address with create=True can't return None"
+        if not puppet.uuid:
             try:
                 uuid = await self.bridge.signal.find_uuid(user.username, puppet.number)
                 if uuid:
@@ -393,26 +394,25 @@ class ProvisioningAPI:
             except Exception as e:
                 raise web.HTTPBadRequest(reason=str(e), headers=self._headers)
 
-        if not puppet:
-            error = {"error": f"No puppet was found for {number}"}
-            raise web.HTTPBadRequest(text=json.dumps(error), headers=self._headers)
-
         portal = await po.Portal.get_by_chat_id(
             puppet.address, receiver=user.username, create=True
         )
-        if not portal:
-            error = {"error": f"Failed finding a portal for {puppet.address}"}
-            raise web.HTTPBadRequest(text=json.dumps(error), headers=self._headers)
+        assert portal, "Portal.get_by_chat_id with create=True can't return None"
 
         if portal.mxid:
             await portal.main_intent.invite_user(portal.mxid, user.mxid)
-            error = {
-                "error": f"You already have a PM with {number}",
-                "room_id": f"{portal.mxid}",
-            }
-            raise web.HTTPConflict(text=json.dumps(error), headers=self._headers)
-
-        room_id = await portal.create_matrix_room(user, puppet.address)
-        return web.json_response({"room_id": room_id}, headers=self._acao_headers)
+            just_created = False
+        else:
+            await portal.create_matrix_room(user, puppet.address)
+            just_created = True
+        return web.json_response(
+            {
+                "room_id": portal.mxid,
+                "just_created": just_created,
+                "chat_id": portal.chat_id.serialize(),
+            },
+            headers=self._acao_headers,
+            status=201 if just_created else 200,
+        )
 
     # endregion