This commit is contained in:
poslop
2023-02-03 18:50:35 -06:00
parent a81ed41ae7
commit d038ef3742
17 changed files with 426 additions and 422 deletions

View File

@@ -2,7 +2,7 @@
* @name NotificationSounds
* @author DevilBro
* @authorId 278543574059057154
* @version 3.7.5
* @version 3.7.6
* @description Allows you to replace the native Sounds with custom Sounds
* @invite Jx3TjNS
* @donate https://www.paypal.me/MircoWittrien
@@ -85,9 +85,9 @@ module.exports = (_ => {
const WebAudioSound = class WebAudioSound {
constructor (type) {
this._name = type;
this.name = type;
this._src = audios[choices[type].category][choices[type].sound] || types[type].src;
this._volume = choices[type].volume;
this._volume = choices[type].volume / 100;
}
loop () {
this._ensureAudio().then(audio => {
@@ -133,7 +133,7 @@ module.exports = (_ => {
let audio = new Audio;
audio.src = this._src && this._src.startsWith("data") ? this._src.replace(/ /g, "") : this._src;
audio.onloadeddata = _ => {
audio.volume = Math.min((BDFDB.LibraryStores.MediaEngineStore.getOutputVolume() / 100) * (this._volume / 100) * (volumes.globalVolume / 100), 1);
audio.volume = Math.min((BDFDB.LibraryStores.MediaEngineStore.getOutputVolume() / 100) * this._volume * (volumes.globalVolume / 100), 1);
BDFDB.DiscordUtils.isPlaformEmbedded() && audio.setSinkId(currentDevice || defaultDevice);
callback(audio);
};
@@ -157,7 +157,9 @@ module.exports = (_ => {
};
this.patchPriority = 9;
}
onStart () {
const soundKeys = BDFDB.LibraryModules.SoundParser.keys();
for (let key of soundKeys) {
const id = key.replace("./", "").replace(".mp3", "");
@@ -193,9 +195,7 @@ module.exports = (_ => {
types = BDFDB.ObjectUtils.sort(types, "name");
}
for (let pack in defaultAudios) defaultAudios[pack] = BDFDB.ObjectUtils.sort(defaultAudios[pack]);
}
onStart () {
if (BDFDB.DiscordUtils.isPlaformEmbedded()) {
let change = _ => {
if (window.navigator.mediaDevices && window.navigator.mediaDevices.enumerateDevices) {
@@ -280,34 +280,46 @@ module.exports = (_ => {
let soundObjIndex = Array.from(e.methodArguments).findIndex(n => n && n.sound);
if (soundObjIndex && e.methodArguments[soundObjIndex].sound.includes("message")) e.methodArguments[soundObjIndex].sound = null;
}});
BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.SoundUtils, "playSound", {instead: e => {
let type = e.methodArguments[0];
if (type && choices[type]) {
e.stopOriginalMethodCall();
BDFDB.TimeUtils.timeout(_ => {
if (type == "message1") {
let called = false;
for (let subType of [type].concat(Object.keys(message1Types))) if (firedEvents[subType]) {
delete firedEvents[subType];
called = true;
break;
if (BDFDB.LibraryModules.SoundUtils && BDFDB.LibraryModules.SoundUtils.createSound) {
let cancel = BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.SoundUtils, "createSound", {after: e => {
if (e.returnValue && e.returnValue.constructor && e.returnValue.constructor.prototype && typeof e.returnValue.constructor.prototype.play == "function") {
cancel();
BDFDB.PatchUtils.patch(this, e.returnValue.constructor.prototype, ["play", "loop"], {instead: e2 => {
let type = e2.instance && e2.instance.name;
if (type && choices[type]) {
let loop = e2.originalMethodName == "loop";
e2.stopOriginalMethodCall();
BDFDB.TimeUtils.timeout(_ => {
if (type == "message1") {
let called = false;
for (let subType of [type].concat(Object.keys(message1Types))) if (firedEvents[subType]) {
delete firedEvents[subType];
called = true;
break;
}
if (!called) this.playAudio(type, loop);
}
else this.playAudio(type, loop);
});
}
if (!called) this.playAudio(type);
}
else this.playAudio(type);
});
}
else e.callOriginalMethodAfterwards();
}});
BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.SoundUtils, ["createSound", "createSoundpackSound"], {after: e => {
let type = e.methodArguments[0];
if (type && choices[type]) {
let audio = new WebAudioSound(type);
createdAudios[type] = audio;
return audio;
}
else BDFDB.LogUtils.warn(`Could not create Sound for "${type}".`, this);
}});
else e2.callOriginalMethodAfterwards();
}});
BDFDB.PatchUtils.patch(this, e.returnValue.constructor.prototype, "stop", {after: e2 => {
let type = e2.instance && e2.instance.name;
if (type && createdAudios[type]) createdAudios[type].stop();
}});
}
return;
let type = e.methodArguments[0];
if (type && choices[type]) {
let audio = new WebAudioSound(type);
createdAudios[type] = audio;
return audio;
}
else BDFDB.LogUtils.warn(`Could not create Sound for "${type}".`, this);
}}, {noCache: true});
BDFDB.LibraryModules.SoundUtils.createSound("call_calling");
}
this.loadAudios();
this.loadChoices();
@@ -661,7 +673,7 @@ module.exports = (_ => {
forceUpdateAll () {
volumes = BDFDB.DataUtils.get(this, "volumes");
if (BDFDB.LibraryStores.SoundpackStore) BDFDB.LibraryStores.SoundpackStore.emitChange();
BDFDB.PatchUtils.forceAllUpdates(this);
BDFDB.DiscordUtils.rerenderAll();
}
@@ -700,11 +712,11 @@ module.exports = (_ => {
}
}
playAudio (type) {
playAudio (type, loop = false) {
if (this.dontPlayAudio(type) || BDFDB.LibraryStores.StreamerModeStore.disableSounds) return;
if (createdAudios[type]) createdAudios[type].stop();
createdAudios[type] = new WebAudioSound(type);
createdAudios[type].play();
createdAudios[type][loop ? "loop" : "play"]();
}
isSuppressMentionsEnabled (guildId, channelId) {