80 lines
2.3 KiB
JavaScript
80 lines
2.3 KiB
JavaScript
import React, { useEffect, useState } from "react";
|
|
import { useDispatch } from "react-redux";
|
|
import { Navigate } from "react-router-dom";
|
|
|
|
import { profiles, tags } from "@redux/outstaffingSlice";
|
|
|
|
import { apiRequest } from "@api/request";
|
|
|
|
import { Footer } from "@components/Common/Footer/Footer";
|
|
import Description from "@components/Description/Description";
|
|
import { Navigation } from "@components/Navigation/Navigation";
|
|
import Outstaffing from "@components/Outstaffing/Outstaffing";
|
|
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
|
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
|
|
|
const Home = () => {
|
|
if (localStorage.getItem("role_status") !== "18") {
|
|
return <Navigate to="/profile" replace />;
|
|
}
|
|
|
|
const [isLoadingMore, setIsLoadingMore] = useState(false);
|
|
const [index, setIndex] = useState(4);
|
|
|
|
const dispatch = useDispatch();
|
|
|
|
useEffect(() => {
|
|
setIsLoadingMore(true);
|
|
apiRequest("/profile", {
|
|
params: { limit: 1000 }
|
|
}).then((profileArr) => {
|
|
dispatch(profiles(profileArr));
|
|
setIsLoadingMore(false);
|
|
});
|
|
|
|
apiRequest("/skills/skills-on-main-page", {}).then((skills) => {
|
|
if (!skills) {
|
|
return [];
|
|
}
|
|
|
|
const keys = Object.keys(skills);
|
|
const values = Object.values(skills);
|
|
|
|
const tempTags = values.map((value, index) =>
|
|
value.map((val) => {
|
|
return { id: val.id, value: val.tags, name: keys[index] };
|
|
})
|
|
);
|
|
dispatch(tags(tempTags));
|
|
});
|
|
}, [index]);
|
|
|
|
const loadMore = (count) => {
|
|
setIndex((prev) => prev + count);
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<ProfileHeader />
|
|
<Navigation />
|
|
<div className="catalog">
|
|
<div className="container">
|
|
<ProfileBreadcrumbs
|
|
links={[
|
|
{ name: "Главная", link: "/profile" },
|
|
{ name: "Запросы и открытые позиции", link: "/profile/requests" },
|
|
{ name: "Каталог", link: "/profile/catalog" }
|
|
]}
|
|
/>
|
|
<h2 className="catalog__title">Каталог специалистов</h2>
|
|
<Outstaffing />
|
|
<Description onLoadMore={loadMore} isLoadingMore={isLoadingMore} />
|
|
<Footer />
|
|
</div>
|
|
</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default Home;
|