Equicord/src/equicordplugins/notificationTitle/index.tsx

70 lines
2.5 KiB
TypeScript
Raw Normal View History

2024-07-18 02:14:43 -04:00
/*
* Vencord, a Discord client mod
* Copyright (c) 2024 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
import { findByCodeLazy, findByPropsLazy } from "@webpack";
import { ChannelStore, GuildStore, i18n, RelationshipStore, UserStore } from "@webpack/common";
const { getName } = findByPropsLazy("getName", "useName", "getNickname");
const computeChannelName = findByCodeLazy(".isThread())return'\"'.concat(");
const ChannelTypes = findByPropsLazy("DM", "GUILD_TEXT", "PUBLIC_THREAD", "UNKNOWN");
const ChannelTypesSets = findByPropsLazy("THREADS", "GUILD_TEXTUAL", "ALL_DMS");
const MessageTypes = findByPropsLazy("REPLY", "STAGE_RAISE_HAND", "CHANNEL_NAME_CHANGE");
export default definePlugin({
name: "NotificationTitle",
description: "Makes desktop notifications more informative",
authors: [Devs.Kyuuhachi],
patches: [
{
find: '"SystemMessageUtils.stringify(...) could not convert"',
replacement: {
match: /{icon:.*?}/,
replace: "($self.makeTitle($&,...arguments))",
}
},
],
makeTitle(result, channel, message, user) {
const username = getName(channel.guild_id, channel.id, user);
let title = username;
if (message.type === MessageTypes.REPLY && message.referenced_message?.author) {
const replyUser = UserStore.getUser(message.referenced_message.author.id);
const replyUsername = getName(channel.guild_id, channel.id, replyUser);
title = i18n.Messages.CHANNEL_MESSAGE_REPLY_A11Y_LABEL.format({
author: username,
repliedAuthor: replyUsername,
});
}
const guild = GuildStore.getGuild(channel.guild_id);
const parent = ChannelStore.getChannel(channel.parent_id);
if (channel.type !== ChannelTypes.DM) {
let where = ChannelTypesSets.THREADS.has(channel.type)
? `${channelName(channel)} in ${channelName(parent, true)}`
: `${channelName(channel, true)}`;
if (guild != null)
where += `, ${guild.name}`;
title += `\n(${where})`;
}
result.title = title;
console.log({ ...result, channel, message, user });
return result;
}
});
function channelName(channel, withPrefix = false) {
return computeChannelName(channel, UserStore, RelationshipStore, withPrefix);
}