aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorNuckyz <61953774+Nuckyz@users.noreply.github.com>2023-01-21 10:41:10 -0300
committerGitHub <noreply@github.com>2023-01-21 14:41:10 +0100
commit9602f527d8e2a8c90856d76c1da5d9a592fc08fc (patch)
tree1eba3cda08074f1a9d76a700272ab0c7eda9852b /src/plugins
parent64180362fda076519c310f74e9245c94543edd39 (diff)
downloadVencord-9602f527d8e2a8c90856d76c1da5d9a592fc08fc.tar.gz
Vencord-9602f527d8e2a8c90856d76c1da5d9a592fc08fc.tar.bz2
Vencord-9602f527d8e2a8c90856d76c1da5d9a592fc08fc.zip
Future proof Volume Booster to work with volume settings syncing (#439)
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/volumeBooster.ts48
1 files changed, 37 insertions, 11 deletions
diff --git a/src/plugins/volumeBooster.ts b/src/plugins/volumeBooster.ts
index 49d9d54..6553a5c 100644
--- a/src/plugins/volumeBooster.ts
+++ b/src/plugins/volumeBooster.ts
@@ -26,25 +26,51 @@ export default definePlugin({
description: "Allows you to set the user and stream volume above the default maximum.",
patches: [
- {
- find: ".Messages.USER_VOLUME",
+ // Change the max volume for sliders to allow for values above 200
+ ...[
+ ".Messages.USER_VOLUME",
+ "currentVolume:"
+ ].map(find => ({
+ find,
replacement: {
- match: /maxValue:(?<defaultMaxVolumePredicate>.{1,2}\..{1,2})\?(?<higherMaxVolume>\d+?):(?<minorMaxVolume>\d+?),/,
+ match: /maxValue:(?<defaultMaxVolumePredicate>\i\.\i)\?(?<higherMaxVolume>\d+?):(?<minorMaxVolume>\d+?),/,
replace: ""
+ "maxValue:$<defaultMaxVolumePredicate>"
+ "?$<higherMaxVolume>*Vencord.Settings.plugins.VolumeBooster.multiplier"
+ ":$<minorMaxVolume>*Vencord.Settings.plugins.VolumeBooster.multiplier,"
}
+ })),
+ // Prevent Audio Context Settings sync from trying to sync with values above 200, changing them to 200 before we send to Discord
+ {
+ find: "AudioContextSettingsMigrated",
+ replacement: [
+ {
+ match: /(?<restOfFunction>updateAsync\("audioContextSettings".{1,50})(?<volumeChangeExpression>return (?<volumeOptions>\i)\.volume=(?<newVolume>\i))/,
+ replace: "$<restOfFunction>if($<newVolume>>200)return $<volumeOptions>.volume=200;$<volumeChangeExpression>"
+ },
+ {
+ match: /(?<restOfFunction>Object\.entries\(\i\.localMutes\).+?)volume:(?<volumeExpression>.+?),/,
+ replace: "$<restOfFunction>volume:$<volumeExpression>>200?200:$<volumeExpression>,"
+ },
+ {
+ match: /(?<restOfFunction>Object\.entries\(\i\.localVolumes\).+?)volume:(?<volumeExpression>.+?)}\)/,
+ replace: "$<restOfFunction>volume:$<volumeExpression>>200?200:$<volumeExpression>})"
+ }
+ ]
},
+ // Prevent the MediaEngineStore from overwriting our LocalVolumes above 200 with the ones the Discord Audio Context Settings sync sends
{
- find: "currentVolume:",
- replacement: {
- match: /maxValue:(?<defaultMaxVolumePredicate>.{1,2}\..{1,2})\?(?<higherMaxVolume>\d+?):(?<minorMaxVolume>\d+?),/,
- replace: ""
- + "maxValue:$<defaultMaxVolumePredicate>"
- + "?$<higherMaxVolume>*Vencord.Settings.plugins.VolumeBooster.multiplier"
- + ":$<minorMaxVolume>*Vencord.Settings.plugins.VolumeBooster.multiplier,"
- }
+ find: '.displayName="MediaEngineStore"',
+ replacement: [
+ {
+ match: /(?<restOfFunction>\.settings\.audioContextSettings.+?)(?<localVolume>\i\[\i\])=(?<syncVolume>\i\.volume)(?<secondRestOfFunction>.+?)setLocalVolume\((?<id>.+?),.+?\)/,
+ replace: ""
+ + "$<restOfFunction>"
+ + "($<localVolume>>200?undefined:$<localVolume>=$<syncVolume>)"
+ + "$<secondRestOfFunction>"
+ + "setLocalVolume($<id>,$<localVolume>??$<syncVolume>)"
+ }
+ ]
}
],