Merge pull request #15 from SlimusMinus/edit-profile

moved edit profile in center window
This commit is contained in:
SlimusMinus
2026-06-16 01:29:57 +03:00
committed by GitHub
3 changed files with 29 additions and 18 deletions

View File

@@ -6,6 +6,7 @@ import RightSidebar from "./RightSidebar";
import PostOnFeed from "./PostOnFeed";
import CreateUpdatePost from "./CreateUpdatePost";
import MenuIcon from "./icons/MenuIcon";
import { ProfileModal } from "./profile";
/**
* MainFeed — корневой компонент приложения.
@@ -23,6 +24,15 @@ export default function MainFeed() {
const [modalOpen, setModalOpen] = useState(false);
// Объявление, которое сейчас редактируется (null — модалка закрыта)
const [editAd, setEditAd] = useState(null);
// Открыто ли модальное окно редактирования профиля
const [profileModalOpen, setProfileModalOpen] = useState(false);
// Данные профиля пользователя
const [profileData, setProfileData] = useState({
firstName: "Иван",
lastName: "Иванов",
email: "ivan@example.com",
phone: "+7 (999) 123-45-67",
});
// Массив объявлений из API
const [ads, setAds] = useState([]);
// Set id объявлений, которые пользователь лайкнул (только локально)
@@ -149,6 +159,7 @@ export default function MainFeed() {
activeNav={activeNav}
onClose={() => setSidebarOpen(false)}
onNavClick={setActiveNav}
onEditProfile={() => setProfileModalOpen(true)}
/>
<div className="f-main">
@@ -215,6 +226,14 @@ export default function MainFeed() {
onSuccess={handleEditSave}
/>
)}
{/* Модальное окно редактирования профиля */}
{profileModalOpen && (
<ProfileModal
onClose={() => setProfileModalOpen(false)}
initialData={profileData}
/>
)}
</div>
);
}

View File

@@ -4,8 +4,8 @@ import {NAV_BOTTOM, NAV_ITEMS} from "../config/feedConstants";
import {NavIcons} from "./icons/NavIcons";
import Profile from "./profile/Profile";
export default function Sidebar({ open, activeNav, onClose, onNavClick }) {
const [profileData, setProfileData] = useState({
export default function Sidebar({ open, activeNav, onClose, onNavClick, onEditProfile }) {
const [profileData] = useState({
firstName: "Иван",
lastName: "Иванов",
email: "ivan@example.com",
@@ -48,7 +48,7 @@ export default function Sidebar({ open, activeNav, onClose, onNavClick }) {
);
})}
<div className="f-sb-divider" />
<Profile data={profileData} />
<Profile data={profileData} onEdit={onEditProfile} />
</div>
</div>
</>

View File

@@ -1,19 +1,11 @@
import React, { useState } from "react";
import ProfileModal from "./ProfileModal";
import ProfileAvatar from "./ProfileAvatar";
import ProfileInfo from "./ProfileInfo";
export default function Profile({ data = {} }) {
const [showModal, setShowModal] = useState(false);
export default function Profile({ data = {}, onEdit }) {
return (
<>
<div className="f-profile" onClick={() => setShowModal(true)}>
<ProfileAvatar avatar={data.avatar} name={`${data.firstName || ""} ${data.lastName || ""}`} />
<ProfileInfo firstName={data.firstName} email={data.email} />
</div>
{showModal && <ProfileModal onClose={() => setShowModal(false)} initialData={data} />}
</>
<div className="f-profile" onClick={onEdit}>
<ProfileAvatar avatar={data.avatar} name={`${data.firstName || ""} ${data.lastName || ""}`} />
<ProfileInfo firstName={data.firstName} email={data.email} />
</div>
);
}