fixed some things with the member list page. added a start hunt button. removed add member button.

This commit is contained in:
bobbert committed 2025-03-12 20:55:52 +00:00
1 parent ab79a28528
commit 593c51a883
3 files changed
+114 -27

No files matched your search

+59 -21
View File
@@ -10,9 +10,27 @@ export default function TeamPage({ params }) {
const [teamMembers, setTeamMembers] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState("");
const [huntActive, setHuntActive] = useState(false);
const router = useRouter();
const { teamId } = params;
const checkHuntStatus = useCallback(async () => {
try {
const response = await fetch("/api/hunt-status", {
method: "GET",
headers: { "Content-Type": "application/json" },
credentials: "include",
});
if (response.ok) {
const data = await response.json();
setHuntActive(data.active || false);
}
} catch (err) {
console.error("Failed to check hunt status:", err);
}
}, []);
const fetchTeamData = useCallback(async () => {
try {
if (!teamId || isNaN(parseInt(teamId, 10))) {
@@ -63,7 +81,9 @@ export default function TeamPage({ params }) {
} finally {
setLoading(false);
}
}, [teamId, router]);
await checkHuntStatus();
}, [teamId, router, checkHuntStatus]);
useEffect(() => {
// Only attempt to fetch data when session is ready and we have a teamId
@@ -141,13 +161,6 @@ export default function TeamPage({ params }) {
) : (
<div className="empty-state">No team members found</div>
)}
<button
className="add-member-button"
onClick={() => router.push(`/team/${teamId}/add-user`)}
>
+ Add Member
</button>
</div>
<div className="team-actions">
@@ -179,6 +192,44 @@ export default function TeamPage({ params }) {
Leave Team
</button>
{session?.user?.role !== "admin" && (
<button
className="action-button start-button"
onClick={async () => {
try {
setLoading(true);
if (!huntActive) {
// If hunt is not active, redirect to the "not started" page
router.push(`/hunt-not-started?teamId=${teamId}`);
} else {
// If hunt is active, try to start the hunt
const response = await fetch(
`/api/teams/${teamId}/start-hunt`,
{
method: "POST",
headers: { "Content-Type": "application/json" },
credentials: "include",
}
);
if (response.ok) {
fetchTeamData();
} else {
const error = await response.json();
throw new Error(error.message || "Failed to start hunt");
}
}
} catch (err) {
setError(err.message);
setLoading(false);
}
}}
>
Start Hunt
</button>
)}
{session?.user?.role === "admin" && (
<button
className="action-button start-button"
@@ -314,19 +365,6 @@ export default function TeamPage({ params }) {
color: #888;
}
.add-member-button {
background-color: #68543c;
color: white;
border: none;
border-radius: 8px;
padding: 15px;
margin-top: 20px;
width: 100%;
font-size: 16px;
font-weight: bold;
cursor: pointer;
}
.team-actions {
display: flex;
gap: 10px;