From 7fb93475287b987011961b00375f85bc70e54655 Mon Sep 17 00:00:00 2001 From: Kenan KARAER Date: Sun, 7 Dec 2025 19:20:31 +0300 Subject: [PATCH] fix: Resolve build errors (linting and types) --- src/app/dashboard/page.tsx | 8 ++++---- .../reservations/[id]/financials-editor.tsx | 2 +- .../reservations/[id]/payment-list.tsx | 2 +- .../reservations/new/reservation-form.tsx | 2 +- src/app/dashboard/reservations/page.tsx | 1 + src/app/dashboard/settings/logs/page.tsx | 19 ++++++++++++++++--- src/app/dashboard/settings/page.tsx | 3 +-- .../dashboard/settings/users/[id]/page.tsx | 2 +- .../dashboard/settings/users/new/actions.ts | 2 +- src/components/calendar-view.tsx | 2 ++ src/components/mobile-sidebar.tsx | 1 + src/components/user-nav.tsx | 1 - src/lib/logger.ts | 2 +- src/lib/supabase/session.ts | 2 +- 14 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 7598b4e..43211c9 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -14,10 +14,10 @@ export default async function DashboardPage() { .select('*', { count: 'exact', head: true }) .neq('status', 'cancelled') - // 2. Active Customers (Count) - const { count: totalCustomers } = await supabase - .from('customers') - .select('*', { count: 'exact', head: true }) + // 2. Active Customers (Count) - Unused for now + // const { count: totalCustomers } = await supabase + // .from('customers') + // .select('*', { count: 'exact', head: true }) // 3. Total Revenue (Paid) const { data: payments } = await supabase diff --git a/src/app/dashboard/reservations/[id]/financials-editor.tsx b/src/app/dashboard/reservations/[id]/financials-editor.tsx index c5076b8..84f4f81 100644 --- a/src/app/dashboard/reservations/[id]/financials-editor.tsx +++ b/src/app/dashboard/reservations/[id]/financials-editor.tsx @@ -28,7 +28,7 @@ interface FinancialsEditorProps { reservationId: string currentPackageId: string | null currentPrice: number - packages: any[] + packages: { id: string; name: string; price: number }[] } export function FinancialsEditor({ reservationId, currentPackageId, currentPrice, packages }: FinancialsEditorProps) { diff --git a/src/app/dashboard/reservations/[id]/payment-list.tsx b/src/app/dashboard/reservations/[id]/payment-list.tsx index e49d194..9043650 100644 --- a/src/app/dashboard/reservations/[id]/payment-list.tsx +++ b/src/app/dashboard/reservations/[id]/payment-list.tsx @@ -29,7 +29,7 @@ import { toast } from "sonner" interface PaymentListProps { reservationId: string - payments: any[] + payments: { id: string; created_at: string; amount: number; payment_type: string; payment_method: string; status: string }[] } export function PaymentList({ reservationId, payments }: PaymentListProps) { diff --git a/src/app/dashboard/reservations/new/reservation-form.tsx b/src/app/dashboard/reservations/new/reservation-form.tsx index a94cb80..a718c61 100644 --- a/src/app/dashboard/reservations/new/reservation-form.tsx +++ b/src/app/dashboard/reservations/new/reservation-form.tsx @@ -59,7 +59,7 @@ export function ReservationForm({ halls, customers, packages }: ReservationFormP const [openCustomer, setOpenCustomer] = useState(false) const form = useForm>({ - resolver: zodResolver(formSchema) as any, + resolver: zodResolver(formSchema), defaultValues: { hall_id: "", customer_id: "", diff --git a/src/app/dashboard/reservations/page.tsx b/src/app/dashboard/reservations/page.tsx index 5185b22..cf8c540 100644 --- a/src/app/dashboard/reservations/page.tsx +++ b/src/app/dashboard/reservations/page.tsx @@ -41,6 +41,7 @@ export default async function ReservationsPage() { } } + // eslint-disable-next-line @typescript-eslint/no-explicit-any const getSingle = (item: any) => { if (Array.isArray(item)) return item[0] return item diff --git a/src/app/dashboard/settings/logs/page.tsx b/src/app/dashboard/settings/logs/page.tsx index 2b5fc7d..270ad8c 100644 --- a/src/app/dashboard/settings/logs/page.tsx +++ b/src/app/dashboard/settings/logs/page.tsx @@ -18,6 +18,18 @@ import { createAdminClient } from "@/lib/supabase/admin" import { UserFilter } from "./user-filter" +interface AuditLog { + id: string + user_id: string + action: string + entity_type: string + entity_id: string + // eslint-disable-next-line @typescript-eslint/no-explicit-any + details: any + created_at: string + profiles?: { full_name: string; role: string } | null +} + export default async function AuditLogsPage({ searchParams, }: { @@ -56,7 +68,7 @@ export default async function AuditLogsPage({ // Manually fetch profiles for the logs let logsWithProfiles = [] if (logs) { - const userIds = Array.from(new Set(logs.map((log: any) => log.user_id).filter(Boolean))) + const userIds = Array.from(new Set(logs.map((log: AuditLog) => log.user_id).filter(Boolean))) let profilesMap: Record = {} @@ -67,6 +79,7 @@ export default async function AuditLogsPage({ .in('id', userIds) if (profiles) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any profilesMap = profiles.reduce((acc: any, profile: any) => { acc[profile.id] = profile return acc @@ -74,7 +87,7 @@ export default async function AuditLogsPage({ } } - logsWithProfiles = logs.map((log: any) => ({ + logsWithProfiles = logs.map((log: AuditLog) => ({ ...log, profiles: profilesMap[log.user_id] || null })) @@ -129,7 +142,7 @@ export default async function AuditLogsPage({ ) : ( - logsWithProfiles.map((log: any) => ( + logsWithProfiles.map((log: AuditLog) => (
diff --git a/src/app/dashboard/settings/page.tsx b/src/app/dashboard/settings/page.tsx index c760c23..1975c3c 100644 --- a/src/app/dashboard/settings/page.tsx +++ b/src/app/dashboard/settings/page.tsx @@ -1,6 +1,5 @@ import Link from "next/link" -import { Button } from "@/components/ui/button" -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Card, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Utensils, Users, Activity } from "lucide-react" export default function SettingsPage() { diff --git a/src/app/dashboard/settings/users/[id]/page.tsx b/src/app/dashboard/settings/users/[id]/page.tsx index 6ad68d8..b1d9941 100644 --- a/src/app/dashboard/settings/users/[id]/page.tsx +++ b/src/app/dashboard/settings/users/[id]/page.tsx @@ -23,7 +23,7 @@ export default async function EditUserPage({ params }: { params: Promise<{ id: s // Fetch email from auth.users using admin client let email = undefined if (supabaseAdmin) { - const { data: { user }, error } = await supabaseAdmin.auth.admin.getUserById(id) + const { data: { user } } = await supabaseAdmin.auth.admin.getUserById(id) if (user) { email = user.email } diff --git a/src/app/dashboard/settings/users/new/actions.ts b/src/app/dashboard/settings/users/new/actions.ts index 12f76fc..b2ef94d 100644 --- a/src/app/dashboard/settings/users/new/actions.ts +++ b/src/app/dashboard/settings/users/new/actions.ts @@ -5,7 +5,7 @@ import { createClient } from "@/lib/supabase/server" // For regular client if ne import { revalidatePath } from "next/cache" import { logAction } from "@/lib/logger" -export async function createUser(data: any) { +export async function createUser(data: { email: string; password?: string; full_name: string; role: string }) { const supabaseAdmin = await createAdminClient() if (!supabaseAdmin) { diff --git a/src/components/calendar-view.tsx b/src/components/calendar-view.tsx index a533020..748bc1b 100644 --- a/src/components/calendar-view.tsx +++ b/src/components/calendar-view.tsx @@ -31,6 +31,7 @@ const localizer = dateFnsLocalizer({ }) interface CalendarViewProps { + // eslint-disable-next-line @typescript-eslint/no-explicit-any events?: any[] halls?: { id: string, name: string }[] } @@ -46,6 +47,7 @@ export function CalendarView({ events = [], halls = [] }: CalendarViewProps) { return events.filter(event => event.resource.hall_id === selectedHallId) }, [events, selectedHallId]) + // eslint-disable-next-line @typescript-eslint/no-explicit-any const handleDoubleClickEvent = (event: any) => { router.push(`/dashboard/reservations/${event.id}`) } diff --git a/src/components/mobile-sidebar.tsx b/src/components/mobile-sidebar.tsx index f9c35fe..867a3d3 100644 --- a/src/components/mobile-sidebar.tsx +++ b/src/components/mobile-sidebar.tsx @@ -11,6 +11,7 @@ export function MobileSidebar({ user }: { user?: { name: string | null; email: s const [isMounted, setIsMounted] = useState(false) useEffect(() => { + // eslint-disable-next-line react-hooks/exhaustive-deps setIsMounted(true) }, []) diff --git a/src/components/user-nav.tsx b/src/components/user-nav.tsx index e57ffe0..af0cc0a 100644 --- a/src/components/user-nav.tsx +++ b/src/components/user-nav.tsx @@ -9,7 +9,6 @@ import { DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, - DropdownMenuShortcut, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { signOut } from "@/app/(auth)/actions" diff --git a/src/lib/logger.ts b/src/lib/logger.ts index 8efe15d..ea9efea 100644 --- a/src/lib/logger.ts +++ b/src/lib/logger.ts @@ -5,7 +5,7 @@ export async function logAction( action: string, entityType: string, entityId: string, - details?: any + details?: Record ) { const supabase = await createClient() const { data: { user } } = await supabase.auth.getUser() diff --git a/src/lib/supabase/session.ts b/src/lib/supabase/session.ts index ebf00f7..90b9959 100644 --- a/src/lib/supabase/session.ts +++ b/src/lib/supabase/session.ts @@ -15,7 +15,7 @@ export async function updateSession(request: NextRequest) { return request.cookies.getAll() }, setAll(cookiesToSet) { - cookiesToSet.forEach(({ name, value, options }) => + cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value) ) supabaseResponse = NextResponse.next({