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:(?.{1,2}\..{1,2})\?(?\d+?):(?\d+?),/, + match: /maxValue:(?\i\.\i)\?(?\d+?):(?\d+?),/, replace: "" + "maxValue:$" + "?$*Vencord.Settings.plugins.VolumeBooster.multiplier" + ":$*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: /(?updateAsync\("audioContextSettings".{1,50})(?return (?\i)\.volume=(?\i))/, + replace: "$if($>200)return $.volume=200;$" + }, + { + match: /(?Object\.entries\(\i\.localMutes\).+?)volume:(?.+?),/, + replace: "$volume:$>200?200:$," + }, + { + match: /(?Object\.entries\(\i\.localVolumes\).+?)volume:(?.+?)}\)/, + replace: "$volume:$>200?200:$})" + } + ] }, + // Prevent the MediaEngineStore from overwriting our LocalVolumes above 200 with the ones the Discord Audio Context Settings sync sends { - find: "currentVolume:", - replacement: { - match: /maxValue:(?.{1,2}\..{1,2})\?(?\d+?):(?\d+?),/, - replace: "" - + "maxValue:$" - + "?$*Vencord.Settings.plugins.VolumeBooster.multiplier" - + ":$*Vencord.Settings.plugins.VolumeBooster.multiplier," - } + find: '.displayName="MediaEngineStore"', + replacement: [ + { + match: /(?\.settings\.audioContextSettings.+?)(?\i\[\i\])=(?\i\.volume)(?.+?)setLocalVolume\((?.+?),.+?\)/, + replace: "" + + "$" + + "($>200?undefined:$=$)" + + "$" + + "setLocalVolume($,$??$)" + } + ] } ],