mirror of
https://github.com/Equicord/Equicord.git
synced 2025-02-26 10:08:52 -05:00
70 lines
2.5 KiB
TypeScript
70 lines
2.5 KiB
TypeScript
|
/*
|
||
|
* 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);
|
||
|
}
|