Browse Source

call notifications: use m.notice for hang up

Sumner Evans 3 years ago
parent
commit
944ddd255a
1 changed files with 13 additions and 7 deletions
  1. 13 7
      mautrix_signal/signal.py

+ 13 - 7
mautrix_signal/signal.py

@@ -19,6 +19,7 @@ from typing import TYPE_CHECKING
 import asyncio
 import asyncio
 import logging
 import logging
 
 
+from mautrix.types import MessageType
 from mautrix.util.logging import TraceLogger
 from mautrix.util.logging import TraceLogger
 
 
 from mausignald import SignaldClient
 from mausignald import SignaldClient
@@ -26,6 +27,7 @@ from mausignald.types import (
     Address,
     Address,
     Message,
     Message,
     MessageData,
     MessageData,
+    OfferMessageType,
     OwnReadReceipt,
     OwnReadReceipt,
     Receipt,
     Receipt,
     ReceiptType,
     ReceiptType,
@@ -154,17 +156,20 @@ class SignalHandler(SignaldClient):
             await portal.handle_signal_delete(sender, msg.remote_delete.target_sent_timestamp)
             await portal.handle_signal_delete(sender, msg.remote_delete.target_sent_timestamp)
 
 
     @staticmethod
     @staticmethod
-    async def handle_call_message(user: 'u.User', sender: 'pu.Puppet', msg: Message) -> None:
+    async def handle_call_message(user: "u.User", sender: "pu.Puppet", msg: Message) -> None:
         assert msg.call_message
         assert msg.call_message
         portal = await po.Portal.get_by_chat_id(
         portal = await po.Portal.get_by_chat_id(
             sender.address, receiver=user.username, create=True
             sender.address, receiver=user.username, create=True
         )
         )
         if not portal.mxid:
         if not portal.mxid:
-            await portal.create_matrix_room(user, (msg.group_v2 or msg.group
-                                                   or addr_override or sender.address))
+            await portal.create_matrix_room(
+                user, (msg.group_v2 or msg.group or addr_override or sender.address)
+            )
             if not portal.mxid:
             if not portal.mxid:
-                user.log.debug(f"Failed to create room for incoming message {msg.timestamp},"
-                               " dropping message")
+                user.log.debug(
+                    f"Failed to create room for incoming message {msg.timestamp},"
+                    " dropping message"
+                )
                 return
                 return
 
 
         msg_html = f'<a href="https://matrix.to/#/{sender.mxid}">{sender.name}</a>'
         msg_html = f'<a href="https://matrix.to/#/{sender.mxid}">{sender.name}</a>'
@@ -176,14 +181,15 @@ class SignalHandler(SignaldClient):
             msg_html += (
             msg_html += (
                 f" started a{call_type}call on Signal. Use the native app to answer the call."
                 f" started a{call_type}call on Signal. Use the native app to answer the call."
             )
             )
+            msg_type = MessageType.TEXT
         elif msg.call_message.hangup_message:
         elif msg.call_message.hangup_message:
             msg_html += " ended a call on Signal."
             msg_html += " ended a call on Signal."
+            msg_type = MessageType.NOTICE
         else:
         else:
             portal.log.debug(f"Unhandled call message. Likely an ICE message. {msg.call_message}")
             portal.log.debug(f"Unhandled call message. Likely an ICE message. {msg.call_message}")
             return
             return
 
 
-        await sender.intent_for(portal).send_text(portal.mxid, html=msg_html)
-
+        await sender.intent_for(portal).send_text(portal.mxid, html=msg_html, msgtype=msg_type)
 
 
     @staticmethod
     @staticmethod
     async def handle_own_receipts(sender: pu.Puppet, receipts: list[OwnReadReceipt]) -> None:
     async def handle_own_receipts(sender: pu.Puppet, receipts: list[OwnReadReceipt]) -> None: