diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx index 863d633..19e97f4 100644 --- a/frontend/src/pages/Login.tsx +++ b/frontend/src/pages/Login.tsx @@ -8,134 +8,171 @@ export const Login: React.FC = () => { const [cookies, setCookies] = useState(''); const [error, setError] = useState(''); const [isConnecting, setIsConnecting] = useState(false); - const [connectionStatus, setConnectionStatus] = useState(''); + const [showBrowserLogin, setShowBrowserLogin] = useState(false); const login = useAuthStore((state) => state.login); const navigate = useNavigate(); const handleBrowserLogin = async () => { setError(''); setIsConnecting(true); - setConnectionStatus('Opening TikTok login...'); try { const res = await axios.post(`${API_BASE_URL}/auth/browser-login`); if (res.data.status === 'success') { - setConnectionStatus('Connected! Redirecting...'); setTimeout(() => navigate('/'), 1000); } else if (res.data.status === 'timeout') { setError(res.data.message); setIsConnecting(false); } } catch (err: any) { - setError(err.response?.data?.detail || 'Failed to connect. Please try manual method.'); + setError(err.response?.data?.detail || 'Failed to connect. Use the cookie method above.'); setIsConnecting(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); + if (!cookies.trim()) return; + setError(''); try { await login(cookies); navigate('/'); } catch (err) { - setError('Invalid format or server error. Ensure you paste the full JSON or Netscape text.'); + setError('Invalid format. Make sure you paste the full cookie JSON.'); } }; return ( -
- {/* Ambient Background Safelight */} -
-
- -
-
-

- TikTok Clean -

-

Your personalized feed, reimagined.

-
- - {/* Primary: Browser Login Button */} -
- - -

- A browser window will open for you to log in securely. -

-
- - {/* Divider */} -
-
- or paste manually -
-
- - {/* Secondary: Manual Paste */} -
-
-
- - JSON / NETSCAPE -
-