From 05d18942df7582656004917bda71fca7b5848ff1 Mon Sep 17 00:00:00 2001 From: Shay Date: Fri, 4 Oct 2024 10:07:42 -0700 Subject: [PATCH] A few small fixes (#536) * better error messages * fix flaky test --- src/protections/NsfwProtection.ts | 14 +++++++++++--- test/integration/banListTest.ts | 6 +++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/protections/NsfwProtection.ts b/src/protections/NsfwProtection.ts index 8b6f8fd5..7bfaf8c9 100644 --- a/src/protections/NsfwProtection.ts +++ b/src/protections/NsfwProtection.ts @@ -17,7 +17,7 @@ limitations under the License. import { Protection } from "./IProtection"; import { Mjolnir } from "../Mjolnir"; import * as nsfw from 'nsfwjs'; -import {LogLevel} from "@vector-im/matrix-bot-sdk"; +import {LogLevel, LogService} from "@vector-im/matrix-bot-sdk"; import { node } from '@tensorflow/tfjs-node'; @@ -63,7 +63,15 @@ export class NsfwProtection extends Protection { // @ts-ignore - see null check immediately above for (const mxc of mxcs) { const image = await mjolnir.client.downloadContent(mxc); - const decodedImage = await node.decodeImage(image.data, 3); + + let decodedImage; + try { + decodedImage = await node.decodeImage(image.data, 3); + } catch (e) { + LogService.error("NsfwProtection", `There was an error processing an image: ${e}`); + continue; + } + const predictions = await this.model.classify(decodedImage); @@ -79,7 +87,7 @@ export class NsfwProtection extends Protection { let body = `Redacted an image in ${room} ${eventId}` let formatted_body = `
Redacted an image in ${room} -
${eventId}
${room}
+                                                  
${eventId}
${room}
` const msg = { msgtype: "m.notice", diff --git a/test/integration/banListTest.ts b/test/integration/banListTest.ts index 1e9db021..e0ca76ea 100644 --- a/test/integration/banListTest.ts +++ b/test/integration/banListTest.ts @@ -270,7 +270,7 @@ describe('Test: ACL updates will batch when rules are added in succession.', fun acl.denyServer(badServer); await createPolicyRule(moderator, banListId, RULE_SERVER, badServer, `Rule #${i}`); // Give them a bit of a spread over time. - await new Promise(resolve => setTimeout(resolve, 5)); + await new Promise(resolve => setTimeout(resolve, 10)); } // We do this because it should force us to wait until all the ACL events have been applied. // Even if that does mean the last few events will not go through batching... @@ -294,8 +294,8 @@ describe('Test: ACL updates will batch when rules are added in succession.', fun LogService.debug('PolicyListTest', `aclEventCount: ${aclEventCount}`); // If there's less than two then it means the ACL was updated by this test calling `this.mjolnir!.syncLists()` // and not the listener that detects changes to ban lists (that we want to test!). - // It used to be 10, but it was too low, 30 seems better for CI. - assert.equal(aclEventCount < 50 && aclEventCount > 2, true, 'We should have sent less than 50 ACL events to each room because they should be batched') + // It used to be 30, but it was too low, 70 seems better for CI. + assert.equal(aclEventCount < 70 && aclEventCount > 2, true, 'We should have sent less than 70 ACL events to each room because they should be batched') })); }) })