This commit is contained in:
rgrgogu
2026-05-07 12:36:55 +08:00
parent 95f838376e
commit e23d9b9ec2
8 changed files with 188 additions and 54 deletions
+62 -15
View File
@@ -97,21 +97,6 @@ export const UserProvider = ({ children }) => {
[request]
);
// ─── DELETE /api/admin/users/:id (soft delete) ────────────────────────────
const deactivateUser = useCallback(
(userId) =>
request(async () => {
const res = await api.delete(`${BASE}/users/${userId}`);
setUsers((prev) =>
prev.map((u) => (u.user_id === userId ? { ...u, is_active: false } : u))
);
return res.data;
}),
[request]
);
// ─── GET /api/admin/users/archived ────────────────────────────────────────────
const fetchArchivedUsers = useCallback(
({ page = 1, limit = 10, filters = [], sort = [] } = {}) =>
@@ -135,6 +120,44 @@ export const UserProvider = ({ children }) => {
[request]
);
// ─── DELETE /api/admin/users/:id (soft delete) ────────────────────────────
const deactivateUser = useCallback(
(userId) =>
request(async () => {
const res = await api.delete(`${BASE}/users/${userId}`);
setUsers((prev) =>
prev.map((u) => (u.user_id === userId ? { ...u, is_active: false } : u))
);
return res.data;
}),
[request]
);
// ─── DELETE /api/admin/users/bulk ─────────────────────────────────────────────
const deactivateUsers = useCallback(
({ ids }) =>
request(async () => {
const res = await api.delete(`${BASE}/users/bulk`, { data: { ids } });
const { deactivated_ids } = res.data?.data ?? {}; // ← unwrap nested data
if (deactivated_ids?.length) {
setUsers((prev) =>
prev.map((u) =>
deactivated_ids.includes(u.user_id)
? { ...u, is_active: false }
: u
)
);
}
return res.data;
}),
[request]
);
// ─── POST /api/admin/users/:id/restore ────────────────────────────────────
const restoreUser = useCallback(
(userId) =>
@@ -150,6 +173,28 @@ export const UserProvider = ({ children }) => {
[request]
);
const restoreUsers = useCallback(
({ ids }) =>
request(async () => {
const res = await api.post(`${BASE}/users/bulk/restore`, { ids });
const { restored_ids } = res.data?.data ?? {}; // ← same unwrap
if (restored_ids?.length) {
setUsers((prev) =>
prev.map((u) =>
restored_ids.includes(u.user_id)
? { ...u, is_active: true }
: u
)
);
}
return res.data;
}),
[request]
);
// ─── GET /api/admin/users/:id/sessions ────────────────────────────────────
const fetchUserSessions = useCallback(
(userId) =>
@@ -209,7 +254,9 @@ export const UserProvider = ({ children }) => {
fetchUser,
updateUser,
deactivateUser,
deactivateUsers,
restoreUser,
restoreUsers,
fetchUserSessions,
terminateSession,
}}