Can leave / delete a conversation

This commit is contained in:
Pierre HUBERT 2021-03-07 14:28:38 +01:00
parent 506a0a7d38
commit 9dbbf0eb5f
2 changed files with 43 additions and 1 deletions

View File

@ -571,7 +571,7 @@ const ConvChatWindow = {
removeLink.addEventListener("click", async e => { removeLink.addEventListener("click", async e => {
e.preventDefault(); e.preventDefault();
if(!await showConfirmDialog(tr("Do you really want to remove %1% from the conversation ?", {"1": user.fullName}))) if(!await showConfirmDialog(tr("Do you really want to remove %1% from the conversation?", {"1": user.fullName})))
return; return;
try { try {
@ -584,6 +584,36 @@ const ConvChatWindow = {
} }
}) })
} }
// Leave conversation
if(member.user_id == userID()) {
let removeLink = createElem2({
type: "a",
appendTo: status,
innerHTML: tr("Leave")
})
removeLink.addEventListener("click", async e => {
e.preventDefault();
const isLastAdmin = conv.members.filter(m => m.is_admin && m.user_id != userID()).length == 0;
const msg = isLastAdmin ? tr("As you are its last admin, if you leave this conversation, it will be permanently deleted!")
: tr("Do you really want to leave this conversation?");
if(!await showConfirmDialog(msg))
return;
try {
await ConversationsInterface.leaveConversation(conv.id, member.user_id);
// Close the conversation
info.box.closeFunction();
} catch(e) {
console.error(e);
notify(tr("Failed to leave conversation!"), "danger");
}
})
}
} }

View File

@ -483,6 +483,18 @@ const ConversationsInterface = {
}, true); }, true);
}, },
/**
* Leave a conversation
*
* @param {number} convID Conversation ID
* @param {number} userID Target user
*/
leaveConversation: async function(convID, userID) {
await api("conversations/delete", {
conversationID: convID,
userID: userID
}, true);
},
/** /**
* Empty conversations cache * Empty conversations cache