diff --git a/backend/src/main/java/pl/polskalokalnie/auth/AuthService.java b/backend/src/main/java/pl/polskalokalnie/auth/AuthService.java index 8f9bddd..33a59e0 100644 --- a/backend/src/main/java/pl/polskalokalnie/auth/AuthService.java +++ b/backend/src/main/java/pl/polskalokalnie/auth/AuthService.java @@ -175,7 +175,7 @@ public class AuthService { return switch (provider) { case GOOGLE -> "demo.google@gmail.com"; case FACEBOOK -> "demo.facebook@facebook.com"; - case LOCAL -> "demo.local@mieszko.pl"; + case LOCAL -> "demo.local@polskalokalnie.pl"; }; } diff --git a/backend/src/main/java/pl/polskalokalnie/config/DataSeeder.java b/backend/src/main/java/pl/polskalokalnie/config/DataSeeder.java index 235deb3..4a9b4e9 100644 --- a/backend/src/main/java/pl/polskalokalnie/config/DataSeeder.java +++ b/backend/src/main/java/pl/polskalokalnie/config/DataSeeder.java @@ -31,7 +31,7 @@ public class DataSeeder implements CommandLineRunner { PasswordEncoder passwordEncoder, @Value("${app.admin.email:admin@mieszko.pl}") String adminEmail, @Value("${app.admin.password:Admin123!}") String adminPassword, - @Value("${app.admin.name:Administrator Mieszko}") String adminName + @Value("${app.admin.name:Administrator Polska Lokalnie}") String adminName ) { this.userRepository = userRepository; this.listingRepository = listingRepository; @@ -93,7 +93,7 @@ public class DataSeeder implements CommandLineRunner { listing.setPrice(price); listing.setArea(area); listing.setRooms(rooms); - listing.setOwnerEmail("demo.user@mieszko.pl"); + listing.setOwnerEmail("demo.user@polskalokalnie.pl"); listing.setStatus(status); return listing; } diff --git a/backend/src/main/java/pl/polskalokalnie/message/MessageService.java b/backend/src/main/java/pl/polskalokalnie/message/MessageService.java index f3de50c..7b0d2e6 100644 --- a/backend/src/main/java/pl/polskalokalnie/message/MessageService.java +++ b/backend/src/main/java/pl/polskalokalnie/message/MessageService.java @@ -76,7 +76,7 @@ public class MessageService { "messages", null); } else { notificationService.create(recipient.getEmail(), "messages", "mail", - "Wiadomość od obsługi Mieszko", + "Wiadomość od obsługi serwisu Polska Lokalnie", preview, "messages:admin", null); } diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 368e451..d879199 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -28,4 +28,4 @@ app: admin: email: ${APP_ADMIN_EMAIL:admin@mieszko.pl} password: ${APP_ADMIN_PASSWORD:Admin123!} - name: ${APP_ADMIN_NAME:Administrator Mieszko} + name: ${APP_ADMIN_NAME:Administrator Polska Lokalnie} diff --git a/backend/src/test/resources/application.yml b/backend/src/test/resources/application.yml index 010d940..eaf8614 100644 --- a/backend/src/test/resources/application.yml +++ b/backend/src/test/resources/application.yml @@ -15,4 +15,4 @@ app: admin: email: admin@mieszko.pl password: Admin123! - name: Administrator Mieszko + name: Administrator Polska Lokalnie diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 1d1bb6f..e70d3ef 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,6 +1,6 @@ import { Fragment, type ChangeEvent as ReactChangeEvent, type ClipboardEvent as ReactClipboardEvent, type Dispatch, type DragEvent as ReactDragEvent, type FormEvent as ReactFormEvent, type KeyboardEvent as ReactKeyboardEvent, type MouseEvent as ReactMouseEvent, type PointerEvent as ReactPointerEvent, type ReactNode, type SetStateAction, type WheelEvent as ReactWheelEvent, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; import './styles.css'; -import { Link, NavLink, Route, Routes, useLocation, useNavigate, useNavigationType, useParams, useSearchParams } from 'react-router-dom'; +import { Link, NavLink, Outlet, Route, Routes, useLocation, useNavigate, useNavigationType, useParams, useSearchParams } from 'react-router-dom'; import { ROUTES, listingPath, mapPath, negotiationPath, companiesPath, adminTabPath, ADMIN_PATH_TO_TAB, type AdminTabKey } from './routes'; import { ProtectedRoute } from './ProtectedRoute'; import { apiFetch, useAuth } from './auth'; @@ -184,7 +184,7 @@ const userNotifications: UserNotification[] = [ }, { id: 'support-reply', - title: 'Wiadomość od obsługi Mieszko', + title: 'Wiadomość od obsługi serwisu Polska Lokalnie', description: 'Dziękujemy za kontakt. Odpowiemy najszybciej jak to możliwe.', timeLabel: 'Wczoraj, 18:20', dayLabel: 'Wczoraj', @@ -630,9 +630,9 @@ function toFavoriteListing(listing: ApiListingDetail): FavoriteListing { } function buildMessageThreadTargetFromListing(listing: ApiListingDetail, user: AuthUser | null): MessageThreadTarget { - const sellerName = listing.contactName?.trim() || 'Administracja Mieszko'; + const sellerName = listing.contactName?.trim() || 'Administracja Polska Lokalnie'; const isOwner = Boolean(user && listing.ownerEmail && user.email.toLowerCase() === listing.ownerEmail.toLowerCase()); - const sellerRole = isOwner ? 'To Twoje ogłoszenie' : 'Oficjalny kontakt zespołem Mieszko'; + const sellerRole = isOwner ? 'To Twoje ogłoszenie' : 'Oficjalny kontakt zespołem serwisu Polska Lokalnie'; const threadIdBase = listing.ownerEmail?.trim() || sellerName; const threadId = `listing-${listing.id}-${threadIdBase.toLowerCase().replace(/[^a-z0-9]+/g, '-')}`; @@ -1734,7 +1734,7 @@ const sellReasons = [ const sellChannels = [ { icon: 'logo', - title: 'mieszko.pl', + title: 'polskalokalnie.pl', text: 'Nasza strona', }, { @@ -3466,11 +3466,15 @@ function App() { /> } /> } /> - } /> } /> + + {/* Narzedzia publiczne - dostepne tak samo dla goscia i zalogowanego, + bez lewego menu konta (jak /kupno czy /wynajem) */} + } /> } /> } /> } /> + } /> } /> } /> @@ -3498,21 +3502,25 @@ function App() { } /> } /> } /> - } /> - } /> } /> - - )} - /> + + {/* Pozostale pozycje lewego menu konta - ten sam uklad co /konto/wyszukiwania */} + }> + } /> + } /> + + )} + /> + {/* Panel administratora - zakladki jako podsciezki /admin/* */} @@ -3727,7 +3735,7 @@ const ADMIN_TAB_META: Record = { reports: { title: 'Zgłoszenia', subtitle: 'Zgłoszenia dotyczące ogłoszeń i użytkowników wymagające uwagi.' }, payments: { title: 'Płatności', subtitle: 'Historia płatności i promocji ogłoszeń.' }, stats: { title: 'Statystyki', subtitle: 'Statystyki aktywności i ruchu w serwisie.' }, - settings: { title: 'Ustawienia serwisu', subtitle: 'Globalna konfiguracja serwisu Mieszko.' }, + settings: { title: 'Ustawienia serwisu', subtitle: 'Globalna konfiguracja serwisu Polska Lokalnie.' }, moderation: { title: 'Weryfikacja ogłoszeń', subtitle: 'Kolejka ogłoszeń oczekujących na moderację.' }, categories: { title: 'Kategorie', subtitle: 'Zarządzaj kategoriami i typami nieruchomości.' }, locations: { title: 'Lokalizacje', subtitle: 'Zarządzaj obsługiwanymi miastami i dzielnicami.' }, @@ -5629,6 +5637,33 @@ function AccountSidebar() { ); } +/** + * Wspolny layout stron konta, ktore maja wlasny adres poza /konto/*: + * /ulubione, /wiadomosci i /powiadomienia. Dzieki niemu otwieraja sie tak samo + * jak /konto/wyszukiwania, bez powtarzania ukladu w kazdej stronie. + * + * Narzedzia publiczne (wycena, historia cen, ranking, negocjacje) celowo tu nie + * trafiaja - dzialaja jak /kupno czy /wynajem, bez menu konta. + */ +function AccountShell() { + const { user } = useAuth(); + + if (!user) { + return ; + } + + return ( +
+
+ +
+ +
+
+
+ ); +} + function AccountDashboardPage({ savedSearches, onOpenSavedSearch, @@ -5711,14 +5746,14 @@ function AccountDashboardPage({ { id: 'recent', label: 'Ostatnio oglądane', visible: false, layout: 'normal', order: 0 }, { id: 'alerts', label: 'Alerty cenowe', visible: false, layout: 'normal', order: 1 }, { id: 'searches', label: 'Moje wyszukiwania', visible: false, layout: 'normal', order: 2 }, - { id: 'tools', label: 'Narzędzia Mieszko', visible: false, layout: 'normal', order: 3 }, + { id: 'tools', label: 'Narzędzia Polska Lokalnie', visible: false, layout: 'normal', order: 3 }, ]; const widgetCardMeta: Record = { recent: { icon: 'house', description: 'Podgląd ostatnio oglądanych ofert i mieszkań.', tone: 'green' }, searches: { icon: 'search', description: 'Twoje zapisane wyszukiwania i nowe dopasowania.', tone: 'blue' }, alerts: { icon: 'bell', description: 'Alerty cenowe i ważne powiadomienia z rynku.', tone: 'amber' }, - tools: { icon: 'gear', description: 'Szybki dostęp do narzędzi Mieszko i analiz.', tone: 'pink' }, + tools: { icon: 'gear', description: 'Szybki dostęp do narzędzi serwisu Polska Lokalnie i analiz.', tone: 'pink' }, }; const [showWidgetEditLauncher, setShowWidgetEditLauncher] = useState(false); @@ -5897,7 +5932,7 @@ function AccountDashboardPage({ tools: (
-

Narzędzia Mieszko

+

Narzędzia Polska Lokalnie

{tools.map((tool) => ( @@ -6290,7 +6325,7 @@ function AccountHelpContactPage({ iconTone: 'blue', title: 'E-mail', description: 'Napisz do nas, odpowiemy najszybciej jak to możliwe.', - action: 'bok@mieszko.pl', + action: 'bok@polskalokalnie.pl', }, { id: 'phone', @@ -7604,7 +7639,7 @@ function AccountMeetingsPage() { id: 'meeting-test-now-1', title: 'Test: szybka konsultacja', subtitle: 'Spotkanie testowe na dziś', - location: 'Biuro Mieszko, Warszawa', + location: 'Biuro Polska Lokalnie, Warszawa', dateKey: addDays(0), start: '18:30', end: '19:00', @@ -9011,7 +9046,7 @@ function AccountSettingsPage() {

Export danych

-

Pobierz kopię swoich danych z konta Mieszko.

+

Pobierz kopię swoich danych z konta w serwisie Polska Lokalnie.

@@ -9691,7 +9726,7 @@ function AccountProfileEditPage() {
Dane i ustawienia Edytuj profil

Edytuj profil

-

Zarządzaj swoimi danymi osobowymi i wizerunkiem w Mieszko.

+

Zarządzaj swoimi danymi osobowymi i wizerunkiem w serwisie Polska Lokalnie.

@@ -9745,7 +9780,7 @@ function AccountProfileEditPage() { setField('nick', event.target.value)} />
- mieszko.pl/u/{profile.nick} + polskalokalnie.pl/u/{profile.nick}