From 32782d0bfa19ea2a7c5cee40ec3e112a2d244cc2 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Tue, 30 Apr 2019 06:56:02 +0300 Subject: [PATCH] Ignore embed thumbnail/image width/height updates in edit logs --- package-lock.json | 5 +++++ package.json | 1 + src/plugins/Logs.ts | 28 +++++++++++++++++++++++----- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 536ab0df..0720c5e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5652,6 +5652,11 @@ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", diff --git a/package.json b/package.json index 9e244f4b..3356b519 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "last-commit-log": "^2.1.0", "lodash.at": "^4.6.0", "lodash.chunk": "^4.2.0", + "lodash.clonedeep": "^4.5.0", "lodash.difference": "^4.5.0", "lodash.has": "^4.5.2", "lodash.intersection": "^4.4.0", diff --git a/src/plugins/Logs.ts b/src/plugins/Logs.ts index 15c8093a..0cad062c 100644 --- a/src/plugins/Logs.ts +++ b/src/plugins/Logs.ts @@ -25,6 +25,7 @@ import { GuildArchives } from "../data/GuildArchives"; import { GuildCases } from "../data/GuildCases"; import { ZeppelinPlugin } from "./ZeppelinPlugin"; import { renderTemplate, TemplateParseError } from "../templateFormatter"; +import cloneDeep from "lodash.clonedeep"; interface ILogChannel { include?: string[]; @@ -433,14 +434,31 @@ export class LogsPlugin extends ZeppelinPlugin { async onMessageUpdate(savedMessage: SavedMessage, oldSavedMessage: SavedMessage) { // To log a message update, either the message content or a rich embed has to change let logUpdate = false; - const oldRichEmbed = (oldSavedMessage.data.embeds || []).find(e => (e as Embed).type === "rich"); - const newRichEmbed = (savedMessage.data.embeds || []).find(e => (e as Embed).type === "rich"); + + const oldEmbedsToCompare = ((oldSavedMessage.data.embeds || []) as Embed[]) + .map(e => cloneDeep(e)) + .filter(e => (e as Embed).type === "rich"); + + const newEmbedsToCompare = ((savedMessage.data.embeds || []) as Embed[]) + .map(e => cloneDeep(e)) + .filter(e => (e as Embed).type === "rich"); + + for (const embed of [...oldEmbedsToCompare, ...newEmbedsToCompare]) { + if (embed.thumbnail) { + delete embed.thumbnail.width; + delete embed.thumbnail.height; + } + + if (embed.image) { + delete embed.image.width; + delete embed.image.height; + } + } if ( oldSavedMessage.data.content !== savedMessage.data.content || - ((oldRichEmbed && !newRichEmbed) || - (!oldRichEmbed && newRichEmbed) || - JSON.stringify(oldRichEmbed) !== JSON.stringify(newRichEmbed)) + oldEmbedsToCompare.length !== newEmbedsToCompare.length || + JSON.stringify(oldEmbedsToCompare) !== JSON.stringify(newEmbedsToCompare) ) { logUpdate = true; }