PersonalPins: fixed a small bug breaking notes in DMs

This commit is contained in:
Mirco Wittrien 2019-01-02 10:09:39 +01:00
parent 63909b3fdd
commit 3422064324
1 changed files with 15 additions and 10 deletions

View File

@ -155,7 +155,7 @@ class PersonalPins {
getDescription () {return "Similar to normal pins. Lets you save messages as notes for yourself.";} getDescription () {return "Similar to normal pins. Lets you save messages as notes for yourself.";}
getVersion () {return "1.6.7";} getVersion () {return "1.6.8";}
getAuthor () {return "DevilBro";} getAuthor () {return "DevilBro";}
@ -249,11 +249,10 @@ class PersonalPins {
if (instance.props && instance.props.message && instance.props.channel && instance.props.target && !menu.querySelector(".personalpin-item")) { if (instance.props && instance.props.message && instance.props.channel && instance.props.target && !menu.querySelector(".personalpin-item")) {
let pininstance = BDFDB.getOwnerInstance({node:menu,name:"MessagePinItem"}); let pininstance = BDFDB.getOwnerInstance({node:menu,name:"MessagePinItem"});
if (pininstance && pininstance._reactInternalFiber && pininstance._reactInternalFiber.return && pininstance._reactInternalFiber.return.stateNode) { if (pininstance && pininstance._reactInternalFiber && pininstance._reactInternalFiber.return && pininstance._reactInternalFiber.return.stateNode) {
let pins = BDFDB.loadAllData(this, "pins");
let channel = instance.props.channel; let channel = instance.props.channel;
let {messagediv, pos} = this.getMessageAndPos(instance.props.target); let {messagediv, pos} = this.getMessageAndPos(instance.props.target);
if (!messagediv || pos == -1) return; if (!messagediv || pos == -1) return;
if (pins[channel.guild_id] && pins[channel.guild_id][channel.id] && pins[channel.guild_id][channel.id][instance.props.message.id + "_" + pos]) { if (this.getNoteData(instance.props.message, instance.props.channel, pos)) {
$(this.messageUnpinContextEntryMarkup).insertAfter(pininstance._reactInternalFiber.return.stateNode) $(this.messageUnpinContextEntryMarkup).insertAfter(pininstance._reactInternalFiber.return.stateNode)
.on("click", ".personalpin-unpin-item", () => { .on("click", ".personalpin-unpin-item", () => {
instance._reactInternalFiber.return.memoizedProps.closeContextMenu(); instance._reactInternalFiber.return.memoizedProps.closeContextMenu();
@ -291,7 +290,7 @@ class PersonalPins {
}); });
} }
processMessage (instance, wrapper) { processMessage (instance, wrapper) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton)) { if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton)) {
let buttonwrap = wrapper.querySelector(BDFDB.dotCN.messagebuttoncontainer); let buttonwrap = wrapper.querySelector(BDFDB.dotCN.messagebuttoncontainer);
if (buttonwrap) { if (buttonwrap) {
@ -304,10 +303,9 @@ class PersonalPins {
processMessageOptionPopout (instance, wrapper) { processMessageOptionPopout (instance, wrapper) {
if (instance.props.message && instance.props.target && instance.props.channel && !wrapper.querySelector(".personalpin-itembtn")) { if (instance.props.message && instance.props.target && instance.props.channel && !wrapper.querySelector(".personalpin-itembtn")) {
let pins = BDFDB.loadAllData(this, "pins"); let pins = BDFDB.loadAllData(this, "pins");
let channel = instance.props.channel;
let {messagediv, pos} = this.getMessageAndPos(instance.props.target); let {messagediv, pos} = this.getMessageAndPos(instance.props.target);
if (!messagediv || pos == -1) return; if (!messagediv || pos == -1) return;
if (pins[channel.guild_id] && pins[channel.guild_id][channel.id] && pins[channel.guild_id][channel.id][instance.props.message.id + "_" + pos]) { if (this.getNoteData(instance.props.message, instance.props.channel, pos)) {
$(this.popoutUnpinEntryMarkup) $(this.popoutUnpinEntryMarkup)
.on("click." + this.getName(), () => { .on("click." + this.getName(), () => {
this.removeNoteData(instance.props.message, instance.props.channel, pos); this.removeNoteData(instance.props.message, instance.props.channel, pos);
@ -583,13 +581,20 @@ class PersonalPins {
} }
} }
getNoteData (message, channel, pos) {
let pins = BDFDB.loadAllData(this, "pins");
let guildid = channel.guild_id ? channel.guild_id : "@me";
return pins[guildid] && pins[guildid][channel.id] && pins[guildid][channel.id][message.id + "_" + pos] ? pins[guildid][channel.id][message.id + "_" + pos] : null;
}
removeNoteData (message, channel, pos) { removeNoteData (message, channel, pos) {
if (!message || !channel) return; if (!message || !channel) return;
let pins = BDFDB.loadAllData(this, "pins"); let pins = BDFDB.loadAllData(this, "pins");
delete pins[channel.guild_id][channel.id][message.id + "_" + pos]; let guildid = channel.guild_id ? channel.guild_id : "@me";
if (BDFDB.isObjectEmpty(pins[channel.guild_id][channel.id])) { delete pins[guildid][channel.id][message.id + "_" + pos];
delete pins[channel.guild_id][channel.id]; if (BDFDB.isObjectEmpty(pins[guildid][channel.id])) {
if (BDFDB.isObjectEmpty(pins[channel.guild_id])) delete pins[channel.guild_id]; delete pins[guildid][channel.id];
if (BDFDB.isObjectEmpty(pins[guildid])) delete pins[guildid];
} }
BDFDB.saveAllData(pins, this, "pins"); BDFDB.saveAllData(pins, this, "pins");
BDFDB.showToast(this.labels.toast_noteremove_text, {type:"danger"}); BDFDB.showToast(this.labels.toast_noteremove_text, {type:"danger"});