mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-17 17:51:20 +08:00
fix: Fixed a bug where the front end still displayed a success messag… (#4768)
* fix: Fixed a bug where the front end still displayed a success message when Skills upload failed. * refactor(dashboard): unify API response handling in SkillsSection
This commit is contained in:
@@ -118,6 +118,16 @@ export default {
|
||||
}
|
||||
};
|
||||
|
||||
const handleApiResponse = (res, successMessage, failureMessageDefault, onSuccess) => {
|
||||
if (res && res.data && res.data.status === "ok") {
|
||||
showMessage(successMessage, "success");
|
||||
if (onSuccess) onSuccess();
|
||||
} else {
|
||||
const msg = (res && res.data && res.data.message) || failureMessageDefault;
|
||||
showMessage(msg, "error");
|
||||
}
|
||||
};
|
||||
|
||||
const uploadSkill = async () => {
|
||||
if (!uploadFile.value) return;
|
||||
uploading.value = true;
|
||||
@@ -131,13 +141,19 @@ export default {
|
||||
return;
|
||||
}
|
||||
formData.append("file", file);
|
||||
await axios.post("/api/skills/upload", formData, {
|
||||
const res = await axios.post("/api/skills/upload", formData, {
|
||||
headers: { "Content-Type": "multipart/form-data" },
|
||||
});
|
||||
showMessage(tm("skills.uploadSuccess"), "success");
|
||||
uploadDialog.value = false;
|
||||
uploadFile.value = null;
|
||||
await fetchSkills();
|
||||
handleApiResponse(
|
||||
res,
|
||||
tm("skills.uploadSuccess"),
|
||||
tm("skills.uploadFailed"),
|
||||
async () => {
|
||||
uploadDialog.value = false;
|
||||
uploadFile.value = null;
|
||||
await fetchSkills();
|
||||
}
|
||||
);
|
||||
} catch (err) {
|
||||
showMessage(tm("skills.uploadFailed"), "error");
|
||||
} finally {
|
||||
@@ -149,9 +165,18 @@ export default {
|
||||
const nextActive = !skill.active;
|
||||
itemLoading[skill.name] = true;
|
||||
try {
|
||||
await axios.post("/api/skills/update", { name: skill.name, active: nextActive });
|
||||
skill.active = nextActive;
|
||||
showMessage(tm("skills.updateSuccess"), "success");
|
||||
const res = await axios.post("/api/skills/update", {
|
||||
name: skill.name,
|
||||
active: nextActive,
|
||||
});
|
||||
handleApiResponse(
|
||||
res,
|
||||
tm("skills.updateSuccess"),
|
||||
tm("skills.updateFailed"),
|
||||
() => {
|
||||
skill.active = nextActive;
|
||||
}
|
||||
);
|
||||
} catch (err) {
|
||||
showMessage(tm("skills.updateFailed"), "error");
|
||||
} finally {
|
||||
@@ -168,10 +193,18 @@ export default {
|
||||
if (!skillToDelete.value) return;
|
||||
deleting.value = true;
|
||||
try {
|
||||
await axios.post("/api/skills/delete", { name: skillToDelete.value.name });
|
||||
showMessage(tm("skills.deleteSuccess"), "success");
|
||||
deleteDialog.value = false;
|
||||
await fetchSkills();
|
||||
const res = await axios.post("/api/skills/delete", {
|
||||
name: skillToDelete.value.name,
|
||||
});
|
||||
handleApiResponse(
|
||||
res,
|
||||
tm("skills.deleteSuccess"),
|
||||
tm("skills.deleteFailed"),
|
||||
async () => {
|
||||
deleteDialog.value = false;
|
||||
await fetchSkills();
|
||||
}
|
||||
);
|
||||
} catch (err) {
|
||||
showMessage(tm("skills.deleteFailed"), "error");
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user