import { Box } from "@mui/material";
import { useEffect } from "react";
import { connect, useDispatch } from "react-redux";
import { Navigate, Route, Routes, useParams, useSearchParams } from "react-router-dom";
import { actionPromiseClear, actionFeedCats, actionFeedGoodsFind, actionFeedOrdersFind, actionFeedCatsFind } from "../../../reducers";
import { actionFeedAdd, actionFeedGoods, actionFeedOrders, actionFeedUsers, actionFeedUsersFind } from "../../../reducers/feedReducer";
import { CAdminGoodPage } from "../AdminGoodPage";
import { AdminGoodsPage } from "../AdminGoodsPage";
import { AdminCategoriesPage } from "../AdminCategoriesPage";
import { CAdminCategoryPage } from "../AdminCategoryPage";
import { AdminOrdersPage } from "../AdminOrdersPage";
import { CAdminOrderPage } from "../AdminOrderPage";
import { actionCatAll } from "../../../actions/actionCatAll";
import { CAdminCategoryTree } from "../AdminCategoryTree";
import { AdminUsersPage } from "../AdminUsersPage";
import { CAdminUserPage } from "../AdminUserPage.js";
import { actionAdminCategoryPage } from "../../../actions/actionAdminCategoryPage";
import { actionAdminCategoryPageClear } from "../../../actions/actionAdminCategoryPageClear";
import { actionAdminCategoriesPage } from "../../../actions/actionAdminCategoriesPage";
import { actionAdminCategoriesPageClear } from "../../../actions/actionAdminCategoriesPageClear";
import { actionAdminCategoriesSearchPageClear } from "../../../actions/actionAdminCategoriesSearchPageClear";
import { actionAdminCategoriesSearchPage } from "../../../actions/actionAdminCategoriesSearchPage";
import { actionAdminGoodsPageClear } from "../../../actions/actionAdminGoodsPageClear";
import { actionAdminGoodsPage } from "../../../actions/actionAdminGoodsPage";
import { actionAdminGoodPage } from "../../../actions/actionAdminGoodPage";
import { actionAdminGoodPageClear } from "../../../actions/actionAdminGoodPageClear";
import { actionAdminGoodsSearchPageClear } from "../../../actions/actionAdminGoodsSearchPageClear";
import { actionAdminGoodsSearchPage } from "../../../actions/actionAdminGoodsSearchPage";
import { actionAdminOrdersPageClear } from "../../../actions/actionAdminOrdersPageClear";
import { actionAdminOrdersPage } from "../../../actions/actionAdminOrdersPage";
import { actionAdminOrdersSearchPageClear } from "../../../actions/actionAdminOrdersSearchPageClear";
import { actionAdminOrderPage } from "../../../actions/actionAdminOrderPage";
import { actionAdminOrderPageClear } from "../../../actions/actionAdminOrderPageClear";
import { actionAdminUsersSearchPageClear } from "../../../actions/actionAdminUsersSearchPageClear";
import { actionAdminUsersSearchPage } from "../../../actions/actionAdminUsersSearchPage";
import { actionAdminUsersPageClear } from "../../../actions/actionAdminUsersPageClear";
import { actionAdminUsersPage } from "../../../actions/actionAdminUsersPage";
import { actionAdminUserPageClear } from "../../../actions/actionAdminUserPageClear";
import { actionAdminUserPage } from "../../../actions/actionAdminUserPage";
import { InfScroll } from "../../common/InfScroll";
const AdminCategoryTreePageContainer = ({ onLoad, onUnmount }) => {
useEffect(() => {
onLoad();
return () => {
onUnmount();
};
}, []);
return ;
};
const CAdminCategoryTreePageContainer = connect(null, {
onUnmount: () => actionCatAll(),
onLoad: () => actionPromiseClear("catAll"),
})(AdminCategoryTreePageContainer);
const AdminCategoryPageContainer = ({ onUnmount, onLoad }) => {
const params = useParams();
useEffect(() => {
return () => {
onUnmount();
};
}, []);
useEffect(() => {
onLoad(params._id);
}, [params._id]);
return ;
};
const CAdminCategoryPageContainer = connect(null, {
onUnmount: () => actionAdminCategoryPageClear(),
onLoad: (_id) => actionAdminCategoryPage({ _id }),
})(AdminCategoryPageContainer);
const AdminCategoriesPageContainer = ({ feed, cats, promiseStatus, onLoad, onUnmount, onScroll }) => {
const dispatch = useDispatch();
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
useEffect(() => {
onLoad({ orderBy });
return () => {
onUnmount();
};
}, [orderBy]);
useEffect(() => {
window.onscroll = (e) => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
if (promiseStatus !== "PENDING") {
onScroll({ feed, orderBy });
}
}
};
return () => {
window.onscroll = null;
};
}, [feed, promiseStatus]);
useEffect(() => {
if (cats.length) dispatch(actionFeedAdd(cats));
}, [cats]);
return ;
};
const CAdminCategoriesPageContainer = connect(
(state) => ({
cats: state.promise?.feedCatAll?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedCatAll?.status || null,
}),
{
onUnmount: () => actionAdminCategoriesPageClear(),
onLoad: ({ orderBy }) => actionAdminCategoriesPage({ orderBy }),
onScroll: ({ feed, orderBy }) => actionFeedCats({ skip: feed?.length || 0, orderBy }),
}
)(AdminCategoriesPageContainer);
const AdminCategoriesSearchPageContainer = ({ feed, cats, promiseStatus, onLoad, onUnmount, onScroll }) => {
const dispatch = useDispatch();
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
const text = searchParams.get("text") || "";
useEffect(() => {
onLoad({ orderBy, text });
return () => {
onUnmount();
};
}, [orderBy, text]);
useEffect(() => {
window.onscroll = (e) => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
if (promiseStatus !== "PENDING") {
onScroll({ feed, orderBy, text });
}
}
};
return () => {
window.onscroll = null;
};
}, [promiseStatus, feed, text]);
useEffect(() => {
if (cats?.length) dispatch(actionFeedAdd(cats));
}, [cats]);
return ;
};
const CAdminCategoriesSearchPageContainer = connect(
(state) => ({
cats: state.promise?.feedCatsFind?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedCatsFind?.status || null,
}),
{
onUnmount: () => actionAdminCategoriesSearchPageClear(),
onLoad: ({ orderBy, text }) => actionAdminCategoriesSearchPage({ orderBy, text }),
onScroll: ({ feed, orderBy, text }) => actionFeedCatsFind({ text, skip: feed?.length || 0, orderBy }),
}
)(AdminCategoriesSearchPageContainer);
const AdminGoodPageContainer = ({ onUnmount, onLoad }) => {
const params = useParams();
useEffect(() => {
onLoad(params._id);
return () => {
onUnmount();
};
}, []);
return ;
};
const CAdminGoodPageContainer = connect(null, {
onUnmount: () => actionAdminGoodPageClear(),
onLoad: (_id) => actionAdminGoodPage({ _id }),
})(AdminGoodPageContainer);
const AdminGoodsPageContainer = ({ feed, goods, promiseStatus, onLoad, onUnmount, onScroll }) => {
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
useEffect(() => {
onLoad({ orderBy });
return () => {
onUnmount();
};
}, [orderBy]);
return (
onScroll({ feed, orderBy })}
orderBy={orderBy}
/>
);
};
const CAdminGoodsPageContainer = connect(
(state) => ({
goods: state.promise?.feedGoodsAll?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedGoodsAll?.status || null,
}),
{
onUnmount: () => actionAdminGoodsPageClear(),
onLoad: ({ orderBy }) => actionAdminGoodsPage({ orderBy }),
onScroll: ({ feed, orderBy }) => actionFeedGoods({ skip: feed?.length || 0, orderBy }),
}
)(AdminGoodsPageContainer);
const AdminGoodsSearchPageContainer = ({ feed, goods, promiseStatus, onLoad, onUnmount, onScroll }) => {
const dispatch = useDispatch();
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
const text = searchParams.get("text") || "";
useEffect(() => {
onLoad({ orderBy, text });
return () => {
onUnmount();
};
}, [orderBy, text]);
useEffect(() => {
window.onscroll = (e) => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
if (promiseStatus !== "PENDING") {
onScroll({ feed, orderBy, text });
}
}
};
return () => {
window.onscroll = null;
};
}, [promiseStatus, feed, text]);
useEffect(() => {
if (goods?.length) dispatch(actionFeedAdd(goods));
}, [goods]);
return ;
};
const CAdminGoodsSearchPageContainer = connect(
(state) => ({
goods: state.promise?.feedGoodsFind?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedGoodsFind?.status || null,
}),
{
onUnmount: () => actionAdminGoodsSearchPageClear(),
onLoad: ({ orderBy, text }) => actionAdminGoodsSearchPage({ orderBy, text }),
onScroll: ({ feed, orderBy, text }) => actionFeedGoodsFind({ text, skip: feed?.length || 0, orderBy }),
}
)(AdminGoodsSearchPageContainer);
const AdminOrdersPageContainer = ({ feed, orders, promiseStatus, onLoad, onUnmount, onScroll }) => {
const dispatch = useDispatch();
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
const status = searchParams.get("status") || 0;
useEffect(() => {
onLoad({ orderBy, status });
return () => {
onUnmount();
};
}, [orderBy, status]);
useEffect(() => {
window.onscroll = (e) => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
if (promiseStatus !== "PENDING") {
onScroll({ feed, orderBy, status });
}
}
};
return () => {
window.onscroll = null;
};
}, [promiseStatus, feed, status]);
useEffect(() => {
if (orders?.length) dispatch(actionFeedAdd(orders));
}, [orders]);
return ;
};
const CAdminOrdersPageContainer = connect(
(state) => ({
orders: state.promise?.feedOrdersAll?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedOrdersAll?.status || null,
}),
{
onUnmount: () => actionAdminOrdersPageClear(),
onLoad: ({ orderBy, status }) => actionAdminOrdersPage({ orderBy, status }),
onScroll: ({ feed, orderBy, status }) => actionFeedOrders({ skip: feed?.length || 0, orderBy, status }),
}
)(AdminOrdersPageContainer);
const AdminOrdersSearchPageContainer = ({ feed, orders, promiseStatus, onLoad, onUnmount, onScroll }) => {
const dispatch = useDispatch();
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
const text = searchParams.get("text") || "";
const status = searchParams.get("status") || 0;
useEffect(() => {
onLoad({ orderBy, text });
return () => {
onUnmount();
};
}, [orderBy, text, status]);
useEffect(() => {
window.onscroll = (e) => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
if (promiseStatus !== "PENDING") {
onScroll({ feed, orderBy, text, status });
}
}
};
return () => {
window.onscroll = null;
};
}, [promiseStatus, feed, text, status]);
useEffect(() => {
if (orders?.length) dispatch(actionFeedAdd(orders));
}, [orders]);
return ;
};
const CAdminOrdersSearchPageContainer = connect(
(state) => ({
orders: state.promise?.feedOrdersFind?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedOrdersFind?.status || null,
}),
{
onUnmount: () => actionAdminOrdersSearchPageClear(),
onLoad: ({ orderBy, text, status }) => actionAdminOrdersSearchPageClear({ orderBy, text, status }),
onScroll: ({ feed, orderBy, text, status }) => actionFeedOrdersFind({ text, skip: feed?.length || 0, orderBy, status }),
}
)(AdminOrdersSearchPageContainer);
const AdminOrderPageContainer = ({ onLoad, onUnmount }) => {
const params = useParams();
useEffect(() => {
return () => {
onUnmount();
};
}, []);
useEffect(() => {
onLoad(params._id);
}, [params._id]);
return ;
};
const CAdminOrderPageContainer = connect(null, {
onUnmount: () => actionAdminOrderPageClear(),
onLoad: (_id) => actionAdminOrderPage({ _id }),
})(AdminOrderPageContainer);
const AdminUsersSearchPageContainer = ({ feed, users, promiseStatus, onLoad, onUnmount, onScroll }) => {
const dispatch = useDispatch();
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
const text = searchParams.get("text") || "";
useEffect(() => {
onLoad({ orderBy, text });
return () => {
onUnmount();
};
}, [orderBy, text]);
useEffect(() => {
window.onscroll = (e) => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
if (promiseStatus !== "PENDING") {
onScroll({ feed, orderBy, text });
}
}
};
return () => {
window.onscroll = null;
};
}, [promiseStatus, feed, text]);
useEffect(() => {
if (users?.length) dispatch(actionFeedAdd(users));
}, [users]);
return ;
};
const CAdminUsersSearchPageContainer = connect(
(state) => ({
users: state.promise?.feedUsersFind?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedUsersFind?.status || null,
}),
{
onUnmount: () => actionAdminUsersSearchPageClear(),
onLoad: ({ orderBy, text }) => actionAdminUsersSearchPage({ orderBy, text }),
onScroll: ({ feed, orderBy, text }) => actionFeedUsersFind({ text, skip: feed?.length || 0, orderBy }),
}
)(AdminUsersSearchPageContainer);
const AdminUsersPageContainer = ({ feed, users, promiseStatus, onLoad, onUnmount, onScroll }) => {
const dispatch = useDispatch();
const [searchParams] = useSearchParams();
const orderBy = searchParams.get("orderBy") || "_id";
useEffect(() => {
onLoad({ orderBy });
return () => {
onUnmount();
};
}, [orderBy]);
useEffect(() => {
window.onscroll = (e) => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
if (promiseStatus !== "PENDING") {
onScroll({ feed, orderBy });
}
}
};
return () => {
window.onscroll = null;
};
}, [promiseStatus, feed]);
useEffect(() => {
if (users?.length) dispatch(actionFeedAdd(users));
}, [users]);
return ;
};
const CAdminUsersPageContainer = connect(
(state) => ({
users: state.promise?.feedUsersAll?.payload || [],
feed: state.feed?.payload || [],
promiseStatus: state.promise?.feedUsersAll?.status || null,
}),
{
onUnmount: () => actionAdminUsersPageClear(),
onLoad: ({ orderBy }) => actionAdminUsersPage({ orderBy }),
onScroll: ({ feed, orderBy }) => actionFeedUsers({ skip: feed?.length || 0, orderBy }),
}
)(AdminUsersPageContainer);
const AdminUserPageContainer = ({ onLoad, onUnmount }) => {
const params = useParams();
useEffect(() => {
return () => {
onUnmount();
};
}, []);
useEffect(() => {
onLoad(params._id);
}, [params._id]);
return ;
};
const CAdminUserPageContainer = connect(null, {
onUnmount: () => actionAdminUserPageClear(),
onLoad: (_id) => actionAdminUserPage({ _id }),
})(AdminUserPageContainer);
const AdminLayoutPage = () => {
return (
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
);
};
export { AdminLayoutPage };