diff --git a/src/plugins/consoleJanitor/index.ts b/src/plugins/consoleJanitor/index.ts index f5f43c06b..c9e9aeb42 100644 --- a/src/plugins/consoleJanitor/index.ts +++ b/src/plugins/consoleJanitor/index.ts @@ -22,10 +22,12 @@ const NoopLogger = { fileOnly: Noop }; +const logAllow = new Set(); + const settings = definePluginSettings({ - disableNoisyLoggers: { + disableLoggers: { type: OptionType.BOOLEAN, - description: "Disable noisy loggers like the MessageActionCreators", + description: "Disables Discords loggers", default: false, restartNeeded: true }, @@ -34,16 +36,33 @@ const settings = definePluginSettings({ description: "Disable the Spotify logger, which leaks account information and access token", default: true, restartNeeded: true + }, + whitelistedLoggers: { + type: OptionType.STRING, + description: "Semi colon separated list of loggers to allow even if others are hidden", + default: "GatewaySocket; Routing/Utils", + onChange(newVal: string) { + logAllow.clear(); + newVal.split(";").map(x => x.trim()).forEach(logAllow.add.bind(logAllow)); + } } }); export default definePlugin({ name: "ConsoleJanitor", description: "Disables annoying console messages/errors", - authors: [Devs.Nuckyz], + authors: [Devs.Nuckyz, Devs.sadan], settings, + start() { + logAllow.clear(); + this.settings.store.whitelistedLoggers?.split(";").map(x => x.trim()).forEach(logAllow.add.bind(logAllow)); + }, + NoopLogger: () => NoopLogger, + shouldLog(logger: string) { + return logAllow.has(logger); + }, patches: [ { @@ -103,34 +122,13 @@ export default definePlugin({ replace: "" } }, - ...[ - '("MessageActionCreators")', '("ChannelMessages")', - '("Routing/Utils")', '("RTCControlSocket")', - '("ConnectionEventFramerateReducer")', '("RTCLatencyTestManager")', - '("OverlayBridgeStore")', '("RPCServer:WSS")', '("RPCServer:IPC")' - ].map(logger => ({ - find: logger, - predicate: () => settings.store.disableNoisyLoggers, - all: true, - replacement: { - match: new RegExp(String.raw`new \i\.\i${logger.replace(/([()])/g, "\\$1")}`), - replace: `$self.NoopLogger${logger}` - } - })), + // Patches discords generic logger function { - find: '"Experimental codecs: "', - predicate: () => settings.store.disableNoisyLoggers, + find: "Σ:", + predicate: () => settings.store.disableLoggers, replacement: { - match: /new \i\.\i\("Connection\("\.concat\(\i,"\)"\)\)/, - replace: "$self.NoopLogger()" - } - }, - { - find: '"_handleLocalVideoDisabled: ', - predicate: () => settings.store.disableNoisyLoggers, - replacement: { - match: /new \i\.\i\("RTCConnection\("\.concat.+?\)\)(?=,)/, - replace: "$self.NoopLogger()" + match: /(?<=&&)(?=console)/, + replace: "$self.shouldLog(arguments[0])&&" } }, { @@ -141,5 +139,5 @@ export default definePlugin({ replace: "$self.NoopLogger()" } } - ] + ], });