aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/anonymiseFileNames.ts
diff options
context:
space:
mode:
authorV <vendicated@riseup.net>2023-09-24 16:02:18 +0200
committerV <vendicated@riseup.net>2023-09-24 16:02:18 +0200
commit30ac25607023752031aa98060cbf8a736109992d (patch)
tree79bb82b6634ef601db6c98e751275607ec54dbea /src/plugins/anonymiseFileNames.ts
parentd0e2a324717e600736a18b88fe89a21c640a406b (diff)
downloadVencord-30ac25607023752031aa98060cbf8a736109992d.tar.gz
Vencord-30ac25607023752031aa98060cbf8a736109992d.tar.bz2
Vencord-30ac25607023752031aa98060cbf8a736109992d.zip
migrate all plugins to folders
Diffstat (limited to 'src/plugins/anonymiseFileNames.ts')
-rw-r--r--src/plugins/anonymiseFileNames.ts94
1 files changed, 0 insertions, 94 deletions
diff --git a/src/plugins/anonymiseFileNames.ts b/src/plugins/anonymiseFileNames.ts
deleted file mode 100644
index 9e69d7a..0000000
--- a/src/plugins/anonymiseFileNames.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Vencord, a modification for Discord's desktop app
- * Copyright (c) 2022 Vendicated and contributors
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
-*/
-
-import { Settings } from "@api/Settings";
-import { Devs } from "@utils/constants";
-import definePlugin, { OptionType } from "@utils/types";
-
-const enum Methods {
- Random,
- Consistent,
- Timestamp,
-}
-
-const tarExtMatcher = /\.tar\.\w+$/;
-
-export default definePlugin({
- name: "AnonymiseFileNames",
- authors: [Devs.obscurity],
- description: "Anonymise uploaded file names",
- patches: [
- {
- find: "instantBatchUpload:function",
- replacement: {
- match: /uploadFiles:(.{1,2}),/,
- replace:
- "uploadFiles:(...args)=>(args[0].uploads.forEach(f=>f.filename=$self.anonymise(f.filename)),$1(...args)),",
- },
- },
- ],
-
- options: {
- method: {
- description: "Anonymising method",
- type: OptionType.SELECT,
- options: [
- { label: "Random Characters", value: Methods.Random, default: true },
- { label: "Consistent", value: Methods.Consistent },
- { label: "Timestamp (4chan-like)", value: Methods.Timestamp },
- ],
- },
- randomisedLength: {
- description: "Random characters length",
- type: OptionType.NUMBER,
- default: 7,
- disabled: () => Settings.plugins.AnonymiseFileNames.method !== Methods.Random,
- },
- consistent: {
- description: "Consistent filename",
- type: OptionType.STRING,
- default: "image",
- disabled: () => Settings.plugins.AnonymiseFileNames.method !== Methods.Consistent,
- },
- },
-
- anonymise(file: string) {
- let name = "image";
- const tarMatch = tarExtMatcher.exec(file);
- const extIdx = tarMatch?.index ?? file.lastIndexOf(".");
- const ext = extIdx !== -1 ? file.slice(extIdx) : "";
-
- switch (Settings.plugins.AnonymiseFileNames.method) {
- case Methods.Random:
- const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- name = Array.from(
- { length: Settings.plugins.AnonymiseFileNames.randomisedLength },
- () => chars[Math.floor(Math.random() * chars.length)]
- ).join("");
- break;
- case Methods.Consistent:
- name = Settings.plugins.AnonymiseFileNames.consistent;
- break;
- case Methods.Timestamp:
- // UNIX timestamp in nanos, i could not find a better dependency-less way
- name = `${Math.floor(Date.now() / 1000)}${Math.floor(window.performance.now())}`;
- break;
- }
- return name + ext;
- },
-});