From 357c76edccaca8e0d5f9287add621042ba60eac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?poljar=20=28Damir=20Jeli=C4=87=29?= Date: Thu, 22 Mar 2018 11:32:54 +0100 Subject: [PATCH] olm: Create a new olm account only after login. That way we can be sure to have a valid device ID. --- matrix/events.py | 4 ++++ matrix/server.py | 24 ++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/matrix/events.py b/matrix/events.py index b70141d..8f5df81 100644 --- a/matrix/events.py +++ b/matrix/events.py @@ -86,6 +86,10 @@ class MatrixLoginEvent(MatrixEvent): prefix=W.prefix("network"), user=self.user_id) W.prnt(self.server.server_buffer, message) + + if not self.server.olm: + self.server.create_olm() + self.server.sync() @classmethod diff --git a/matrix/server.py b/matrix/server.py index 4902ab5..0976e8c 100644 --- a/matrix/server.py +++ b/matrix/server.py @@ -138,20 +138,28 @@ class MatrixServer: try: self.olm = Olm.from_session_dir(self) except FileNotFoundError: - message = ("{prefix}matrix: Creating new Olm identity for {user}" - " on {server} for device {device}.").format( - prefix=W.prefix("network"), - user=self.user, - server=self.name, - device=self.device_id) - W.prnt("", message) - self.olm = Olm(self) + pass except EncryptionError as error: message = ("{prefix}matrix: Error loading Olm" "account: {error}.").format( prefix=W.prefix("error"), error=error) W.prnt("", message) + def create_olm(self): + message = ("{prefix}matrix: Creating new Olm identity for " + "{self_color}{user}{ncolor}" + " on {server_color}{server}{ncolor} for device " + "{device}.").format( + prefix=W.prefix("network"), + self_color=W.color("chat_nick_self"), + ncolor=W.color("reset"), + user=self.user_id, + server_color=W.color("chat_server"), + server=self.name, + device=self.device_id) + W.prnt(self.server_buffer, message) + self.olm = Olm(self) + def _create_options(self, config_file): options = [ Option('autoconnect', 'boolean', '', 0, 0, 'off',