improve add resources error handling (#769)

This commit is contained in:
an-lee
2024-07-03 12:53:07 +08:00
committed by GitHub
parent f440947ea0
commit 2a979e1767
3 changed files with 35 additions and 14 deletions

View File

@@ -297,7 +297,8 @@
"addResource": "add resource",
"addResourceFromUrlOrLocal": "add resource from url or local",
"resourceAdded": "Resource added",
"resourcesAdded": "{{fulfilled}} resources added, {{rejected}} failed to add.",
"resourcesAdded": "{{fulfilled}} resources added, {{rejected}} failed to add. {{reasons}}",
"resourcesAddInBatchLimitError": "You can only add {{limit}} resources at a time",
"editResource": "edit resource",
"deleteResource": "delete resource",
"deleteResourceConfirmation": "Are you sure to delete {{name}}?",

View File

@@ -297,7 +297,8 @@
"addResource": "添加资源",
"addResourceFromUrlOrLocal": "添加资源, 可以是 URL 或本地文件",
"resourceAdded": "资源添加成功",
"resourcesAdded": "成功添加 {{fulfilled}} 个资源, {{rejected}} 个资源添加失败",
"resourcesAdded": "成功添加 {{fulfilled}} 个资源, {{rejected}} 个资源添加失败。{{reasons}}",
"resourcesAddInBatchLimitError": "一次最多添加 {{limit}} 个资源",
"editResource": "编辑资源",
"deleteResource": "删除资源",
"deleteResourceConfirmation": "您确定要删除资源 {{name}} 吗?",

View File

@@ -40,23 +40,42 @@ export const AddMediaButton = (props: { type?: "Audio" | "Video" }) => {
const handleSubmit = async () => {
if (!uri) return;
if (files.length > 50) {
toast.error(t("resourcesAddInBatchLimitError", { limit: 50 }));
return;
}
setSubmitting(true);
setTimeout(() => {
setSubmitting(false);
}, 3000);
if (files.length > 0) {
if (files.length > 1) {
Promise.allSettled(files.map((f) => EnjoyApp.audios.create(f)))
.then((results) => {
const fulfilled = results.filter(
(r) => r.status === "fulfilled"
).length;
const rejected = results.filter(
(r) => r.status === "rejected"
).length;
const fulfilled = results.filter((r) => r.status === "fulfilled");
const rejected = results.filter((r) => r.status === "rejected");
toast.success(t("resourcesAdded", { fulfilled, rejected }));
if (fulfilled.length === 0) {
toast.error(
t("resourcesAdded", {
fulfilled: fulfilled.length,
rejected: rejected.length,
})
);
} else if (rejected.length > 0) {
toast.warning(
t("resourcesAdded", {
fulfilled: fulfilled.length,
rejected: rejected.length,
reasons: rejected.map((r: any) => r.reason?.message).join("; "),
})
);
} else {
toast.success(
t("resourcesAdded", {
fulfilled: fulfilled.length,
rejected: rejected.length,
})
);
}
})
.catch((err) => {
toast.error(err.message);