added rules on ReFound
This commit is contained in:
@@ -8,6 +8,7 @@ import CreateUpdatePost from "./CreateUpdatePost";
|
||||
import MenuIcon from "./icons/MenuIcon";
|
||||
import { ProfileModal } from "./profile";
|
||||
import AuthModal from "./AuthModal";
|
||||
import RulesModal from "./RulesModal";
|
||||
import { useAuthContext } from "../context/AuthContext";
|
||||
|
||||
/**
|
||||
@@ -32,6 +33,8 @@ export default function MainFeed() {
|
||||
const [profileModalOpen, setProfileModalOpen] = useState(false);
|
||||
// Открыто ли модальное окно аутентификации (login / register)
|
||||
const [authModalOpen, setAuthModalOpen] = useState(false);
|
||||
// Открыто ли модальное окно правил площадки
|
||||
const [rulesModalOpen, setRulesModalOpen] = useState(false);
|
||||
// Массив объявлений из API (основная лента)
|
||||
const [ads, setAds] = useState([]);
|
||||
// Объявления текущего пользователя (загружаются отдельно по userId)
|
||||
@@ -45,13 +48,26 @@ export default function MainFeed() {
|
||||
// Данные профиля — из контекста авторизации (или пустой объект для гостя)
|
||||
const profileData = useMemo(() => {
|
||||
if (!user) return {};
|
||||
|
||||
// Если бэк присылает имя одним полем "name" — разбиваем на firstName/lastName
|
||||
// Если бэк присылает отдельные поля firstName/lastName — используем их напрямую
|
||||
const nameParts = (user.name || "").trim().split(/\s+/);
|
||||
const firstName = user.firstName || nameParts[0] || "";
|
||||
const lastName = user.lastName || nameParts.slice(1).join(" ") || "";
|
||||
|
||||
// Аватар может быть относительным путём (/uploads/avatars/...) — добавляем API_URL
|
||||
const rawAvatar = user.avatar || null;
|
||||
const avatar = rawAvatar && rawAvatar.startsWith("/")
|
||||
? `${API_URL}${rawAvatar}`
|
||||
: rawAvatar;
|
||||
|
||||
return {
|
||||
login: user.login || "",
|
||||
firstName: user.name || user.firstName || "",
|
||||
lastName: user.lastName || "",
|
||||
firstName,
|
||||
lastName,
|
||||
email: user.email || "",
|
||||
phone: user.phone || "",
|
||||
avatar: user.avatar || null,
|
||||
avatar,
|
||||
id: user.id,
|
||||
};
|
||||
}, [user]);
|
||||
@@ -230,9 +246,8 @@ export default function MainFeed() {
|
||||
ad={ad}
|
||||
liked={liked.has(ad.id)}
|
||||
onLike={toggleLike}
|
||||
onEdit={handleEdit}
|
||||
// На вкладке «Мои объявления» все посты принадлежат пользователю
|
||||
isOwner={activeNav === "Мои объявления" || (isAuthenticated && ad.userId === user?.id)}
|
||||
onEdit={activeNav === "Мои объявления" ? handleEdit : undefined}
|
||||
isOwner={activeNav === "Мои объявления"}
|
||||
/>
|
||||
));
|
||||
};
|
||||
@@ -253,6 +268,7 @@ export default function MainFeed() {
|
||||
isAuthenticated={isAuthenticated}
|
||||
onLogout={logout}
|
||||
onLoginClick={() => setAuthModalOpen(true)}
|
||||
onRulesClick={() => setRulesModalOpen(true)}
|
||||
/>
|
||||
|
||||
<div className="f-main">
|
||||
@@ -334,6 +350,11 @@ export default function MainFeed() {
|
||||
onClose={() => setAuthModalOpen(false)}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* Модальное окно правил площадки */}
|
||||
{rulesModalOpen && (
|
||||
<RulesModal onClose={() => setRulesModalOpen(false)} />
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user