From 94861a3a087bbdb2277be611111d53f44f87d8a2 Mon Sep 17 00:00:00 2001
From: Nico Alt <nicoalt@posteo.org>
Date: Sun, 12 Apr 2020 12:00:00 +0000
Subject: [PATCH] Make signal ids stable

This commit makes signal ids stable by always incrementing the id
number.
---
 briar_wrapper/models/socket_listener.py | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/briar_wrapper/models/socket_listener.py b/briar_wrapper/models/socket_listener.py
index 8a4bacf..64ec519 100644
--- a/briar_wrapper/models/socket_listener.py
+++ b/briar_wrapper/models/socket_listener.py
@@ -16,19 +16,24 @@ class SocketListener():  # pylint: disable=too-few-public-methods
 
     def __init__(self, api):
         self._api = api
-        self._signals = list()
+        self._signals = dict()
         self._signals_lock = Lock()
+        self._highest_signal_id = -1
         self._start_websocket_thread()
 
     def connect(self, event, callback):
         self._signals_lock.acquire()
-        # TODO: Signal ID should be stable after disconnects
-        signal_id = len(self._signals)
-        self._signals.append({
+        signal_id = self._add_signal(event, callback)
+        self._signals_lock.release()
+        return signal_id
+
+    def _add_signal(self, event, callback):
+        self._highest_signal_id += 1
+        signal_id = self._highest_signal_id
+        self._signals[signal_id] = {
             "event": event,
             "callback": callback
-            })
-        self._signals_lock.release()
+            }
         return signal_id
 
     def _start_websocket_thread(self):
-- 
GitLab