add: more things

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-07-06 15:21:36 +08:00
parent 41e98bb602
commit 244aa607f7
71 changed files with 2998 additions and 1014 deletions
+66 -11
View File
@@ -27,7 +27,12 @@ export function UserGroupProvider({ children }) {
return await fn();
} catch (err) {
const message = err?.response?.data?.message ?? "Something went wrong.";
toast.error(message);
toast(message, {
action: {
label: "Close",
onClick: () => {}
}
});
return null;
} finally {
setLoading(false);
@@ -121,7 +126,12 @@ export function UserGroupProvider({ children }) {
request(async () => {
const res = await api.post(`${BASE}/groups`, { name, description, group_code });
setGroups((prev) => [res.data?.data, ...prev]);
toast.success("Group created successfully.");
toast("Group created successfully.", {
action: {
label: "Close",
onClick: () => {}
}
});
return res.data;
}),
[request]
@@ -136,7 +146,12 @@ export function UserGroupProvider({ children }) {
prev.map((g) => (g.group_id === gid ? { ...g, ...res.data?.data } : g))
);
setGroup((prev) => (prev?.group_id === gid ? { ...prev, ...res.data?.data } : prev));
toast.success("Group updated successfully.");
toast("Group updated successfully.", {
action: {
label: "Close",
onClick: () => {}
}
});
return res.data;
}),
[request]
@@ -150,7 +165,12 @@ export function UserGroupProvider({ children }) {
setGroups((prev) =>
prev.map((g) => (g.group_id === gid ? { ...g, is_active: false } : g))
);
toast.success("Group deactivated.");
toast("Group deactivated.", {
action: {
label: "Close",
onClick: () => {}
}
});
return res.data;
}),
[request]
@@ -168,7 +188,12 @@ export function UserGroupProvider({ children }) {
deactivated_ids.includes(g.group_id) ? { ...g, is_active: false } : g
)
);
toast.success(`${deactivated_ids.length} group(s) deactivated.`);
toast(`${deactivated_ids.length} group(s) deactivated.`, {
action: {
label: "Close",
onClick: () => {}
}
});
}
return res.data;
}),
@@ -183,7 +208,12 @@ export function UserGroupProvider({ children }) {
setGroups((prev) =>
prev.map((g) => (g.group_id === gid ? { ...g, is_active: true } : g))
);
toast.success("Group restored.");
toast("Group restored.", {
action: {
label: "Close",
onClick: () => {}
}
});
return res.data;
}),
[request]
@@ -201,7 +231,12 @@ export function UserGroupProvider({ children }) {
restored_ids.includes(g.group_id) ? { ...g, is_active: true } : g
)
);
toast.success(`${restored_ids.length} group(s) restored.`);
toast(`${restored_ids.length} group(s) restored.`, {
action: {
label: "Close",
onClick: () => {}
}
});
}
return res.data;
}),
@@ -214,7 +249,12 @@ export function UserGroupProvider({ children }) {
request(async () => {
const res = await api.delete(`${BASE}/groups/${gid}/permanent`);
setGroups((prev) => prev.filter((g) => g.group_id !== gid));
toast.success("Group permanently deleted.");
toast("Group permanently deleted.", {
action: {
label: "Close",
onClick: () => {}
}
});
return res.data;
}),
[request]
@@ -228,7 +268,12 @@ export function UserGroupProvider({ children }) {
const { deleted_ids } = res.data?.data ?? {};
if (deleted_ids?.length) {
setGroups((prev) => prev.filter((g) => !deleted_ids.includes(g.group_id)));
toast.success(`${deleted_ids.length} group(s) permanently deleted.`);
toast(`${deleted_ids.length} group(s) permanently deleted.`, {
action: {
label: "Close",
onClick: () => {}
}
});
}
return res.data;
}),
@@ -241,7 +286,12 @@ export function UserGroupProvider({ children }) {
request(async () => {
const res = await api.post(`${BASE}/groups/${gid}/users`, { user_ids });
setUsersNotIn((prev) => prev.filter((u) => !user_ids.includes(u.user_id)));
toast.success("Users added to group.");
toast("Users added to group.", {
action: {
label: "Close",
onClick: () => {}
}
});
return res.data;
}),
[request]
@@ -254,7 +304,12 @@ export function UserGroupProvider({ children }) {
const res = await api.delete(`${BASE}/groups/${gid}/users`, { data: { user_ids } });
setMembers((prev) => prev.filter((u) => !user_ids.includes(u.user_id)));
setUsersIn((prev) => prev.filter((u) => !user_ids.includes(u.user_id)));
toast.success("Users removed from group.");
toast("Users removed from group.", {
action: {
label: "Close",
onClick: () => {}
}
});
return res.data;
}),
[request]