From 8a097092b41fb6f0086de4bb8839687ae55da646 Mon Sep 17 00:00:00 2001
From: Will Hunt <will@half-shot.uk>
Date: Sun, 29 Dec 2019 17:19:56 +0000
Subject: [PATCH] Fix mime bugs

---
 package.json                |  1 +
 src/bot.ts                  |  4 ++--
 src/matrixeventprocessor.ts |  2 +-
 src/util.ts                 | 12 +++++-------
 4 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/package.json b/package.json
index dddab55..bc10d6f 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
     "lint": "tslint --project ./tsconfig.json -t stylish",
     "coverage": "tsc && nyc mocha build/test/config.js build/test",
     "build": "tsc",
+    "preinstall": "npm run build",
     "start": "npm run-script build && node ./build/src/discordas.js -p 9005 -c config.yaml",
     "debug": "npm run-script build && node --inspect ./build/src/discordas.js -p 9005 -c config.yaml",
     "addbot": "node ./build/tools/addbot.js",
diff --git a/src/bot.ts b/src/bot.ts
index cad7d77..df2e1f0 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -56,7 +56,7 @@ interface IThirdPartyLookupField {
     guild_id: string;
 }
 
-interface IThirdPartyLookup {
+export interface IThirdPartyLookup {
     alias: string;
     fields: IThirdPartyLookupField;
     protocol: string;
@@ -809,7 +809,7 @@ export class DiscordBot {
                     undefined,
                     attachment.filename,
                 );
-                const fileMime = mime.lookup(attachment.filename);
+                const fileMime = mime.getType(attachment.filename) || "application/octet-stream";
                 const type = fileMime.split("/")[0];
                 let msgtype = {
                     audio: "m.audio",
diff --git a/src/matrixeventprocessor.ts b/src/matrixeventprocessor.ts
index d5dba7d..77a0ac5 100644
--- a/src/matrixeventprocessor.ts
+++ b/src/matrixeventprocessor.ts
@@ -521,7 +521,7 @@ export class MatrixEventProcessor {
     private GetFilenameForMediaEvent(content: IMatrixEventContent): string {
         let ext = "";
         try {
-            ext = "." + mime.extension(content.info.mimetype);
+            ext = "." + mime.getExtension(content.info.mimetype);
         } catch (err) { } // pass, we don't have an extension
         if (content.body) {
             if (path.extname(content.body) !== "") {
diff --git a/src/util.ts b/src/util.ts
index 9391c7a..2ab2fb8 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -128,18 +128,17 @@ export class Util {
         const matrixUsers = {};
         let matches = 0;
         await Promise.all(channelMxids.map( async (chan) => {
-            (await client.getRoomMembers(chan, undefined, "leave")).forEach((member) => {
-                if (member.content.membership === "invite") {
+            (await client.getRoomMembers(chan, undefined, ["leave"])).forEach((member) => {
+                if (member.membership === "invite") {
                     return;
                 }
-                const mxid = member.state_key;
+                const mxid = member.stateKey;
                 if (mxid.startsWith("@_discord_")) {
                     return;
                 }
                 let displayName = member.content.displayname;
-                if (!displayName && member.unsigned && member.unsigned.prev_content &&
-                    member.unsigned.prev_content.displayname) {
-                    displayName = member.unsigned.prev_content.displayname;
+                if (!displayName && member.previousContent.displayname) {
+                    displayName = member.previousContent.displayname;
                 }
                 if (!displayName) {
                     displayName = mxid.substring(1, mxid.indexOf(":"));
@@ -378,7 +377,6 @@ export class Util {
     public static EscapeStringForUserId(localpart: string) {
         // NOTE: Currently Matrix accepts / in the userId, although going forward it will be removed.
         const badChars = new Set(localpart.replace(/([a-z]|[0-9]|-|\.|=|_)+/g, ""));
-        console.log(badChars);
         let res = localpart;
         badChars.forEach((c) => {
             const hex = c.charCodeAt(0).toString(16).toLowerCase();
-- 
GitLab