new plugin ImageFilename: displays image filename tooltips on hover (#3617)

Co-authored-by: Vendicated <vendicated@riseup.net>
This commit is contained in:
fawn 2025-08-19 17:41:02 +03:00 committed by GitHub
parent 0bb2ed6b72
commit 643656d798
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 56 additions and 0 deletions

View file

@ -0,0 +1,5 @@
# ImageFilename
Display the file name of images & GIFs as a tooltip when hovering over them
![](https://github.com/user-attachments/assets/44583f17-506f-4913-b85c-513eee77b645)

View file

@ -0,0 +1,51 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2025 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { definePluginSettings } from "@api/Settings";
import { Devs } from "@utils/constants";
import definePlugin, { OptionType } from "@utils/types";
const ImageExtensionRe = /\.(png|jpg|jpeg|gif|webp|avif)$/i;
const GifHostRegex = /^(.+?\.)?(tenor|giphy|imgur)\.com$/i;
const settings = definePluginSettings({
showFullUrl: {
description: "Show the full URL of the image instead of just the file name. Always enabled for GIFs because they usually have no meaningful file name",
type: OptionType.BOOLEAN,
default: false,
},
});
export default definePlugin({
name: "ImageFilename",
authors: [Devs.Ven],
description: "Display the file name of images & GIFs as a tooltip when hovering over them",
settings,
patches: [
{
find: ".clickableWrapper",
replacement: {
match: /\.originalLink,href:(\i)/,
replace: "$&,title:$self.getTitle($1)"
}
},
],
getTitle(src: string) {
try {
const url = new URL(src);
const isGif = GifHostRegex.test(url.hostname);
if (!isGif && !ImageExtensionRe.test(url.pathname)) return undefined;
return isGif || settings.store.showFullUrl
? src
: url.pathname.split("/").pop();
} catch {
return undefined;
}
}
});