Browse Source

+CAdminOrderPageContainer ->actionAdminOrderPage

ilya_shyian 1 year ago
parent
commit
e1312a22de

+ 16 - 0
src/actions/actionAdminOrderPage.js

@@ -0,0 +1,16 @@
+import { actionPromiseClear } from "../reducers";
+import { actionGoodsAll } from "./actionGoodsAll";
+import { actionOrderById } from "./actionOrderById";
+import { actionUsersAll } from "./actionUsersAll";
+
+export const actionAdminOrderPage =
+    ({ _id }) =>
+    async (dispatch, getState) => {
+        dispatch(actionPromiseClear("adminOrderById"));
+        dispatch(actionUsersAll());
+        dispatch(actionGoodsAll());
+
+        if (_id) {
+            dispatch(actionOrderById({ _id, promiseName: "adminOrderById" }));
+        }
+    };

+ 7 - 0
src/actions/actionAdminOrderPageClear.js

@@ -0,0 +1,7 @@
+import { actionPromiseClear } from "../reducers";
+
+export const actionAdminOrderPageClear = () => async (dispatch, getState) => {
+    dispatch(actionPromiseClear("usersAll"));
+    dispatch(actionPromiseClear("goodsAll"));
+    dispatch(actionPromiseClear("adminOrderById"));
+};

+ 10 - 0
src/actions/actionAdminOrdersPage.js

@@ -0,0 +1,10 @@
+import { actionFeedCats, actionFeedClear, actionFeedOrders, actionPromiseClear } from "../reducers";
+
+export const actionAdminOrdersPage =
+    ({ orderBy = "_id", status }) =>
+    async (dispatch, getState) => {
+        dispatch(actionFeedClear());
+        dispatch(actionPromiseClear("feedOrdersAll"));
+        dispatch(actionPromiseClear("orderUpsert"));
+        dispatch(actionFeedOrders({ skip: 0, orderBy, status }));
+    };

+ 7 - 0
src/actions/actionAdminOrdersPageClear.js

@@ -0,0 +1,7 @@
+import { actionFeedClear, actionPromiseClear } from "../reducers";
+
+export const actionAdminOrdersPageClear = () => async (dispatch, getState) => {
+    dispatch(actionFeedClear());
+    dispatch(actionPromiseClear("feedOrdersAll"));
+    dispatch(actionPromiseClear("orderUpsert"));
+};

+ 9 - 0
src/actions/actionAdminOrdersSearchPage.js

@@ -0,0 +1,9 @@
+import { actionFeedCats, actionFeedCatsFind, actionFeedClear, actionFeedOrdersFind, actionPromiseClear } from "../reducers";
+
+export const actionAdminOrdersSearchPage =
+    ({ orderBy = "_id", text, status }) =>
+    async (dispatch, getState) => {
+        dispatch(actionFeedClear());
+        dispatch(actionPromiseClear("feedOrdersFind"));
+        dispatch(actionFeedOrdersFind({ text, orderBy, skip: 0, status }));
+    };

+ 6 - 0
src/actions/actionAdminOrdersSearchPageClear.js

@@ -0,0 +1,6 @@
+import { actionFeedClear, actionPromiseClear } from "../reducers";
+
+export const actionAdminOrdersSearchPageClear = () => async (dispatch, getState) => {
+    dispatch(actionFeedClear());
+    dispatch(actionPromiseClear("feedOrdersFind"));
+};

+ 17 - 0
src/actions/actionAdminUserPage.js

@@ -0,0 +1,17 @@
+import { actionPromiseClear } from "../reducers";
+import { actionCatAll } from "./actionCatAll";
+import { actionCatById } from "./actionCatById";
+import { actionGoodsAll } from "./actionGoodsAll";
+
+export const actionAdminCategoryPage =
+    ({ _id }) =>
+    async (dispatch, getState) => {
+        dispatch(actionGoodsAll());
+        dispatch(actionCatAll());
+
+        if (_id) {
+            dispatch(actionCatById({ _id, promiseName: "adminCatById" }));
+        } else {
+            dispatch(actionPromiseClear("adminCatById"));
+        }
+    };

+ 7 - 0
src/actions/actionAdminUserPageClear.js

@@ -0,0 +1,7 @@
+import { actionPromiseClear } from "../reducers";
+
+export const actionAdminCategoryPageClear = () => async (dispatch, getState) => {
+    dispatch(actionPromiseClear("goodsAll"));
+    dispatch(actionPromiseClear("adminCatById"));
+    dispatch(actionPromiseClear("catAll"));
+};

+ 10 - 0
src/actions/actionAdminUsersPage.js

@@ -0,0 +1,10 @@
+import { actionFeedCats, actionFeedClear, actionPromiseClear } from "../reducers";
+
+export const actionAdminCategoriesPage =
+    ({ orderBy = "_id" }) =>
+    async (dispatch, getState) => {
+        dispatch(actionFeedClear());
+        dispatch(actionPromiseClear("feedCatAll"));
+        dispatch(actionPromiseClear("categoryUpsert"));
+        dispatch(actionFeedCats({ skip: 0, orderBy }));
+    };

+ 6 - 0
src/actions/actionAdminUsersPageClear.js

@@ -0,0 +1,6 @@
+import { actionFeedClear, actionPromiseClear } from "../reducers";
+
+export const actionAdminCategoriesPageClear = () => async (dispatch, getState) => {
+    dispatch(actionFeedClear());
+    dispatch(actionPromiseClear("feedCatAll"));
+};

+ 9 - 0
src/actions/actionAdminUsersSearchPage.js

@@ -0,0 +1,9 @@
+import { actionFeedCats, actionFeedCatsFind, actionFeedClear, actionPromiseClear } from "../reducers";
+
+export const actionAdminCategoriesSearchPage =
+    ({ orderBy = "_id", text }) =>
+    async (dispatch, getState) => {
+        dispatch(actionFeedClear());
+        dispatch(actionPromiseClear("feedCatsFind"));
+        dispatch(actionFeedCatsFind({ text, orderBy, skip: 0 }));
+    };

+ 7 - 0
src/actions/actionAdminUsersSearchPageClear.js

@@ -0,0 +1,7 @@
+import { actionFeedClear, actionPromiseClear } from "../reducers";
+
+export const actionAdminCategoriesSearchPageClear = () => async (dispatch, getState) => {
+    dispatch(actionFeedClear());
+    dispatch(actionPromiseClear("feedCatsFind"));
+    // dispatch(actionPromiseClear("adminCatsFind"));
+};

+ 2 - 2
src/actions/actionOrdersFind.js

@@ -2,7 +2,7 @@ import { gql } from "../helpers";
 import { actionPromise } from "../reducers";
 
 export const actionOrdersFind =
-    ({ text = "", limit = 7, skip = 0, promiseName = "ordersFind", orderBy = "_id" }) =>
+    ({ text = "", limit = 7, skip = 0, promiseName = "ordersFind", orderBy = "_id", status = "0" }) =>
     async (dispatch, getState) => {
         dispatch(
             actionPromise(
@@ -18,7 +18,7 @@ export const actionOrdersFind =
                     }`,
                     {
                         query: JSON.stringify([
-                            { owner__username__contains: text, _id__contains: text, status__contains: text },
+                            { owner__username__contains: text, _id__contains: text, status__contains: text, status },
                             {
                                 limit: !!limit ? limit : 5,
                                 skip,

+ 64 - 50
src/components/admin/AdminLayoutPage/index.js

@@ -45,6 +45,11 @@ 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";
 
 const AdminCategoryTreePageContainer = ({ onLoad, onUnmount }) => {
     useEffect(() => {
@@ -284,108 +289,119 @@ const CAdminGoodsSearchPageContainer = connect(
     }
 )(AdminGoodsSearchPageContainer);
 
-const AdminOrdersPageContainer = ({ orders }) => {
+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(() => {
-        dispatch(actionFeedClear());
-        dispatch(actionPromiseClear("feedOrdersAll"));
-        dispatch(actionPromiseClear("orderUpsert"));
-        dispatch(actionFeedOrders({ skip: 0, orderBy, status }));
+        onLoad({ orderBy, status });
+        return () => {
+            onUnmount();
+        };
     }, [orderBy, status]);
 
     useEffect(() => {
         window.onscroll = (e) => {
             if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
-                const {
-                    feed,
-                    promise: { feedOrdersAll },
-                } = store.getState();
-
-                if (feedOrdersAll.status !== "PENDING") {
-                    dispatch(actionFeedOrders({ skip: feed.payload?.length || 0, orderBy, status }));
+                if (promiseStatus !== "PENDING") {
+                    onScroll({ feed, orderBy, status });
                 }
             }
         };
         return () => {
-            dispatch(actionFeedClear());
-            dispatch(actionPromiseClear("feedOrdersAll"));
-            dispatch(actionPromiseClear("orderUpsert"));
             window.onscroll = null;
         };
-    }, []);
+    }, [promiseStatus, feed, status]);
 
     useEffect(() => {
-        if (orders?.length) store.dispatch(actionFeedAdd(orders));
+        if (orders?.length) dispatch(actionFeedAdd(orders));
     }, [orders]);
+
     return <AdminOrdersPage orderBy={orderBy} />;
 };
 
-const AdminOrdersSearchPageContainer = () => {
-    const orders = useSelector((state) => state.promise?.feedOrdersFind?.payload || []);
+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(() => {
-        dispatch(actionFeedClear());
-        dispatch(actionPromiseClear("feedOrdersFind"));
-        dispatch(actionFeedOrdersFind({ text, orderBy, skip: 0 }));
-    }, [orderBy, text]);
+        onLoad({ orderBy, text });
+        return () => {
+            onUnmount();
+        };
+    }, [orderBy, text, status]);
 
     useEffect(() => {
         window.onscroll = (e) => {
             if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 200) {
-                const {
-                    feed,
-                    promise: { feedOrdersFind },
-                } = store.getState();
-
-                if (feedOrdersFind.status !== "PENDING") {
-                    dispatch(actionFeedOrdersFind({ text, skip: feed.payload?.length || 0, orderBy }));
+                if (promiseStatus !== "PENDING") {
+                    onScroll({ feed, orderBy, text, status });
                 }
             }
         };
         return () => {
-            dispatch(actionFeedClear());
-            dispatch(actionPromiseClear("feedOrdersFind"));
             window.onscroll = null;
         };
-    }, []);
+    }, [promiseStatus, feed, text, status]);
 
     useEffect(() => {
-        if (orders?.length) store.dispatch(actionFeedAdd(orders));
+        if (orders?.length) dispatch(actionFeedAdd(orders));
     }, [orders]);
 
     return <AdminOrdersPage orderBy={orderBy} />;
 };
 
-const AdminOrderPageContainer = () => {
+const CAdminOrdersSearchPageContainer = connect(
+    (state) => ({
+        goods: 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();
-    const dispatch = useDispatch();
 
     useEffect(() => {
-        dispatch(actionPromiseClear("adminOrderById"));
-        dispatch(actionUsersAll());
-        dispatch(actionGoodsAll());
         return () => {
-            dispatch(actionPromiseClear("usersAll"));
-            dispatch(actionPromiseClear("goodsAll"));
-            dispatch(actionPromiseClear("adminOrderById"));
+            onUnmount();
         };
     }, []);
+
     useEffect(() => {
-        if (params._id) {
-            dispatch(actionOrderById({ _id: params._id, promiseName: "adminOrderById" }));
-        }
+        onLoad(params._id);
     }, [params._id]);
     return <CAdminOrderPage />;
 };
 
+const CAdminOrderPageContainer = connect(null, {
+    onUnmount: () => actionAdminOrderPageClear(),
+    onLoad: (_id) => actionAdminOrderPage({ _id }),
+})(AdminOrderPageContainer);
+
 const AdminUsersSearchPageContainer = () => {
     const dispatch = useDispatch();
     const users = useSelector((state) => state.promise?.feedUsersFind?.payload || []);
@@ -489,8 +505,6 @@ const AdminUserPageContainer = () => {
     return <CAdminUserPage />;
 };
 
-const CAdminOrdersPageContainer = connect((state) => ({ orders: state.promise?.feedOrdersAll?.payload || [] }))(AdminOrdersPageContainer);
-
 const CAdminUsersPageContainer = connect((state) => ({ users: state.promise?.feedUsersAll?.payload || [] }))(AdminUsersPageContainer);
 
 const AdminLayoutPage = () => {
@@ -508,9 +522,9 @@ const AdminLayoutPage = () => {
                 <Route path="/category/" element={<CAdminCategoryPageContainer />} />
                 <Route path="/category/:_id" element={<CAdminCategoryPageContainer />} />
                 <Route path="/orders/" element={<CAdminOrdersPageContainer />} />
-                <Route path="/orders/search" element={<AdminOrdersSearchPageContainer />} />
-                <Route path="/order/" element={<AdminOrderPageContainer />} />
-                <Route path="/order/:_id" element={<AdminOrderPageContainer />} />
+                <Route path="/orders/search" element={<CAdminOrdersSearchPageContainer />} />
+                <Route path="/order/" element={<CAdminOrderPageContainer />} />
+                <Route path="/order/:_id" element={<CAdminOrderPageContainer />} />
                 <Route path="/users/search" element={<AdminUsersSearchPageContainer />} />
                 <Route path="/users/" element={<CAdminUsersPageContainer />} />
                 <Route path="/user/" element={<AdminUserPageContainer />} />

+ 5 - 5
src/reducers/feedReducer.js

@@ -33,7 +33,7 @@ const actionFeedGoods =
 const actionFeedCategoryGoods =
     ({ skip = 0, orderBy = "_id", category }) =>
     async (dispatch, getState) => {
-        await dispatch(actionCategoryGoods({ skip, limit: 15, promiseName: "feedCategoryGoods", orderBy, category }));
+        await dispatch(actionCategoryGoods({ skip, limit: 1, promiseName: "feedCategoryGoods", orderBy, category }));
     };
 
 const actionFeedGoodsFind =
@@ -51,19 +51,19 @@ const actionFeedCatsFind =
 const actionFeedCats =
     ({ skip = 0, orderBy = "_id" }) =>
     async (dispatch, getState) => {
-        await dispatch(actionCatAll({ promiseName: "feedCatAll", skip, limit: 2, orderBy }));
+        await dispatch(actionCatAll({ promiseName: "feedCatAll", skip, limit: 1, orderBy }));
     };
 
 const actionFeedOrders =
     ({ skip = 0, orderBy = "_id", status = 0 }) =>
     async (dispatch, getState) => {
-        await dispatch(actionOrdersAll({ skip, limit: 15, promiseName: "feedOrdersAll", orderBy, status }));
+        await dispatch(actionOrdersAll({ skip, limit: 1, promiseName: "feedOrdersAll", orderBy, status }));
     };
 
 const actionFeedOrdersFind =
-    ({ skip = 0, text = "", orderBy = "_id" }) =>
+    ({ skip = 0, text = "", orderBy = "_id", status = "0" }) =>
     async (dispatch, getState) => {
-        await dispatch(actionOrdersFind({ skip, limit: 5, promiseName: "feedOrdersFind", text, orderBy }));
+        await dispatch(actionOrdersFind({ skip, limit: 1, promiseName: "feedOrdersFind", text, orderBy, status }));
     };
 
 const actionFeedUsersFind =