Merge branch 'dev' into modules-proxy-patches
This commit is contained in:
commit
3e2952890f
|
@ -182,8 +182,8 @@ export default definePlugin({
|
||||||
|
|
||||||
// add dearrow button
|
// add dearrow button
|
||||||
{
|
{
|
||||||
match: /children:\[(?=null!=\i\?\i\.renderSuppressButton)/,
|
match: /children:\[(?=null!=\i\?(\i)\.renderSuppressButton)/,
|
||||||
replace: "children:[$self.renderButton(this),",
|
replace: "children:[$self.renderButton($1),",
|
||||||
predicate: () => !settings.store.hideButton
|
predicate: () => !settings.store.hideButton
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
35
src/plugins/dontRoundMyTimestamps/index.ts
Normal file
35
src/plugins/dontRoundMyTimestamps/index.ts
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Vencord, a modification for Discord's desktop app
|
||||||
|
* Copyright (c) 2023 Vendicated and contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Devs } from "@utils/constants";
|
||||||
|
import definePlugin from "@utils/types";
|
||||||
|
import { moment } from "@webpack/common";
|
||||||
|
|
||||||
|
export default definePlugin({
|
||||||
|
name: "DontRoundMyTimestamps",
|
||||||
|
authors: [Devs.Lexi],
|
||||||
|
description: "Always rounds relative timestamps down, so 7.6y becomes 7y instead of 8y",
|
||||||
|
|
||||||
|
start() {
|
||||||
|
moment.relativeTimeRounding(Math.floor);
|
||||||
|
},
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
moment.relativeTimeRounding(Math.round);
|
||||||
|
}
|
||||||
|
});
|
|
@ -67,15 +67,18 @@ export const Magnifier = ErrorBoundary.wrap<MagnifierProps>(({ instance, size: i
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const syncVideos = () => {
|
const syncVideos = () => {
|
||||||
currentVideoElementRef.current!.currentTime = originalVideoElementRef.current!.currentTime;
|
if (currentVideoElementRef.current && originalVideoElementRef.current)
|
||||||
|
currentVideoElementRef.current.currentTime = originalVideoElementRef.current.currentTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateMousePosition = (e: MouseEvent) => {
|
const updateMousePosition = (e: MouseEvent) => {
|
||||||
|
if (!element.current) return;
|
||||||
|
|
||||||
if (instance.state.mouseOver && instance.state.mouseDown) {
|
if (instance.state.mouseOver && instance.state.mouseDown) {
|
||||||
const offset = size.current / 2;
|
const offset = size.current / 2;
|
||||||
const pos = { x: e.pageX, y: e.pageY };
|
const pos = { x: e.pageX, y: e.pageY };
|
||||||
const x = -((pos.x - element.current!.getBoundingClientRect().left) * zoom.current - offset);
|
const x = -((pos.x - element.current.getBoundingClientRect().left) * zoom.current - offset);
|
||||||
const y = -((pos.y - element.current!.getBoundingClientRect().top) * zoom.current - offset);
|
const y = -((pos.y - element.current.getBoundingClientRect().top) * zoom.current - offset);
|
||||||
setLensPosition({ x: e.x - offset, y: e.y - offset });
|
setLensPosition({ x: e.x - offset, y: e.y - offset });
|
||||||
setImagePosition({ x, y });
|
setImagePosition({ x, y });
|
||||||
setOpacity(1);
|
setOpacity(1);
|
||||||
|
@ -184,6 +187,7 @@ export const Magnifier = ErrorBoundary.wrap<MagnifierProps>(({ instance, size: i
|
||||||
src={originalVideoElementRef.current?.src ?? instance.props.src}
|
src={originalVideoElementRef.current?.src ?? instance.props.src}
|
||||||
autoPlay
|
autoPlay
|
||||||
loop
|
loop
|
||||||
|
muted
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<img
|
<img
|
||||||
|
|
|
@ -18,88 +18,82 @@
|
||||||
|
|
||||||
import { definePluginSettings } from "@api/Settings";
|
import { definePluginSettings } from "@api/Settings";
|
||||||
import { Devs } from "@utils/constants";
|
import { Devs } from "@utils/constants";
|
||||||
|
import { Logger } from "@utils/Logger";
|
||||||
import definePlugin, { OptionType } from "@utils/types";
|
import definePlugin, { OptionType } from "@utils/types";
|
||||||
|
import presetQuotesText from "file://quotes.txt";
|
||||||
|
|
||||||
// These are Xor encrypted to prevent you from spoiling yourself when you read the source code.
|
const presetQuotes = presetQuotesText.split("\n").map(quote => /^\s*[^#\s]/.test(quote) && quote.trim()).filter(Boolean) as string[];
|
||||||
// don't worry about it :P
|
const noQuotesQuote = "Did you really disable all loading quotes? What a buffoon you are...";
|
||||||
const quotes = [
|
|
||||||
"Eyrokac",
|
|
||||||
"Rdcg$l`'k|~n",
|
|
||||||
'H`tf$d&iajo+d`{"',
|
|
||||||
"Sucqplh`(Eclhualva()&",
|
|
||||||
"Lncgmka'8KNMDC,shpanf'`x./,",
|
|
||||||
"Ioqweijnfn*IeuvfvAotkfxo./,",
|
|
||||||
'Hd{#cp\x7Ft$)nbd!{lq%mig~*\x7Fh`v#mk&sm{gx nd#idjb(a\x7Ffao"bja&amdkge!Rloìkhf)hyedfjjb*\'^hzdrdmm$lu\'|ao+mnqw$fijxh~bbmg#Tjmîefd+fnp#lpkffz5',
|
|
||||||
"h",
|
|
||||||
"sijklm&cam*rot\"hjjq'|ak\x7F xmv#wc'ep*mawmvvlrb(|ynr>\"Aqq&cgg-\x7F ugoh%rom)e\x7Fhdpp%$",
|
|
||||||
'Tnfb}"u\'~`nno!kp$vvhfzeyee"a}%Tfam*Xh`fls%Jboldos-"lj`&hn)~ce!`jcbct|)gdbhnf$wikm$zgaxkmc%afely+og"144?\'ign+iu%p$qisiefr gpfa$',
|
|
||||||
"Ndtfv%ahfgk+ghtf$|ir(|z' Oguaw&`ggdj mgw$|ir(me|n",
|
|
||||||
"(!ͣ³$͙ʐ'ͩ¹#",
|
|
||||||
"(ネ◗ロ◑,マ-2ャユ✬",
|
|
||||||
"Ynw#hjil(ze+psgwp|&sgmkr!",
|
|
||||||
"Tikmolh`(fl+a!dvjk\x7F'y|e\x7Fe/,-",
|
|
||||||
"3/3750?5><9>885:7",
|
|
||||||
"mdmt",
|
|
||||||
"Wdn`khc+(oxbeof",
|
|
||||||
'Ig"zkp*\'g{*xolglj`&~g|*gowg/$mgt(Eclm`.#ticf{l*xed"wl`&Kangj igbhqn\'d`dn `v#lqrw{3%$bhv-h|)kangj_imwhlhb',
|
|
||||||
"Tscmw%Tnoa~x",
|
|
||||||
"I‘f#npus(ec`e!vl$lhsm{`ncu\"ekw&f(defeov-$Rnf|)sdu‘pf$wcam{ceg!vl$du'D`d~x-\"jw%oi(okht-\"DJP)Kags,!mq$du'A‐|n sg`akrkq)~jkdl#pj&diefbnf\"jp)&@F\\*{ltq#Hlhrp'",
|
|
||||||
"Ynw$v`&cg`dl fml`%rhlhs*",
|
|
||||||
"Dnl$p%qhz{s' hv$w%hh|aceg!;#gpvt(fl+cndea`&dg|fon&v#wjjqm(",
|
|
||||||
"\ud83d)pft`gs(ec`e!13$qojmz#",
|
|
||||||
"a!njcmr'ide~nu\"lb%rheoedldpz$lu'gbkr",
|
|
||||||
"dn\"zkp&kgo4",
|
|
||||||
"hnpqkw",
|
|
||||||
"sn\"fau",
|
|
||||||
"Sn\"tmqnh}}*musvkaw&flf&+ldv$w%lr{}*aulr#vlao|)cetn\"jp$",
|
|
||||||
"Dxkmc%ot(hhxomwwai'{hln",
|
|
||||||
"hd{#}js&(pe~'sg#gprb(3#\"",
|
|
||||||
"hd{b${",
|
|
||||||
"<;vqkijbq33271:56<3799?24944:",
|
|
||||||
"Thof$lu'ofdn,!qsefc'az*bnrcma+&Om{o+iu\"`khct$)bnrd\"bcdoi&",
|
|
||||||
"snofplkb{)c'r\"lod'|f*aurv#cpno`abchijklmno",
|
|
||||||
"Wdn`khc'|f*eghl{%"
|
|
||||||
];
|
|
||||||
|
|
||||||
const settings = definePluginSettings({
|
const settings = definePluginSettings({
|
||||||
replaceEvents: {
|
replaceEvents: {
|
||||||
description: "Replace Event Quotes too",
|
description: "Should this plugin also apply during events with special event themed quotes? (e.g. Halloween)",
|
||||||
type: OptionType.BOOLEAN,
|
type: OptionType.BOOLEAN,
|
||||||
default: true
|
default: true
|
||||||
}
|
},
|
||||||
|
enablePluginPresetQuotes: {
|
||||||
|
description: "Enable the quotes preset by this plugin",
|
||||||
|
type: OptionType.BOOLEAN,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
enableDiscordPresetQuotes: {
|
||||||
|
description: "Enable Discord's preset quotes (including event quotes, during events)",
|
||||||
|
type: OptionType.BOOLEAN,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
additionalQuotes: {
|
||||||
|
description: "Additional custom quotes to possibly appear, separated by the below delimiter",
|
||||||
|
type: OptionType.STRING,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
additionalQuotesDelimiter: {
|
||||||
|
description: "Delimiter for additional quotes",
|
||||||
|
type: OptionType.STRING,
|
||||||
|
default: "|",
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default definePlugin({
|
export default definePlugin({
|
||||||
name: "LoadingQuotes",
|
name: "LoadingQuotes",
|
||||||
description: "Replace Discords loading quotes",
|
description: "Replace Discords loading quotes",
|
||||||
authors: [Devs.Ven, Devs.KraXen72],
|
authors: [Devs.Ven, Devs.KraXen72, Devs.UlyssesZhan],
|
||||||
|
|
||||||
settings,
|
settings,
|
||||||
|
|
||||||
patches: [
|
patches: [
|
||||||
{
|
{
|
||||||
find: ".LOADING_DID_YOU_KNOW}",
|
find: ".LOADING_DID_YOU_KNOW",
|
||||||
replacement: [
|
replacement: [
|
||||||
{
|
{
|
||||||
match: /"_loadingText",function\(\)\{/,
|
match: /"_loadingText".+?(?=(\i)\[.{0,10}\.random)/,
|
||||||
replace: "$&return $self.quote;",
|
replace: "$&$self.mutateQuotes($1),"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
match: /"_eventLoadingText",function\(\)\{/,
|
match: /"_eventLoadingText".+?(?=(\i)\[.{0,10}\.random)/,
|
||||||
replace: "$&return $self.quote;",
|
replace: "$&$self.mutateQuotes($1),",
|
||||||
predicate: () => settings.store.replaceEvents
|
predicate: () => settings.store.replaceEvents
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
xor(quote: string) {
|
mutateQuotes(quotes: string[]) {
|
||||||
const key = "read if cute";
|
try {
|
||||||
const codes = Array.from(quote, (s, i) => s.charCodeAt(0) ^ (i % key.length));
|
const { enableDiscordPresetQuotes, additionalQuotes, additionalQuotesDelimiter, enablePluginPresetQuotes } = settings.store;
|
||||||
return String.fromCharCode(...codes);
|
|
||||||
},
|
|
||||||
|
|
||||||
get quote() {
|
if (!enableDiscordPresetQuotes)
|
||||||
return this.xor(quotes[Math.floor(Math.random() * quotes.length)]);
|
quotes.length = 0;
|
||||||
|
|
||||||
|
|
||||||
|
if (enablePluginPresetQuotes)
|
||||||
|
quotes.push(...presetQuotes);
|
||||||
|
|
||||||
|
quotes.push(...additionalQuotes.split(additionalQuotesDelimiter).filter(Boolean));
|
||||||
|
|
||||||
|
if (!quotes.length)
|
||||||
|
quotes.push(noQuotesQuote);
|
||||||
|
} catch (e) {
|
||||||
|
new Logger("LoadingQuotes").error("Failed to mutate quotes", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
37
src/plugins/loadingQuotes/quotes.txt
Normal file
37
src/plugins/loadingQuotes/quotes.txt
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Blank lines and lines starting with "#" are ignored
|
||||||
|
|
||||||
|
Explode
|
||||||
|
Read if cute
|
||||||
|
Have a nice day!
|
||||||
|
Starting Lightcord...
|
||||||
|
Loading 0BDFDB.plugin.js...
|
||||||
|
Installing BetterDiscord...
|
||||||
|
h
|
||||||
|
shhhhh did you know that you're my favourite user? But don't tell the others!!
|
||||||
|
Today's video is sponsored by Raid Shadow Legends, one of the biggest mobile role-playing games of 2019 and it's totally free!
|
||||||
|
Never gonna give you up, Never gonna let you down
|
||||||
|
( ͡° ͜ʖ ͡°)
|
||||||
|
(ノ◕ヮ◕)ノ*:・゚✧
|
||||||
|
You look so pretty today!
|
||||||
|
Thinking of a funny quote...
|
||||||
|
3.141592653589793
|
||||||
|
meow
|
||||||
|
Welcome, friend
|
||||||
|
If you, or someone you love, has Ligma, please see the Ligma health line at https://bit.ly/ligma_hotline
|
||||||
|
Trans Rights
|
||||||
|
I’d just like to interject for a moment. What you’re refering to as Linux, is in fact, GNU/Linux, or as I’ve recently taken to calling it, GNU plus Linux.
|
||||||
|
You're doing good today!
|
||||||
|
Don't worry, it's nothing 9 cups of coffee couldn't solve!
|
||||||
|
<EFBFBD>(repeat like 30 times)
|
||||||
|
a light amount of tomfoolery is okay
|
||||||
|
do you love?
|
||||||
|
horror
|
||||||
|
so eepy
|
||||||
|
So without further ado, let's just jump right into it!
|
||||||
|
Dying is absolutely safe
|
||||||
|
hey you! you're cute :))
|
||||||
|
heya ~
|
||||||
|
<:trolley:997086295010594867>
|
||||||
|
Time is gone, space is insane. Here it comes, here again.
|
||||||
|
sometimes it's okay to just guhhhhhhhhhhhhhh
|
||||||
|
Welcome to nginx!
|
5
src/plugins/maskedLinkPaste/README.md
Normal file
5
src/plugins/maskedLinkPaste/README.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# MaskedLinkPaste
|
||||||
|
|
||||||
|
Pasting a link while you have text selected will paste your link as a masked link at that location
|
||||||
|
|
||||||
|
![](https://github.com/Vendicated/Vencord/assets/78964224/1d3be2c6-7957-44c9-92ec-551069d46c02)
|
36
src/plugins/maskedLinkPaste/index.ts
Normal file
36
src/plugins/maskedLinkPaste/index.ts
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Vencord, a Discord client mod
|
||||||
|
* Copyright (c) 2023 Vendicated and contributors
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Devs } from "@utils/constants.js";
|
||||||
|
import definePlugin from "@utils/types";
|
||||||
|
import { findByPropsLazy } from "@webpack";
|
||||||
|
|
||||||
|
const linkRegex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
|
||||||
|
|
||||||
|
const { SlateTransforms } = findByPropsLazy("SlateTransforms");
|
||||||
|
|
||||||
|
export default definePlugin({
|
||||||
|
name: "MaskedLinkPaste",
|
||||||
|
authors: [Devs.TheSun],
|
||||||
|
description: "Pasting a link while having text selected will paste a hyperlink",
|
||||||
|
patches: [{
|
||||||
|
find: ".selection,preventEmojiSurrogates:",
|
||||||
|
replacement: {
|
||||||
|
match: /(?<=SlateTransforms.delete.{0,50})(\i)\.insertText\((\i)\)/,
|
||||||
|
replace: "$self.handlePaste($1, $2, () => $&)"
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
|
handlePaste(editor, content: string, originalBehavior: () => void) {
|
||||||
|
if (content && linkRegex.test(content) && editor.operations?.[0]?.type === "remove_text") {
|
||||||
|
SlateTransforms.insertText(
|
||||||
|
editor,
|
||||||
|
`[${editor.operations[0].text}](${content})`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else originalBehavior();
|
||||||
|
}
|
||||||
|
});
|
|
@ -3,6 +3,11 @@
|
||||||
color: var(--status-danger, #f04747) !important;
|
color: var(--status-danger, #f04747) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Markdown title highlighting */
|
||||||
|
.messagelogger-deleted [class*="contents"] :is(h1, h2, h3) {
|
||||||
|
color: var(--status-danger, #f04747) !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* Bot "thinking" text highlighting */
|
/* Bot "thinking" text highlighting */
|
||||||
.messagelogger-deleted [class*="colorStandard"] {
|
.messagelogger-deleted [class*="colorStandard"] {
|
||||||
color: var(--status-danger, #f04747) !important;
|
color: var(--status-danger, #f04747) !important;
|
||||||
|
|
|
@ -27,10 +27,10 @@ import style from "./index.css?managed";
|
||||||
const API_URL = "https://usrbg.is-hardly.online/users";
|
const API_URL = "https://usrbg.is-hardly.online/users";
|
||||||
|
|
||||||
interface UsrbgApiReturn {
|
interface UsrbgApiReturn {
|
||||||
endpoint: string
|
endpoint: string;
|
||||||
bucket: string
|
bucket: string;
|
||||||
prefix: string
|
prefix: string;
|
||||||
users: Record<string, string>
|
users: Record<string, string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const settings = definePluginSettings({
|
const settings = definePluginSettings({
|
||||||
|
@ -73,6 +73,19 @@ export default definePlugin({
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
find: /overrideBannerSrc:\i,profileType:/,
|
||||||
|
replacement: [
|
||||||
|
{
|
||||||
|
match: /(\i)\.premiumType/,
|
||||||
|
replace: "$self.premiumHook($1)||$&"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
match: /(?<=function \i\((\i)\)\{)(?=var.{30,50},overrideBannerSrc:)/,
|
||||||
|
replace: "$1.overrideBannerSrc=$self.useBannerHook($1);"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
find: "\"data-selenium-video-tile\":",
|
find: "\"data-selenium-video-tile\":",
|
||||||
predicate: () => settings.store.voiceBackground,
|
predicate: () => settings.store.voiceBackground,
|
||||||
|
|
|
@ -185,7 +185,7 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
||||||
id: 296776625432035328n,
|
id: 296776625432035328n,
|
||||||
},
|
},
|
||||||
TheSun: {
|
TheSun: {
|
||||||
name: "ActuallyTheSun",
|
name: "sunnie",
|
||||||
id: 406028027768733696n
|
id: 406028027768733696n
|
||||||
},
|
},
|
||||||
axyie: {
|
axyie: {
|
||||||
|
@ -401,6 +401,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
||||||
name: "maisy",
|
name: "maisy",
|
||||||
id: 257109471589957632n,
|
id: 257109471589957632n,
|
||||||
},
|
},
|
||||||
|
Lexi: {
|
||||||
|
name: "Lexi",
|
||||||
|
id: 506101469787717658n
|
||||||
|
},
|
||||||
Mopi: {
|
Mopi: {
|
||||||
name: "Mopi",
|
name: "Mopi",
|
||||||
id: 1022189106614243350n
|
id: 1022189106614243350n
|
||||||
|
|
Loading…
Reference in a new issue