diff --git a/src/app/admin/pages/subpages/SignupCodesManagementPage.tsx b/src/app/admin/pages/subpages/SignupCodesManagementPage.tsx index 0075c73..4dfdfcb 100644 --- a/src/app/admin/pages/subpages/SignupCodesManagementPage.tsx +++ b/src/app/admin/pages/subpages/SignupCodesManagementPage.tsx @@ -1,5 +1,5 @@ import { AuthService } from '../../../auth/authService.ts' -import { useEffect, useState, useRef, MouseEvent, useCallback } from 'react' +import { useEffect, useState, useRef, MouseEvent } from 'react' import { SignupCode } from '../../../auth/signupCode.ts' import { Temporal } from '@js-temporal/polyfill' import Button from '../../../../components/buttons/Button.tsx' @@ -12,24 +12,25 @@ export default function SignupCodesManagementPage({ authService }: SignupCodesMa const [codes, setCodes] = useState([]) const [code, setCode] = useState('') const [name, setName] = useState('') + const [email, setEmail] = useState('') const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) const dialogRef = useRef(null) const [tooltipPosition, setTooltipPosition] = useState<{ x: number; y: number } | null>(null) const [activeCode, setActiveCode] = useState(null) - const fetchCodes = useCallback(async () => { + const fetchCodes = async () => { try { setCodes(await authService.listSignupCodes()) } catch (err) { console.error('Failed to fetch signup codes:', err) } - }, [authService]) + } useEffect(() => { const timeoutId = setTimeout(fetchCodes) return () => clearTimeout(timeoutId) - }, [authService, fetchCodes]) + }, [authService]) const handleCreateCode = async (e: React.FormEvent) => { e.preventDefault() @@ -37,11 +38,12 @@ export default function SignupCodesManagementPage({ authService }: SignupCodesMa setError(null) try { - await authService.createSignupCode(code, name) + await authService.createSignupCode(code, email, name) setCode('') setName('') + setEmail('') dialogRef.current?.close() - fetchCodes() + fetchCodes() // Refresh the table } catch (err) { setError(err instanceof Error ? err.message : 'Failed to create signup code') } finally { @@ -114,6 +116,7 @@ export default function SignupCodesManagementPage({ authService }: SignupCodesMa Code + Email Redeemed By Expires On @@ -131,6 +134,7 @@ export default function SignupCodesManagementPage({ authService }: SignupCodesMa {code.code} + {code.email} {code.redeemedBy || 'Not redeemed'} {formatDate(code.expiresOn)} @@ -187,6 +191,19 @@ export default function SignupCodesManagementPage({ authService }: SignupCodesMa /> +
+ + setEmail(e.target.value)} + className="w-full px-3 py-2 border border-gray-300 rounded-md" + /> +
+