Merge remote-tracking branch 'upstream/dev' into dev
This commit is contained in:
commit
6bede29885
4 changed files with 77 additions and 5 deletions
|
|
@ -111,7 +111,7 @@ const patchCsp = (headers: PolicyMap) => {
|
|||
pushDirective("script-src", "'unsafe-inline'", "'unsafe-eval'");
|
||||
|
||||
for (const directive of ["style-src", "connect-src", "img-src", "font-src", "media-src", "worker-src"]) {
|
||||
pushDirective(directive, "blob:", "data:", "vencord:");
|
||||
pushDirective(directive, "blob:", "data:", "vencord:", "vesktop:");
|
||||
}
|
||||
|
||||
for (const [host, directives] of Object.entries(NativeSettings.store.customCspRules)) {
|
||||
|
|
|
|||
5
src/plugins/autoDndWhilePlaying.discordDesktop/README.md
Normal file
5
src/plugins/autoDndWhilePlaying.discordDesktop/README.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# AutoDNDWhilePlaying
|
||||
|
||||
This plugin automatically updates your online status (online, idle, dnd) when launching games.
|
||||
|
||||
It will change your status back to the prior status when the game is closed.
|
||||
61
src/plugins/autoDndWhilePlaying.discordDesktop/index.ts
Normal file
61
src/plugins/autoDndWhilePlaying.discordDesktop/index.ts
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Vencord, a Discord client mod
|
||||
* Copyright (c) 2024 Vendicated and contributors
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { definePluginSettings } from "@api/Settings";
|
||||
import { getUserSettingLazy } from "@api/UserSettings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
let savedStatus: string | null;
|
||||
|
||||
const StatusSettings = getUserSettingLazy<string>("status", "status")!;
|
||||
|
||||
const settings = definePluginSettings({
|
||||
statusToSet: {
|
||||
type: OptionType.SELECT,
|
||||
description: "Status to set while playing a game",
|
||||
options: [
|
||||
{
|
||||
label: "Online",
|
||||
value: "online",
|
||||
},
|
||||
{
|
||||
label: "Idle",
|
||||
value: "idle",
|
||||
},
|
||||
{
|
||||
label: "Do Not Disturb",
|
||||
value: "dnd",
|
||||
default: true
|
||||
},
|
||||
{
|
||||
label: "Invisible",
|
||||
value: "invisible",
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
export default definePlugin({
|
||||
name: "AutoDNDWhilePlaying",
|
||||
description: "Automatically updates your online status (online, idle, dnd) when launching games",
|
||||
authors: [Devs.thororen],
|
||||
settings,
|
||||
flux: {
|
||||
RUNNING_GAMES_CHANGE({ games }) {
|
||||
const status = StatusSettings.getSetting();
|
||||
|
||||
if (games.length > 0) {
|
||||
if (status !== settings.store.statusToSet) {
|
||||
savedStatus = status;
|
||||
StatusSettings.updateSetting(settings.store.statusToSet);
|
||||
}
|
||||
} else if (savedStatus && savedStatus !== settings.store.statusToSet) {
|
||||
StatusSettings.updateSetting(savedStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -21,7 +21,7 @@ import { Devs, IS_MAC } from "@utils/constants";
|
|||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { MessageFlags } from "@vencord/discord-types/enums";
|
||||
import { ChannelStore, ComponentDispatch, FluxDispatcher as Dispatcher, MessageActions, MessageStore, MessageTypeSets, PermissionsBits, PermissionStore, SelectedChannelStore, UserStore } from "@webpack/common";
|
||||
import { ChannelStore, ComponentDispatch, FluxDispatcher as Dispatcher, MessageActions, MessageStore, MessageTypeSets, PermissionsBits, PermissionStore, RelationshipStore, SelectedChannelStore, UserStore } from "@webpack/common";
|
||||
import NoBlockedMessagesPlugin from "plugins/noBlockedMessages";
|
||||
import NoReplyMentionPlugin from "plugins/noReplyMention";
|
||||
|
||||
|
|
@ -40,13 +40,18 @@ const settings = definePluginSettings({
|
|||
description: "Ping reply by default",
|
||||
options: [
|
||||
{
|
||||
label: "Follow NoReplyMention",
|
||||
label: "Follow NoReplyMention plugin (if enabled)",
|
||||
value: MentionOptions.NO_REPLY_MENTION_PLUGIN,
|
||||
default: true
|
||||
},
|
||||
{ label: "Enabled", value: MentionOptions.ENABLED },
|
||||
{ label: "Disabled", value: MentionOptions.DISABLED },
|
||||
]
|
||||
},
|
||||
ignoreBlockedAndIgnored: {
|
||||
type: OptionType.BOOLEAN,
|
||||
description: "Ignore messages by blocked/ignored users when navigating",
|
||||
default: true
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -126,7 +131,7 @@ function jumpIfOffScreen(channelId: string, messageId: string) {
|
|||
}
|
||||
|
||||
function getNextMessage(isUp: boolean, isReply: boolean) {
|
||||
let messages: Array<Message & { deleted?: boolean; }> = MessageStore.getMessages(SelectedChannelStore.getChannelId())._array;
|
||||
let messages: Message[] = MessageStore.getMessages(SelectedChannelStore.getChannelId())._array;
|
||||
|
||||
const meId = UserStore.getCurrentUser().id;
|
||||
const hasNoBlockedMessages = Vencord.Plugins.isPluginEnabled(NoBlockedMessagesPlugin.name);
|
||||
|
|
@ -134,8 +139,9 @@ function getNextMessage(isUp: boolean, isReply: boolean) {
|
|||
messages = messages.filter(m => {
|
||||
if (m.deleted) return false;
|
||||
if (!isReply && m.author.id !== meId) return false; // editing only own messages
|
||||
if (hasNoBlockedMessages && NoBlockedMessagesPlugin.isBlocked(m)) return false;
|
||||
if (!MessageTypeSets.REPLYABLE.has(m.type) || m.hasFlag(MessageFlags.EPHEMERAL)) return false;
|
||||
if (settings.store.ignoreBlockedAndIgnored && RelationshipStore.isBlockedOrIgnored(m.author.id)) return false;
|
||||
if (hasNoBlockedMessages && NoBlockedMessagesPlugin.isBlocked(m)) return false;
|
||||
|
||||
return true;
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue