PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.10
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.10
1.4.19 1.4.18 1.4.17 1.4.16 1.4.15 1.4.14 1.4.13 1.4.12 1.4.11 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.54 1.3.53 1.3.52 1.3.51 1.3.50 All 182 releases
disco / backend / views / components / Main / pages / Campaigns / Campaigns.jsx

Campaigns.jsx in Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO 1.4.10, at backend/views/components/Main/pages/Campaigns/Campaigns.jsx

92 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useEffect } from 'react';
2 import { useDispatch } from 'react-redux';
3 import ProCard from '../../components/ProCard';
4 import { setCampaignsInState } from '../../features/campaigns/campaignSlice';
5 import { useGetCampaignsQuery } from '../../features/campaigns/campaignsApi';
6 import {
7 useGetBOGOTypesQuery,
8 useGetDiscountBasedOnQuery,
9 useGetDiscountTypesQuery,
10 useGetFiltersQuery,
11 useGetWhatGetsDiscountQuery,
12 } from '../../features/discount/discountApi';
13 import { useGetSettingsQuery } from '../../features/settings/settingsApi';
14 import useIsPro from '../../hooks/useIsPro';
15 import ActionsBar from './components/ActionsBar';
16 import CampaignsList from './components/CampaignsList';
17 import EmptyCampaigns from './components/EmptyCampaigns';
18 import Header from './components/Header';
19
20 const Campaigns = () => {
21 const isPro = useIsPro();
22 /*
23 * for caching api data
24 * don't remove this hooks
25 */
26 const {} = useGetFiltersQuery();
27 const {} = useGetWhatGetsDiscountQuery();
28 const {} = useGetDiscountTypesQuery();
29 const {} = useGetSettingsQuery();
30 const {} = useGetDiscountBasedOnQuery();
31 const {} = useGetBOGOTypesQuery();
32
33 const dispatch = useDispatch();
34
35 const {
36 data: allCampaigns,
37 isLoading,
38 isError,
39 error,
40 } = useGetCampaignsQuery();
41
42 useEffect(() => {
43 if (isError) {
44 if (
45 error.status === 403 &&
46 error.data.code === 'rest_cookie_invalid_nonce'
47 ) {
48 window.location.replace(DISCO.site_url + '/wp-login.php');
49 }
50 }
51 }, [isError]);
52
53 useEffect(() => {
54 if (allCampaigns && allCampaigns.length > 0) {
55 dispatch(setCampaignsInState(allCampaigns));
56 }
57 }, [allCampaigns]);
58
59 const hasNoCampaigns =
60 !isLoading &&
61 !isError &&
62 (allCampaigns === undefined || allCampaigns.length === 0);
63
64 return (
65 <div className="disco-flex disco-mt-2.5 disco-w-full">
66 <div className="disco-bg-gray-50 disco-flex-grow disco-rounded-lg disco-mr-4 disco-ml-0.5">
67 <div className="disco-p-5">
68 <Header />
69 {hasNoCampaigns ? (
70 <EmptyCampaigns />
71 ) : (
72 <>
73 <ActionsBar allCampaigns={allCampaigns} />
74 <CampaignsList
75 isLoading={isLoading}
76 isError={isError}
77 error={error}
78 />
79 </>
80 )}
81 </div>
82 </div>
83 {!isPro && (
84 <div className="disco-min-w-[290px] disco-max-w-[290px] disco-mr-4">
85 <ProCard />
86 </div>
87 )}
88 </div>
89 );
90 };
91 export default Campaigns;
92