phase 1-6 implemented
This commit is contained in:
1 parent
22c274bb83
commit
2c4927478a
73 files changed
+9702
-2354
No files matched your search
@@ -6,6 +6,8 @@ import { UserGrid } from "@/components/users/UserGrid";
|
||||
import { Card, CardHeader, CardContent } from "@/components/ui/card";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { useUser } from "@clerk/nextjs";
|
||||
import { getGymIdFromUser } from "@/lib/error-helpers";
|
||||
import log from "@/lib/logger";
|
||||
|
||||
interface User {
|
||||
id: string;
|
||||
@@ -83,30 +85,27 @@ export function UserManagement() {
|
||||
? `/api/users?ts=${ts}`
|
||||
: `/api/users?role=${filter}&ts=${ts}`;
|
||||
|
||||
console.log("UserManagement.fetchUsers: fetching URL", url);
|
||||
log.debug("Fetching users", { url });
|
||||
const response = await fetch(url, { cache: "no-store" });
|
||||
console.log(
|
||||
"UserManagement.fetchUsers: response.ok",
|
||||
response.ok,
|
||||
"status",
|
||||
response.status,
|
||||
);
|
||||
log.debug("Users fetch response", {
|
||||
ok: response.ok,
|
||||
status: response.status,
|
||||
});
|
||||
const data = await response.json();
|
||||
console.log(
|
||||
"UserManagement.fetchUsers: received users count",
|
||||
Array.isArray(data.users) ? data.users.length : 0,
|
||||
"sample",
|
||||
data.users && data.users[0]
|
||||
? {
|
||||
id: data.users[0].id,
|
||||
gymId: data.users[0].gymId,
|
||||
role: data.users[0].role,
|
||||
}
|
||||
: null,
|
||||
);
|
||||
log.debug("Received users data", {
|
||||
count: Array.isArray(data.users) ? data.users.length : 0,
|
||||
sample:
|
||||
data.users && data.users[0]
|
||||
? {
|
||||
id: data.users[0].id,
|
||||
gymId: data.users[0].gymId,
|
||||
role: data.users[0].role,
|
||||
}
|
||||
: null,
|
||||
});
|
||||
setUsers(data.users || []);
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch users:", error);
|
||||
log.error("Failed to fetch users", error);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -152,7 +151,7 @@ export function UserManagement() {
|
||||
alert("Error deleting users");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
log.error("Failed to delete users", error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -201,37 +200,25 @@ export function UserManagement() {
|
||||
try {
|
||||
if (selectedUser) {
|
||||
// Update existing user
|
||||
console.log(
|
||||
"UserManagement.handleSaveEdit: sending PUT /api/users payload",
|
||||
{
|
||||
id: selectedUser.id,
|
||||
email: editForm.email,
|
||||
firstName: editForm.firstName,
|
||||
lastName: editForm.lastName,
|
||||
role: editForm.role,
|
||||
phone: editForm.phone,
|
||||
gymId: editForm.gymId === "" ? null : editForm.gymId,
|
||||
},
|
||||
);
|
||||
const payload = {
|
||||
id: selectedUser.id,
|
||||
email: editForm.email,
|
||||
firstName: editForm.firstName,
|
||||
lastName: editForm.lastName,
|
||||
role: editForm.role,
|
||||
phone: editForm.phone,
|
||||
gymId: editForm.gymId === "" ? null : editForm.gymId,
|
||||
};
|
||||
log.debug("Updating user", payload);
|
||||
const response = await fetch("/api/users", {
|
||||
method: "PUT",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
id: selectedUser.id,
|
||||
email: editForm.email,
|
||||
firstName: editForm.firstName,
|
||||
lastName: editForm.lastName,
|
||||
role: editForm.role,
|
||||
phone: editForm.phone,
|
||||
gymId: editForm.gymId === "" ? null : editForm.gymId,
|
||||
}),
|
||||
body: JSON.stringify(payload),
|
||||
});
|
||||
log.debug("User update response", {
|
||||
ok: response.ok,
|
||||
status: response.status,
|
||||
});
|
||||
console.log(
|
||||
"UserManagement.handleSaveEdit: PUT /api/users response.ok",
|
||||
response.ok,
|
||||
"status",
|
||||
response.status,
|
||||
);
|
||||
if (response.ok) {
|
||||
// Optimistically update local state so grid reflects changes immediately
|
||||
setUsers((prev) =>
|
||||
@@ -265,15 +252,12 @@ export function UserManagement() {
|
||||
setIsEditing(false);
|
||||
setEditForm(null);
|
||||
// Still re-fetch from server to ensure consistency
|
||||
console.log(
|
||||
"UserManagement.handleSaveEdit: re-fetching users after successful edit",
|
||||
);
|
||||
log.debug("Re-fetching users after successful edit");
|
||||
fetchUsers();
|
||||
} else {
|
||||
const errText = await response.text().catch(() => "");
|
||||
console.error("UserManagement.handleSaveEdit: update failed", {
|
||||
log.error("User update failed", new Error(errText), {
|
||||
status: response.status,
|
||||
body: errText,
|
||||
});
|
||||
alert("Error updating user");
|
||||
}
|
||||
@@ -320,7 +304,7 @@ export function UserManagement() {
|
||||
alert("Error deleting user");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
log.error("Failed to delete user", error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -351,7 +335,7 @@ export function UserManagement() {
|
||||
email: "",
|
||||
role: "client",
|
||||
phone: "",
|
||||
gymId: String((user?.publicMetadata as any)?.gymId ?? ""),
|
||||
gymId: user ? getGymIdFromUser(user) : "",
|
||||
});
|
||||
setSelectedUser(null);
|
||||
setIsEditing(true);
|
||||
|
||||
Reference in new issue
Block a user