PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.9
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.9
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 1.3.49 All 181 releases
disco / backend / views / components / Main / pages / Rules / Tabs / CampaignSetup / CampaignSetup.jsx

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

103 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { __ } from '@wordpress/i18n';
2 import { useEffect } from 'react';
3 import { useDispatch, useSelector } from 'react-redux';
4 import { useNavigate, useSearchParams } from 'react-router';
5 import { toast } from 'react-toastify';
6 import FooterButtons from '../../../../components/FooterButtons';
7 import {
8 useAddCampaignMutation,
9 useUpdateCampaignMutation,
10 } from '../../../../features/campaigns/campaignsApi';
11 import { setTab } from '../../../../features/discount/discountSlice';
12 import {
13 cleanFilters,
14 validateEmptyField,
15 } from '../../../../utilities/utilities';
16 import CampaignName from './components/CampaignName/CampaignName';
17 import ConditionsCard from './components/ConditionsCard/ConditionsCard';
18 import DiscountCard from './components/DiscountCard/DiscountCard';
19 import DiscountIntention from './components/DiscountIntention/DiscountIntention';
20 import DiscountRules from './components/DiscountRules/DiscountRules';
21
22 const CampaignSetup = () => {
23 const dispatch = useDispatch();
24 const [addCampaign, { data, isSuccess, isError, isLoading: adding }] =
25 useAddCampaignMutation();
26 const [updateCampaign, { isLoading: updating }] =
27 useUpdateCampaignMutation();
28
29 const discount = useSelector((state) => state.discount);
30 const { discount_intent } = discount;
31 const navigate = useNavigate();
32 const [searchParams] = useSearchParams();
33 const handleNextPage = () => {
34 if (validateEmptyField(discount) === false) {
35 return;
36 }
37
38 if (searchParams.get('edit')) {
39 const dataForRequest = { ...discount };
40
41 delete dataForRequest.created_by;
42 delete dataForRequest.modified_by;
43
44 dataForRequest.conditions = cleanFilters(discount.conditions);
45
46 updateCampaign({
47 id: discount.id,
48 data: {
49 ...dataForRequest,
50 priority: String(dataForRequest.priority),
51 ui: [1, 0],
52 },
53 });
54
55 dispatch(setTab(1));
56 } else {
57 const dataForRequest = {
58 ...discount,
59 status: '0',
60 conditions: cleanFilters(discount.conditions),
61 };
62 addCampaign(dataForRequest);
63 }
64 };
65
66 useEffect(() => {
67 if (isSuccess) {
68 toast.success(__('New Campaign Added.', 'disco'));
69 navigate(`?edit=${data.id}`, {
70 state: { ...data, ui: [1, 0] },
71 });
72 }
73 if (isError) {
74 toast.success(__('Something Went Wrong.', 'disco'));
75 }
76 }, [data]);
77
78 useEffect(() => {
79 window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });
80 }, []);
81
82 return (
83 <div className="disco-max-h-[calc(100vh-122px)] disco-overflow-y-auto disco-overscroll-container disco-no-scrollbar">
84 <CampaignName />
85 <DiscountIntention />
86 {discount_intent && (
87 <>
88 <DiscountCard />
89 <DiscountRules />
90 <ConditionsCard />
91 </>
92 )}
93 <FooterButtons
94 cancel
95 handleContinue={handleNextPage}
96 disabled={!discount_intent}
97 loading={adding || updating}
98 />
99 </div>
100 );
101 };
102 export default CampaignSetup;
103