Parcourir la source

command for adding a linked device

Josia il y a 3 ans
Parent
commit
8ba5173477
2 fichiers modifiés avec 20 ajouts et 0 suppressions
  1. 3 0
      mausignald/signald.py
  2. 17 0
      mautrix_signal/commands/auth.py

+ 3 - 0
mausignald/signald.py

@@ -307,6 +307,9 @@ class SignaldClient(SignaldRPCClient):
         resp = await self.request_v1("get_linked_devices", account=username)
         return [DeviceInfo.deserialize(dev) for dev in resp.get("devices", [])]
 
+    async def add_linked_device(self, username: str, uri: str) -> None:
+        await self.request_v1("add_device", account=username, uri=uri)
+
     async def remove_linked_device(self, username: str, device_id: int) -> None:
         await self.request_v1("remove_linked_device", account=username, deviceId=device_id)
 

+ 17 - 0
mautrix_signal/commands/auth.py

@@ -190,6 +190,23 @@ async def list_devices(evt: CommandEvent) -> None:
     )
 
 
+@command_handler(
+    needs_auth=True,
+    management_only=True,
+    help_section=SECTION_AUTH,
+    help_text="Add a linked device",
+)
+async def add_linked_device(evt: CommandEvent) -> EventID:
+    if len(evt.args) == 0:
+        return await evt.reply("**Usage:** `$cmdprefix+sp add-linked-device <link from QR-Code>`")
+    uri = evt.args[0]
+    try:
+        await evt.bridge.signal.add_linked_device(evt.sender.username, uri)
+    except AuthorizationFailedException as e:
+        return await evt.reply(f"{e} Only the primary device can add linked devices.")
+    return await evt.reply("Device added")
+
+
 @command_handler(
     needs_auth=True,
     management_only=True,