From 010df6c889f1011d5650a4c4d0be8a32fcba6e09 Mon Sep 17 00:00:00 2001 From: Sorunome <mail@sorunome.de> Date: Fri, 26 Apr 2019 18:07:44 +0200 Subject: [PATCH] handle if remoteUser is null in usersync ApplyStateToRoom --- src/usersyncroniser.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/usersyncroniser.ts b/src/usersyncroniser.ts index 3a329a3..f0489a8 100644 --- a/src/usersyncroniser.ts +++ b/src/usersyncroniser.ts @@ -198,14 +198,17 @@ export class UserSyncroniser { return; } const remoteUser = await this.userStore.getRemoteUser(memberState.id); - if (!remoteUser) { - throw Error("Remote user not found"); + let avatar = ""; + if (remoteUser) { + avatar = remoteUser.avatarurlMxc || ""; + } else { + log.warn("Remote user wasn't found, using blank avatar"); } const intent = this.bridge.getIntent(memberState.mxUserId); /* The intent class tries to be smart and deny a state update for <PL50 users. Obviously a user can change their own state so we use the client instead. */ await intent.getClient().sendStateEvent(roomId, "m.room.member", { - "avatar_url": remoteUser.avatarurlMxc, + "avatar_url": avatar, "displayname": memberState.displayName, "membership": "join", "uk.half-shot.discord.member": { @@ -217,10 +220,12 @@ export class UserSyncroniser { }, }, memberState.mxUserId); - if (guildId) { - remoteUser.guildNicks.set(guildId, memberState.displayName); + if (remoteUser) { + if (guildId) { + remoteUser.guildNicks.set(guildId, memberState.displayName); + } + await this.userStore.setRemoteUser(remoteUser); } - await this.userStore.setRemoteUser(remoteUser); } public async GetUserUpdateState(discordUser: User, webhookID?: string): Promise<IUserState> { -- GitLab