Refactor: merge related hooks (8 files → 5)

- useChampionship + useChampionships → useChampionships
- useMyRegistrations + useRegisterForChampionship → useRegistrations
- useLoginForm + useRegisterForm → useAuthForms

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Dianaka123
2026-02-26 20:47:14 +03:00
parent 5b7260de84
commit 0767b87c1e
10 changed files with 45 additions and 58 deletions

View File

@@ -1,9 +1,9 @@
"use client";
import { use } from "react";
import { useChampionship } from "@/hooks/useChampionship";
import { useMyRegistrations } from "@/hooks/useMyRegistrations";
import { useRegisterForChampionship } from "@/hooks/useRegisterForChampionship";
import { useChampionship } from "@/hooks/useChampionships";
import { useMyRegistrations } from "@/hooks/useRegistrations";
import { useRegisterForChampionship } from "@/hooks/useRegistrations";
import { useAuth } from "@/hooks/useAuth";
import { RegistrationTimeline } from "@/components/RegistrationTimeline";
import { StatusBadge } from "@/components/StatusBadge";

View File

@@ -1,6 +1,6 @@
"use client";
import { useMyRegistrations } from "@/hooks/useMyRegistrations";
import { useMyRegistrations } from "@/hooks/useRegistrations";
import { RegistrationCard } from "@/components/RegistrationCard";
export default function RegistrationsPage() {

View File

@@ -1,7 +1,7 @@
"use client";
import Link from "next/link";
import { useLoginForm } from "@/hooks/useLoginForm";
import { useLoginForm } from "@/hooks/useAuthForms";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";

View File

@@ -1,7 +1,7 @@
"use client";
import Link from "next/link";
import { useRegisterForm } from "@/hooks/useRegisterForm";
import { useRegisterForm } from "@/hooks/useAuthForms";
import { MemberFields } from "@/components/auth/MemberFields";
import { OrganizerFields } from "@/components/auth/OrganizerFields";
import { Button } from "@/components/ui/button";

View File

@@ -4,6 +4,29 @@ import { useState } from "react";
import { useRouter } from "next/navigation";
import { useAuth } from "@/hooks/useAuth";
export function useLoginForm() {
const router = useRouter();
const login = useAuth((s) => s.login);
const isLoading = useAuth((s) => s.isLoading);
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [error, setError] = useState("");
async function submit(e: React.SyntheticEvent) {
e.preventDefault();
setError("");
try {
await login(email, password);
router.push("/championships");
} catch {
setError("Invalid email or password");
}
}
return { email, setEmail, password, setPassword, error, isLoading, submit };
}
export function useRegisterForm() {
const router = useRouter();
const register = useAuth((s) => s.register);

View File

@@ -1,12 +0,0 @@
"use client";
import { useQuery } from "@tanstack/react-query";
import { championshipsApi } from "@/lib/api/championships";
export function useChampionship(id: string) {
return useQuery({
queryKey: ["championship", id],
queryFn: () => championshipsApi.get(id),
enabled: !!id,
});
}

View File

@@ -9,3 +9,11 @@ export function useChampionships() {
queryFn: () => championshipsApi.list(),
});
}
export function useChampionship(id: string) {
return useQuery({
queryKey: ["championship", id],
queryFn: () => championshipsApi.get(id),
enabled: !!id,
});
}

View File

@@ -1,28 +0,0 @@
"use client";
import { useState } from "react";
import { useRouter } from "next/navigation";
import { useAuth } from "@/hooks/useAuth";
export function useLoginForm() {
const router = useRouter();
const login = useAuth((s) => s.login);
const isLoading = useAuth((s) => s.isLoading);
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [error, setError] = useState("");
async function submit(e: React.SyntheticEvent) {
e.preventDefault();
setError("");
try {
await login(email, password);
router.push("/championships");
} catch {
setError("Invalid email or password");
}
}
return { email, setEmail, password, setPassword, error, isLoading, submit };
}

View File

@@ -1,11 +0,0 @@
"use client";
import { useQuery } from "@tanstack/react-query";
import { registrationsApi } from "@/lib/api/registrations";
export function useMyRegistrations() {
return useQuery({
queryKey: ["registrations", "my"],
queryFn: () => registrationsApi.my(),
});
}

View File

@@ -1,8 +1,15 @@
"use client";
import { useMutation, useQueryClient } from "@tanstack/react-query";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { registrationsApi } from "@/lib/api/registrations";
export function useMyRegistrations() {
return useQuery({
queryKey: ["registrations", "my"],
queryFn: () => registrationsApi.my(),
});
}
export function useRegisterForChampionship(championshipId: string) {
const queryClient = useQueryClient();