changeset 1560:84f312be53b4

browser (calls): handle "ringing" info message and update status when received
author Goffi <goffi@goffi.org>
date Wed, 16 Aug 2023 18:34:07 +0200
parents 410064b31dca
children 7dbb131bbb9e
files libervia/web/pages/calls/_browser/__init__.py libervia/web/server/server.py
diffstat 2 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libervia/web/pages/calls/_browser/__init__.py	Wed Aug 16 16:52:53 2023 +0200
+++ b/libervia/web/pages/calls/_browser/__init__.py	Wed Aug 16 18:34:07 2023 +0200
@@ -14,7 +14,7 @@
 profile = window.profile or ""
 bridge = Bridge()
 GATHER_TIMEOUT = 10000
-ALLOWED_STATUSES = (None, "dialing")
+ALLOWED_STATUSES = (None, "dialing", "ringing")
 AUDIO = "audio"
 VIDEO = "video"
 ALLOWED_CALL_MODES = {AUDIO, VIDEO}
@@ -40,6 +40,7 @@
         self.call_status_tpl = Template("call/call_status.html")
         self.audio_player_elt = document["audio_player"]
         bridge.register_signal("action_new", self._on_action_new)
+        bridge.register_signal("call_info", self._on_call_info)
         bridge.register_signal("call_setup", self._on_call_setup)
         bridge.register_signal("call_ended", self._on_call_ended)
 
@@ -225,6 +226,12 @@
             return
         aio.run(self.end_call(json.loads(data_s)))
 
+    def _on_call_info(self, session_id: str, info_type, info_data_s: str, profile: str):
+        if self.sid != session_id:
+            return
+        if info_type == "ringing":
+            self.status = "ringing"
+
     def _on_call_setup(self, session_id: str, setup_data_s: str, profile: str) -> None:
         """Called when we have received answer SDP from responder
 
--- a/libervia/web/server/server.py	Wed Aug 16 16:52:53 2023 +0200
+++ b/libervia/web/server/server.py	Wed Aug 16 18:34:07 2023 +0200
@@ -578,6 +578,9 @@
             "call_setup", partial(self.on_signal, "call_setup"), "plugin"
         )
         self.bridge.register_signal(
+            "call_info", partial(self.on_signal, "call_info"), "plugin"
+        )
+        self.bridge.register_signal(
             "call_ended", partial(self.on_signal, "call_ended"), "plugin"
         )
         self.bridge.register_signal(