olm: Create a new olm account only after login.

That way we can be sure to have a valid device ID.
This commit is contained in:
poljar (Damir Jelić) 2018-03-22 11:32:54 +01:00
parent b309be8a98
commit 357c76edcc
2 changed files with 20 additions and 8 deletions

View file

@ -86,6 +86,10 @@ class MatrixLoginEvent(MatrixEvent):
prefix=W.prefix("network"), user=self.user_id) prefix=W.prefix("network"), user=self.user_id)
W.prnt(self.server.server_buffer, message) W.prnt(self.server.server_buffer, message)
if not self.server.olm:
self.server.create_olm()
self.server.sync() self.server.sync()
@classmethod @classmethod

View file

@ -138,20 +138,28 @@ class MatrixServer:
try: try:
self.olm = Olm.from_session_dir(self) self.olm = Olm.from_session_dir(self)
except FileNotFoundError: except FileNotFoundError:
message = ("{prefix}matrix: Creating new Olm identity for {user}" pass
" 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)
except EncryptionError as error: except EncryptionError as error:
message = ("{prefix}matrix: Error loading Olm" message = ("{prefix}matrix: Error loading Olm"
"account: {error}.").format( "account: {error}.").format(
prefix=W.prefix("error"), error=error) prefix=W.prefix("error"), error=error)
W.prnt("", message) 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): def _create_options(self, config_file):
options = [ options = [
Option('autoconnect', 'boolean', '', 0, 0, 'off', Option('autoconnect', 'boolean', '', 0, 0, 'off',