From 0c39cac67eb64ec851514fbf38738c82798ef698 Mon Sep 17 00:00:00 2001
From: Nico Alt <nicoalt@posteo.org>
Date: Sat, 1 Jun 2019 18:28:35 +0200
Subject: [PATCH] Add ability to send messages (to first contact)

---
 src/briar/api/models/private_chat.py |  6 ++++++
 src/briar/gtk/containers/chat.py     | 10 ++++++++++
 2 files changed, 16 insertions(+)

diff --git a/src/briar/api/models/private_chat.py b/src/briar/api/models/private_chat.py
index 4332c49..6e689aa 100644
--- a/src/briar/api/models/private_chat.py
+++ b/src/briar/api/models/private_chat.py
@@ -6,6 +6,7 @@ from briar.api.models.model import Model
 from briar.api.models.socket_listener import SocketListener
 
 from requests import get as _get
+from requests import post as _post
 from urllib.parse import urljoin
 
 
@@ -21,3 +22,8 @@ class PrivateChat(Model):
         socket_listener = SocketListener(self._api)
         socket_listener.watch(callback, "ConversationMessageReceivedEvent",
                               contact_id=contact_id)
+
+    def send(self, contact_id, message):
+        headers = {'Authorization': 'Bearer ' + self._api.auth_token}
+        url = urljoin(self._constants.get_base_url(), 'messages/' + contact_id)
+        _post(url, headers=headers, json={'text': message})
diff --git a/src/briar/gtk/containers/chat.py b/src/briar/gtk/containers/chat.py
index de44d1d..1555eaf 100644
--- a/src/briar/gtk/containers/chat.py
+++ b/src/briar/gtk/containers/chat.py
@@ -23,6 +23,8 @@ class ChatContainer(Container):
         self.builder.add_from_resource("/app/briar/gtk/ui/chat.ui")
         self.add(self.builder.get_object("main"))
         self.builder.connect_signals(self)
+        chat_entry = self.builder.get_object("chat_entry")
+        chat_entry.connect("key-press-event", self._key_pressed)
 
     def _load_content(self, contact_id):
         private_chat = PrivateChat(self._api)
@@ -39,3 +41,11 @@ class ChatContainer(Container):
 
     def _add_message_async(self, message):
         GLib.idle_add(self._add_message, message)
+
+    def _key_pressed(self, widget, event):
+        if event.hardware_keycode != 36:
+            return
+        message = self.builder.get_object("chat_entry").get_text()
+        private_chat = PrivateChat(self._api)
+        private_chat.send("1", message)
+        
-- 
GitLab