i fixed some stuff (#218)

* i fixed some stuff

* Update index.tsx

* removed useless stuff

* Update pnpm-lock.yaml

* Update index.tsx

* Update http.ts

---------

Co-authored-by: thororen1234 <78185467+thororen1234@users.noreply.github.com>
This commit is contained in:
smuki 2025-04-06 02:29:06 +03:00 committed by GitHub
parent 1e311b8d9c
commit 1e5a600213
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 63 additions and 30 deletions

View file

@ -8,11 +8,10 @@ import { showNotification } from "@api/Notifications";
import { definePluginSettings } from "@api/Settings"; import { definePluginSettings } from "@api/Settings";
import { EquicordDevs } from "@utils/constants"; import { EquicordDevs } from "@utils/constants";
import definePlugin, { OptionType } from "@utils/types"; import definePlugin, { OptionType } from "@utils/types";
import { findStoreLazy } from "@webpack";
import { import {
ChannelStore, ChannelStore,
FluxDispatcher,
GuildStore, GuildStore,
MessageStore,
NavigationRouter, NavigationRouter,
PresenceStore, PresenceStore,
RelationshipStore, RelationshipStore,
@ -20,22 +19,19 @@ import {
UserStore UserStore
} from "@webpack/common"; } from "@webpack/common";
const UserGuildSettingsStore = findStoreLazy("UserGuildSettingsStore");
const settings = definePluginSettings({ const settings = definePluginSettings({
friends: { friends: {
type: OptionType.BOOLEAN, type: OptionType.BOOLEAN,
default: true, default: false,
description: "Notify when friends message you (non-@ mentions)" description: "Notify when friends send messages in servers"
}, },
mentions: { mentions: {
type: OptionType.BOOLEAN, type: OptionType.BOOLEAN,
default: true, default: true,
description: "Notify when someone @mentions you directly" description: "Notify when someone @mentions you directly"
}, },
replies: {
type: OptionType.BOOLEAN,
default: true,
description: "Notify when someone replies to your messages"
},
dms: { dms: {
type: OptionType.BOOLEAN, type: OptionType.BOOLEAN,
default: true, default: true,
@ -44,11 +40,16 @@ const settings = definePluginSettings({
showInActive: { showInActive: {
type: OptionType.BOOLEAN, type: OptionType.BOOLEAN,
default: false, default: false,
description: "Show notifications even for current active channel" description: "Show notifications even for currently active channel"
},
ignoreMuted: {
type: OptionType.BOOLEAN,
default: true,
description: "Skip notifications from muted servers, channels, or users"
} }
}); });
function formatContent(message: any) { function formatContent(message) {
let content = message.content || ""; let content = message.content || "";
message.mentions?.forEach(user => { message.mentions?.forEach(user => {
content = content.replace(new RegExp(`<@!?${user.id}>`, "g"), `@${user.username}`); content = content.replace(new RegExp(`<@!?${user.id}>`, "g"), `@${user.username}`);
@ -56,40 +57,75 @@ function formatContent(message: any) {
return content.slice(0, 200) + (content.length > 200 ? "..." : ""); return content.slice(0, 200) + (content.length > 200 ? "..." : "");
} }
function checkIfMuted(channel) {
if (!settings.store.ignoreMuted) return false;
if (!channel) return false;
if (channel.isMuted?.()) return true;
const isDM = [1, 3].includes(channel.type);
if (isDM) {
const recipientIds = channel.recipients || [];
for (const userId of recipientIds) {
if (RelationshipStore.isBlocked(userId)) return true;
}
if (UserGuildSettingsStore?.getMutedChannels?.()?.includes?.(channel.id)) return true;
}
if (channel.guild_id) {
const guild = GuildStore.getGuild(channel.guild_id);
if (UserGuildSettingsStore.isMuted(channel.guild_id)) return true;
if (UserGuildSettingsStore?.isMuted?.(channel.guild_id)) return true;
if (UserGuildSettingsStore?.isChannelMuted?.(channel.guild_id, channel.id)) return true;
if (UserGuildSettingsStore?.isCategoryMuted?.(channel.guild_id, channel.id)) return true;
}
return false;
}
function isUserBlocked(userId) {
return settings.store.ignoreMuted && RelationshipStore.isBlocked?.(userId);
}
export default definePlugin({ export default definePlugin({
name: "PingNotifications", name: "PingNotifications",
description: "Customizable notifications with improved mention formatting", description: "Customizable notifications with improved mention formatting",
authors: [EquicordDevs.smuki], authors: [EquicordDevs.smuki],
settings, settings,
flux: { flux: {
async MESSAGE_CREATE({ message }) { MESSAGE_CREATE({ message }) {
try { try {
if (!message?.channel_id || message.state === "SENDING") return; if (!message?.channel_id || message.state === "SENDING") return;
const channel = ChannelStore.getChannel(message.channel_id); const channel = ChannelStore.getChannel(message.channel_id);
const currentUser = UserStore.getCurrentUser(); const currentUser = UserStore.getCurrentUser();
if (!channel || !currentUser || message.author?.id === currentUser.id) return; if (!channel || !currentUser) return;
if ((channel as any).isMuted?.() || (channel.guild_id && (GuildStore.getGuild(channel.guild_id) as any)?.isMuted?.())) return; if (message.author?.id === currentUser.id) return;
const isDM = [1, 3].includes(channel.type);
if (checkIfMuted(channel)) return;
if (isUserBlocked(message.author.id)) return;
if (!settings.store.showInActive && channel.id === SelectedChannelStore.getChannelId()) return; if (!settings.store.showInActive && channel.id === SelectedChannelStore.getChannelId()) return;
if (PresenceStore.getStatus(currentUser.id) === "dnd") return; if (PresenceStore.getStatus(currentUser.id) === "dnd") return;
const author = UserStore.getUser(message.author.id) || { username: "Unknown" }; const author = UserStore.getUser(message.author.id) || { username: "Unknown" };
const isDM = [1, 3].includes(channel.type);
const channelName = channel.name || (isDM ? "DM" : "Group"); const channelName = channel.name || (isDM ? "DM" : "Group");
const body = formatContent(message); const body = formatContent(message);
const shouldNotify = ( let shouldNotify = false;
(settings.store.mentions && message.mentions?.some(u => u.id === currentUser.id)) ||
(settings.store.friends && RelationshipStore.isFriend(message.author.id)) || if (settings.store.mentions && message.mentions?.some(u => u.id === currentUser.id)) {
(settings.store.replies && message.message_reference?.message_id && shouldNotify = true;
MessageStore.getMessage( } else if (settings.store.friends && RelationshipStore.isFriend(message.author.id) && !isDM) {
message.message_reference.channel_id || channel.id, shouldNotify = true;
message.message_reference.message_id } else if (isDM && settings.store.dms) {
)?.author.id === currentUser.id shouldNotify = true;
) || }
(isDM && settings.store.dms)
);
if (shouldNotify) { if (shouldNotify) {
showNotification({ showNotification({

View file

@ -16,7 +16,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
import { isLegacyNonAsarVencord } from "@main/patcher";
import { get } from "@main/utils/simpleGet"; import { get } from "@main/utils/simpleGet";
import { IpcEvents } from "@shared/IpcEvents"; import { IpcEvents } from "@shared/IpcEvents";
import { VENCORD_USER_AGENT } from "@shared/vencordUserAgent"; import { VENCORD_USER_AGENT } from "@shared/vencordUserAgent";
@ -120,8 +119,6 @@ async function migrateAsarToLegacy() {
} }
} }
if (!isLegacyNonAsarVencord) migrateAsarToLegacy();
ipcMain.handle(IpcEvents.GET_REPO, serializeErrors(() => `https://github.com/${gitRemote}`)); ipcMain.handle(IpcEvents.GET_REPO, serializeErrors(() => `https://github.com/${gitRemote}`));
ipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(calculateGitChanges)); ipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(calculateGitChanges));
ipcMain.handle(IpcEvents.UPDATE, serializeErrors(fetchUpdates)); ipcMain.handle(IpcEvents.UPDATE, serializeErrors(fetchUpdates));

View file

@ -1039,7 +1039,7 @@ export const EquicordDevs = Object.freeze({
id: 724416180097384498n id: 724416180097384498n
}, },
smuki: { smuki: {
name: "sumki", name: "smuki",
id: 691517398523576331n id: 691517398523576331n
}, },
} satisfies Record<string, Dev>); } satisfies Record<string, Dev>);