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',