dashboard-core/theme/dbd-soft-ui/pages/post/guildSettings.js

392 lines
10 KiB
JavaScript
Raw Normal View History

2023-06-19 14:21:58 +05:00
module.exports = {
2023-06-22 19:36:52 +05:00
page: "/guild/update/:guildId/",
// eslint-disable-next-line no-unused-vars
execute: async (req, res, app, config, themeConfig, info) => {
const data = req.body;
let setNewRes;
const errors = [];
const successes = [];
if (!req.session?.user) return res.send({
success: false,
message: "User is not logged in",
});
const userGuildMemberObject = config.bot.guilds.cache.get(req.params.guildId).members.cache.get(req.session.user.id);
const guildObject = config.bot.guilds.cache.get(req.params.guildId);
const category = config.settings?.find(c => c.categoryId == req.query.categoryId);
const catO = [];
const catToggle = [];
if (data.categoryToggle) {
for (const s of data.categoryToggle) {
if (!config.useCategorySet) try {
const category = config.settings?.find(c => c?.categoryId == s.id);
await category.setNew({
guild: { id: req.params.guildId },
newData: s.value,
});
} catch (err) {
errors.push(`Category ${s.id} %is%Failed to save%is%categoryToggle`);
}
else {
if (category?.categoryId == s.id) catO.push({
optionId: category.categoryId == s.id ? "categoryToggle" : s.id,
data: s.value,
});
else catToggle.push({
optionId: s.id,
data: s.value,
});
}
}
if ("categoryToggle" in data && !category) {
return res.send({
success: true,
message: "Saved toggle",
errors: [],
successes: [],
});
}
}
if (!category) return res.send({
error: true,
message: "No category found",
});
const subOptions = category.categoryOptionsList.filter(o => o.optionType.type == "multiRow").map(o => o.optionType.options).flat();
const newOptionsList = [
...category.categoryOptionsList.filter((o) => o.optionType.type != "multiRow"),
...subOptions,
];
if (data.options)
for (const option of newOptionsList) {
const d = data.options.find(o => o.id === option.optionId);
let canUse = {};
if (!d && !d?.id) continue;
if (option.allowedCheck) canUse = await option.allowedCheck({
guild: { id: req.params.guildId },
user: { id: req.session.user.id },
});
else canUse = {
allowed: true,
errorMessage: null,
};
if (canUse.allowed == false) {
setNewRes = {
error: canUse.errorMessage,
};
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
} else if (option.optionType != "spacer") {
if (config.useCategorySet) {
if (option.optionType.type == "rolesMultiSelect" || option.optionType.type == "channelsMultiSelect" || option.optionType.type == "multiSelect" || option.optionType.type == "tagInput") {
if (!d.value || d.value == null || d.value == undefined) catO.push({
optionId: option.optionId,
data: [],
});
else if (typeof d.value != "object") catO.push({
optionId: option.optionId,
data: [d.value],
});
else catO.push({
optionId: option.optionId,
data: d.value,
});
} else if (option.optionType.type == "switch") {
if (d.value || d.value == null || d.value == undefined || d.value == false) {
if (d.value || d.value == null || d.value == undefined || d.value == false) {
if (d.value == null || d.value == undefined || d.value == false)
catO.push({
optionId: option.optionId,
data: false,
});
else
catO.push({
optionId: option.optionId,
data: true,
});
}
}
} else if (option.optionType.type == "embedBuilder") {
if (d.value == null || d.value == undefined)
catO.push({
optionId: option.optionId,
data: option.optionType.data,
});
else {
try {
const parsedResponse = JSON.parse(d.value);
catO.push({
optionId: option.optionId,
data: parsedResponse,
});
} catch (err) {
catO.push({
optionId: option.optionId,
data: option.optionType.data,
});
}
}
} else {
if (d.value == undefined || d.value == null)
catO.push({
optionId: option.optionId,
data: null,
});
else
catO.push({
optionId: option.optionId,
data: d.value,
});
}
} else {
if (option.optionType.type == "rolesMultiSelect" || option.optionType.type == "channelsMultiSelect" || option.optionType.type == "multiSelect" || option.optionType.type == "tagInput") {
if (!d.value || d.value == null || d.value == undefined) {
setNewRes = await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: [],
});
setNewRes ? null : (setNewRes = {});
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
} else if (typeof d.value != "object") {
setNewRes = await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: [d.value],
});
setNewRes ? null : (setNewRes = {});
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
} else {
setNewRes = await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: d.value,
});
setNewRes ? null : (setNewRes = {});
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
}
} else if (option.optionType.type == "embedBuilder") {
if (d.value !== null || d.value !== undefined) {
setNewRes = (await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: JSON.parse(
d.value,
),
})) || {};
setNewRes ? null : (setNewRes = {});
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
} else {
try {
const parsedResponse = JSON.parse(d.value);
setNewRes = (await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: parsedResponse,
})) || {};
setNewRes ? null : (setNewRes = {});
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
} catch (err) {
setNewRes = (await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: option.optionType.data,
})) || {};
setNewRes = {
error: "JSON parse for embed builder went wrong, your settings have been reset.",
};
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
}
}
} else {
if (d.value == undefined || d.value == null) {
setNewRes = (await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: null,
})) || {};
setNewRes ? null : (setNewRes = {});
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
} else {
setNewRes = (await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
newData: d.value,
})) || {};
setNewRes ? null : (setNewRes = {});
if (setNewRes.error)
errors.push(option.optionName + "%is%" + setNewRes.error + "%is%" + option.optionId);
else
successes.push(option.optionName);
}
}
}
}
}
if (config.useCategorySet && catO.length) {
let sNR = await category.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
data: catO,
});
sNR ? null : (sNR = {});
if (sNR.error)
errors.push(category.categoryId + "%is%" + sNR.error);
else
successes.push(category.categoryId);
}
if (config.useCategorySet && catToggle.length)
for (const opt of catToggle) {
const cat = config.settings?.find(c => c.categoryId == opt.optionId);
if (!cat) {
errors.push(`Category ${opt.optionId} %is%Doesn't exist%is%categoryToggle`);
continue;
}
try {
await cat.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
data: [{
optionId: "categoryToggle",
data: opt.data,
}],
});
} catch (err) {
errors.push(`Category ${opt.optionId} %is%${err}%is%categoryToggle`);
}
}
req.DBDEvents.emit("guildSettingsUpdated", {
user: req.session.user,
changes: {
successes,
errors,
},
});
res.send({
success: true,
message: "saved changed",
errors,
successes,
});
},
};