From 72af24469a0c454d467a55d07b008dac38fadfdf Mon Sep 17 00:00:00 2001 From: Przemek Zatorski Date: Tue, 22 Sep 2026 09:30:21 +0200 Subject: [PATCH] Popraw rejestracje, kod SMS, opisy wysylki i widok wiadomosci Rejestracja (/logowanie): - Formularz rejestracji (osoba prywatna i firma) zawsze zaczyna sie pusty. Logowanie i rejestracja dzielily pola e-mail i hasla, wiec dane wpisane albo podstawione przez przegladarke przy logowaniu trafialy do nowego konta. - "Powtorz haslo" ma wlasny przelacznik widocznosci; wczesniej oko przy "Haslo" odslanialo oba pola, a ikona przy "Powtorz haslo" nie reagowala. - Przycisk oka ma normalny obszar klikniecia (mial zerowy rozmiar). Kod SMS: - Okno potwierdzania numeru odlicza czas od SMS-a z rejestracji, a odmowa serwera ("Kolejny mozesz zamowic za N s") odlicza czas w dol zamiast pokazywac stala liczbe sekund. To samo w ustawieniach konta. Panel admina: - "Wysylka kampanii e-mail aktywna" -> "Wysylka e-maili aktywna" z opisem: przelacznik blokuje wszystkie e-maile (aktywacja, reset hasla, powiadomienia), nie tylko kampanie. Podobny opis przy SMS. Wiadomosci: - Puste pole pisania bez "Napisz wiadomosc do ...". - Naglowek rozmowy "Nazwa - opis" zamiast sklejonego tekstu. - Na liscie rozmow jedna miniatura ogloszenia zamiast dwoch. Co-Authored-By: Claude Opus 5 (1M context) --- frontend/src/App.tsx | 76 +++++++++++++++++++++++++++----- frontend/src/AuthPages.tsx | 30 ++++++++++--- frontend/src/admin/marketing.tsx | 10 ++++- frontend/src/styles.css | 35 ++++++++++----- 4 files changed, 125 insertions(+), 26 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index e5c2536..c0607b3 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -10481,6 +10481,8 @@ function AccountSettingsPage({ onSearchPreferencesSaved }: { onSearchPreferences const [otpInfo, setOtpInfo] = useState(''); const [otpBusy, setOtpBusy] = useState(false); const [otpCooldown, setOtpCooldown] = useState(0); + // Serwer odmowil kolejnego kodu - komunikat z odliczanym czasem zamiast stalej liczby sekund. + const [otpCooldownRejected, setOtpCooldownRejected] = useState(false); // --- Preferencje wyszukiwania --- const [searchPrefs, setSearchPrefs] = useState({ @@ -10864,6 +10866,7 @@ function AccountSettingsPage({ onSearchPreferencesSaved }: { onSearchPreferences setOtpBusy(true); setOtpError(''); setOtpInfo(''); + setOtpCooldownRejected(false); try { await resendPhoneOtp(user.email); setOtpInfo(`Wysłaliśmy kod SMS na numer ${user.phone ?? ''}.`); @@ -10871,7 +10874,14 @@ function AccountSettingsPage({ onSearchPreferencesSaved }: { onSearchPreferences setIsOtpOpen(true); } catch (error) { const message = error instanceof Error ? error.message : 'Nie udało się wysłać kodu SMS.'; - if (isOtpOpen) { + // Za wczesnie na kolejny kod - poprzedni nadal jest wazny, wiec okno otwieramy + // i odliczamy czas podany przez serwer ("Kolejny możesz zamówić za N s"). + const secondsLeft = Number(/za (\d+) s/.exec(message)?.[1]); + if ((error as { status?: number }).status === 429 && secondsLeft > 0) { + setOtpCooldown(secondsLeft); + setOtpCooldownRejected(true); + setIsOtpOpen(true); + } else if (isOtpOpen) { // Okno juz otwarte (ponowna wysylka) - blad pokazujemy w nim. setOtpError(message); } else { @@ -11873,6 +11883,9 @@ function AccountSettingsPage({ onSearchPreferencesSaved }: { onSearchPreferences autoFocus /> {otpError &&

{otpError}

} + {otpCooldownRejected && otpCooldown > 0 && ( +

Kod został już wysłany. Kolejny możesz zamówić za {otpCooldown} s

+ )} {otpInfo && !otpError &&

{otpInfo}

} @@ -12668,7 +12713,7 @@ function LoginPage({ onLogin }: { onLogin: (user: AuthUser) => void }) { Powtórz hasło
setConfirmPassword(event.target.value)} @@ -12676,7 +12721,14 @@ function LoginPage({ onLogin }: { onLogin: (user: AuthUser) => void }) { minLength={6} required /> - +
@@ -12756,6 +12808,8 @@ function LoginPage({ onLogin }: { onLogin: (user: AuthUser) => void }) { setOtpSentAt(Date.now())} onClose={() => setOtpModalOpen(false)} onVerified={() => { setOtpModalOpen(false); setInfo('Numer telefonu został potwierdzony.'); }} /> @@ -25122,9 +25176,7 @@ function MessagesPage({ {/* Czego dotyczy rozmowa - widac od razu, bez wchodzenia w watek. */} {thread.listing && ( - {thread.listing.thumbnail && ( -