diff --git a/App.tsx b/App.tsx index 28169f5..14d08cb 100644 --- a/App.tsx +++ b/App.tsx @@ -95,14 +95,19 @@ const App: React.FC = () => { localStorage.setItem(PERSONA_STORAGE_KEY, JSON.stringify(personas)); }, [personas]); - const handleLogin = (email: string) => { - // If we have users loaded (from NC or Init), check them - const user = users.find(u => u.email.toLowerCase() === email.toLowerCase() && u.status === 'aktiv'); - if (user) { - setCurrentUser(user); - } else { - alert("Zugang verweigert. Nur verifizierte Wohnpro-Bewohner können sich im Wohnpro Guide anmelden."); - } + const handleLogin = (email: string): Promise => { + return new Promise((resolve, reject) => { + // Simulate network delay for better UX + setTimeout(() => { + const user = users.find(u => u.email.toLowerCase() === email.toLowerCase() && u.status === 'aktiv'); + if (user) { + setCurrentUser(user); + resolve(); + } else { + reject(new Error("Zugang verweigert. Falsche E-Mail oder Einladung steht noch aus.")); + } + }, 1000); + }); }; const sendMessage = async (text: string) => { diff --git a/components/LoginView.tsx b/components/LoginView.tsx index a7c3c0b..aadb686 100644 --- a/components/LoginView.tsx +++ b/components/LoginView.tsx @@ -3,21 +3,29 @@ import React, { useState } from 'react'; import { User } from '../types'; interface LoginViewProps { - onLogin: (email: string) => void; + onLogin: (email: string) => Promise; error?: string; } const LoginView: React.FC = ({ onLogin, error: externalError }) => { const [email, setEmail] = useState(''); + const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(externalError || ''); - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!email) { setError('Bitte gib deine Wohnpro E-Mail Adresse ein.'); return; } - onLogin(email); + setIsLoading(true); + setError(''); + try { + await onLogin(email); + } catch (err: any) { + setError(err.message); + setIsLoading(false); + } }; return ( @@ -48,9 +56,14 @@ const LoginView: React.FC = ({ onLogin, error: externalError })