Add the ability for a user to delete their own extension
This commit is contained in:
parent
b191299b2e
commit
09fb9f48c8
|
@ -9,6 +9,25 @@
|
||||||
"description": "Get an extension on the Telefreunde Community Phone System",
|
"description": "Get an extension on the Telefreunde Community Phone System",
|
||||||
"type": 1
|
"type": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "delete",
|
||||||
|
"description": "Remove your extension from the Telefreunde Community Phone System",
|
||||||
|
"type": 1,
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "confirm",
|
||||||
|
"description": "Confirm that you want to delete your extension. THIS CANNOT BE UNDONE!",
|
||||||
|
"type": 5,
|
||||||
|
"required": true,
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"name": "yes",
|
||||||
|
"value": "yes"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "list",
|
"name": "list",
|
||||||
"description": "List all extensions on the Telefreunde Community Phone System",
|
"description": "List all extensions on the Telefreunde Community Phone System",
|
||||||
|
|
7
funcs.js
7
funcs.js
|
@ -61,6 +61,13 @@ module.exports = {
|
||||||
}
|
}
|
||||||
}`;
|
}`;
|
||||||
break;
|
break;
|
||||||
|
case 'delete':
|
||||||
|
return `mutation {
|
||||||
|
deleteExtension(input: {extensionId: ${args.ext}}) {
|
||||||
|
status
|
||||||
|
}
|
||||||
|
}`;
|
||||||
|
break;
|
||||||
case 'reload':
|
case 'reload':
|
||||||
return `mutation {
|
return `mutation {
|
||||||
doreload(input: {clientMutationId: "${args.id}"}) {
|
doreload(input: {clientMutationId: "${args.id}"}) {
|
||||||
|
|
57
index.js
57
index.js
|
@ -58,6 +58,29 @@ const createExtension = (ext, name, uid) => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// deleteExtension, takes an extension number
|
||||||
|
const deleteExtension = (ext) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
pbxClient.request(funcs.generateQuery('delete', {
|
||||||
|
ext: ext
|
||||||
|
})).then((result) => {
|
||||||
|
pbxClient.request(funcs.generateQuery('reload', {
|
||||||
|
id: "DeleteExt"
|
||||||
|
})).then((result) => {
|
||||||
|
res = {
|
||||||
|
"status": "deleted",
|
||||||
|
"result": result
|
||||||
|
}
|
||||||
|
resolve(res);
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const lookupExtension = (ident, type) => { // type is either "ext" or "uid"
|
const lookupExtension = (ident, type) => { // type is either "ext" or "uid"
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@ -292,6 +315,40 @@ dcClient.on('interactionCreate', async interaction => {
|
||||||
ephemeral: true
|
ephemeral: true
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
|
case "delete":
|
||||||
|
if (interaction.options.get("confirm").value == false) {
|
||||||
|
interaction.reply({
|
||||||
|
content: "Please confirm you want to delete your extension by running `/delete confirm:true`",
|
||||||
|
ephemeral: true
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
interaction.reply({ content: "Please Wait...", ephemeral: true })
|
||||||
|
lookupExtension(interaction.user.id, "uid").then((result) => {
|
||||||
|
if (result.status == "exists") {
|
||||||
|
// The user has an extension, delete it
|
||||||
|
deleteExtension(result.result.fetchExtension.user.extension).then((result) => {
|
||||||
|
if (result.status == "deleted") {
|
||||||
|
interaction.editReply({
|
||||||
|
content: "Extension Deleted!",
|
||||||
|
ephemeral: true
|
||||||
|
})
|
||||||
|
// Remove the role from the user on Discord based on the ID in the config file
|
||||||
|
let role = interaction.guild.roles.cache.find(role => role.id === config.discord.roleId);
|
||||||
|
interaction.member.roles.remove(role);
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
interaction.reply(`Error deleting extension: ${error}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
// The user doesn't have an extension, return an ephemeral message saying so
|
||||||
|
interaction.editReply({
|
||||||
|
content: "You don't have an extension!",
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue