From b52570a87eef76eb9f8f9f6df99ca4f6cd3da5c3 Mon Sep 17 00:00:00 2001 From: Will Hunt <will@half-shot.uk> Date: Thu, 18 Jul 2019 23:46:11 +0100 Subject: [PATCH] Further tweaks --- package-lock.json | 40 +++++++++++++++++------------------ package.json | 2 +- src/channelsyncroniser.ts | 27 +++++++++++------------ src/matrixeventprocessor.ts | 14 ++++++------ src/matrixmessageprocessor.ts | 3 +-- src/util.ts | 10 ++++----- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index dee36c5..636de9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -236,9 +236,9 @@ } }, "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -2385,9 +2385,9 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" }, "lodash.padend": { "version": "4.6.1", @@ -2494,8 +2494,8 @@ } }, "matrix-bot-sdk": { - "version": "0.4.0-beta.3", - "resolved": "github:turt2live/matrix-js-bot-sdk#0c3d9bcde0157a638fa4c3573d6201e4d56d2a1e", + "version": "github:half-shot/matrix-js-bot-sdk#7517cbbb7ae6405d271bf6d3da702dab5161ecfa", + "from": "github:half-shot/matrix-js-bot-sdk#hs/roomMembers", "requires": { "@types/node": "^10.14.9", "bluebird": "^3.5.5", @@ -2513,9 +2513,9 @@ }, "dependencies": { "@types/node": { - "version": "10.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.9.tgz", - "integrity": "sha512-NelG/dSahlXYtSoVPErrp06tYFrvzj8XLWmKA+X8x0W//4MqbUyZu++giUG/v0bjAT6/Qxa8IjodrfdACyb0Fg==" + "version": "10.14.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.13.tgz", + "integrity": "sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==" }, "lru-cache": { "version": "5.1.1", @@ -2526,9 +2526,9 @@ } }, "tslint": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.17.0.tgz", - "integrity": "sha512-pflx87WfVoYepTet3xLfDOLDm9Jqi61UXIKePOuca0qoAZyrGWonDG9VTbji58Fy+8gciUn8Bt7y69+KEVjc/w==", + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz", + "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==", "requires": { "@babel/code-frame": "^7.0.0", "builtin-modules": "^1.1.1", @@ -2546,9 +2546,9 @@ } }, "typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz", - "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==" + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", + "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==" } } }, @@ -3355,9 +3355,9 @@ "dev": true }, "psl": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", - "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==" }, "pump": { "version": "3.0.0", diff --git a/package.json b/package.json index 0401f60..4f21295 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "escape-html": "^1.0.3", "escape-string-regexp": "^1.0.5", "js-yaml": "^3.13.1", - "matrix-bot-sdk": "0.4.0-beta.3", + "matrix-bot-sdk": "half-shot/matrix-js-bot-sdk#hs/roomMembers", "mime": "^1.6.0", "node-html-parser": "^1.1.15", "pg-promise": "^8.5.1", diff --git a/src/channelsyncroniser.ts b/src/channelsyncroniser.ts index ee1cb85..136b9ce 100644 --- a/src/channelsyncroniser.ts +++ b/src/channelsyncroniser.ts @@ -335,6 +335,7 @@ export class ChannelSyncroniser { overrideOptions?: DiscordBridgeConfigChannelDeleteOptions): Promise<void> { log.info(`Deleting ${channel.id} from ${roomId}.`); const intent = this.bridge.botIntent; + const client = this.bridge.botClient; const options = overrideOptions || this.config.channel.deleteOptions; const plumbed = entry.remote!.get("plumbed"); @@ -343,7 +344,7 @@ export class ChannelSyncroniser { for (const member of channel.members.array()) { try { const mIntent = this.bot.GetIntentFromDiscordMember(member); - await mIntent.underlyingClient.leaveRoom(roomId); + await client.leaveRoom(roomId); log.verbose(`${member.id} left ${roomId}.`); } catch (e) { log.warn(`Failed to make ${member.id} leave `); @@ -352,9 +353,9 @@ export class ChannelSyncroniser { } if (options.namePrefix) { try { - const name = await intent.underlyingClient.getRoomStateEvent(roomId, "m.room.name", ""); + const name = await client.getRoomStateEvent(roomId, "m.room.name", ""); name.name = options.namePrefix + name.name; - await intent.underlyingClient.sendStateEvent( + await client.sendStateEvent( roomId, "m.room.name", "", @@ -366,9 +367,9 @@ export class ChannelSyncroniser { } if (options.topicPrefix) { try { - const topic = await intent.underlyingClient.getRoomStateEvent(roomId, "m.room.topic", ""); + const topic = await client.getRoomStateEvent(roomId, "m.room.topic", ""); topic.topic = options.topicPrefix + topic.topic; - await intent.underlyingClient.sendStateEvent( + await client.sendStateEvent( roomId, "m.room.topic", "", @@ -383,15 +384,15 @@ export class ChannelSyncroniser { if (options.unsetRoomAlias) { try { const alias = `#_${entry.remote!.roomId}:${this.config.bridge.domain}`; - const canonicalAlias = await intent.underlyingClient.getRoomStateEvent( + const canonicalAlias = await client.getRoomStateEvent( roomId, "m.room.canonical_alias", - "" + "", ); if (canonicalAlias.alias === alias) { - await intent.underlyingClient.sendStateEvent(roomId, "m.room.canonical_alias", "", {}); + await client.sendStateEvent(roomId, "m.room.canonical_alias", "", {}); } - await intent.underlyingClient.deleteRoomAlias(alias); + await client.deleteRoomAlias(alias); } catch (e) { log.error(`Couldn't remove alias of ${roomId} ${e}`); } @@ -399,7 +400,7 @@ export class ChannelSyncroniser { if (options.unlistFromDirectory) { try { - await intent.underlyingClient.setDirectoryVisibility(roomId, "private"); + await client.setDirectoryVisibility(roomId, "private"); } catch (e) { log.error(`Couldn't remove ${roomId} from room directory ${e}`); } @@ -408,7 +409,7 @@ export class ChannelSyncroniser { if (options.setInviteOnly) { try { - await intent.underlyingClient.sendStateEvent( + await client.sendStateEvent( roomId, "m.room.join_rules", "", @@ -421,9 +422,9 @@ export class ChannelSyncroniser { if (options.disableMessaging) { try { - const state = await intent.underlyingClient.getRoomStateEvent(roomId, "m.room.power_levels", ""); + const state = await client.getRoomStateEvent(roomId, "m.room.power_levels", ""); state.events_default = POWER_LEVEL_MESSAGE_TALK; - await intent.underlyingClient.sendStateEvent(roomId, "m.room.power_levels", "", state); + await client.sendStateEvent(roomId, "m.room.power_levels", "", state); } catch (e) { log.error(`Couldn't disable messaging for ${roomId} ${e}`); } diff --git a/src/matrixeventprocessor.ts b/src/matrixeventprocessor.ts index cdc6b5a..4cbc721 100644 --- a/src/matrixeventprocessor.ts +++ b/src/matrixeventprocessor.ts @@ -322,13 +322,13 @@ export class MatrixEventProcessor { let size = event.content.info.size || 0; const name = this.GetFilenameForMediaEvent(event.content); - const url = Util.GetUrlFromMxc(event.content.url, this.config.bridge.homeserverUrl); + const url = this.bridge.botClient.mxcToHttp(event.content.url); if (size < MaxFileSize) { - const attachment = await this.bridge.botIntent.underlyingClient.downloadContent(event.content.url); - size = attachment.data.byteLength; + const attachment = await Util.DownloadFile(url); + size = attachment.byteLength; if (size < MaxFileSize) { return { - attachment: attachment.data, + attachment, name, } as Discord.FileOptions; } @@ -372,7 +372,7 @@ export class MatrixEventProcessor { replyEmbed.setTimestamp(new Date(sourceEvent.origin_server_ts!)); if (this.HasAttachment(sourceEvent)) { - const url = Util.GetUrlFromMxc(sourceEvent.content!.url!, this.config.bridge.homeserverUrl); + const url = this.bridge.botClient.mxcToHttp(sourceEvent.content!.url!); if (["m.image", "m.sticker"].includes(sourceEvent.content!.msgtype as string) || sourceEvent.type === "m.sticker") { // we have an image reply @@ -492,11 +492,11 @@ export class MatrixEventProcessor { } if (profile.avatar_url) { - avatarUrl = Util.GetUrlFromMxc( + avatarUrl = this.bridge.botClient.mxcToHttpThumbnail( profile.avatar_url, - this.config.bridge.homeserverUrl, DISCORD_AVATAR_WIDTH, DISCORD_AVATAR_HEIGHT, + "scale", ); } } diff --git a/src/matrixmessageprocessor.ts b/src/matrixmessageprocessor.ts index 3f32ba8..f2a1320 100644 --- a/src/matrixmessageprocessor.ts +++ b/src/matrixmessageprocessor.ts @@ -227,9 +227,8 @@ export class MatrixMessageProcessor { if (!emoji) { const content = await this.escapeDiscord(name); - const url = this.params && this.params.mxClient ? Util.GetUrlFromMxc( + const url = this.params && this.params.mxClient ? this.params.mxClient.mxcToHttp( attrs.src, - this.homeserverUrl, ) : attrs.src; return attrs.src ? `[${content}](${url})` : content; } diff --git a/src/util.ts b/src/util.ts index ed05fcf..7bab8d6 100644 --- a/src/util.ts +++ b/src/util.ts @@ -128,8 +128,8 @@ export class Util { const matrixUsers = {}; let matches = 0; await Promise.all(channelMxids.map( async (chan) => { - (await client.getRoomMembers(chan)).forEach((member) => { - if (member.membership !== "join" && member.membership !== "ban") { + (await client.getRoomMembers(chan, undefined, "leave")).forEach((member) => { + if (member.content.membership !== "invite") { return; } const mxid = member.state_key; @@ -360,7 +360,7 @@ export class Util { return `${homeserverUrl}/_matrix/media/r0/download/${part}`; } - public static ParseMxid(unescapedMxid: string, escape: boolean = true){ + public static ParseMxid(unescapedMxid: string, escape: boolean = true) { const RADIX = 16; const parts = unescapedMxid.substr(1).split(":"); const domain = parts[1]; @@ -379,6 +379,6 @@ export class Util { domain, localpart, mxid: `@${localpart}:${domain}`, - } + }; } -} \ No newline at end of file +} -- GitLab