Skip to content

Commit 1d4a32a

Browse files
authored
Merge pull request #20 from Bit-Apps-Pro/niloy-dev
Version updated to 2.1.1
2 parents cdc6bda + ac2db8a commit 1d4a32a

File tree

17 files changed

+469
-405
lines changed

17 files changed

+469
-405
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,8 @@
7171
},
7272
"[php]": {
7373
"editor.defaultFormatter": "junstyle.php-cs-fixer"
74+
},
75+
"[javascriptreact]": {
76+
"editor.defaultFormatter": "esbenp.prettier-vscode"
7477
}
7578
}

bitwpfi.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
* Plugin Name: Bit Integrations
55
* Plugin URI: https://bitapps.pro/bit-integrations
66
* Description: Bit Integrations is a platform that integrates with over 200+ different platforms to help with various tasks on your WordPress site, like WooCommerce, Form builder, Page builder, LMS, Sales funnels, Bookings, CRM, Webhooks, Email marketing, Social media and Spreadsheets, etc
7-
* Version: 2.1.0
7+
* Version: 2.1.1
88
* Author: Automation & Integration Plugin - Bit Apps
99
* Author URI: https://bitapps.pro
1010
* Text Domain: bit-integrations
1111
* Requires PHP: 7.0
1212
* Requires at least: 5.1
13-
* Tested up to: 6.5.4
13+
* Tested up to: 6.5.5
1414
* Domain Path: /languages
1515
* License: GPLv2 or later
1616
*/
@@ -23,7 +23,7 @@
2323
$btcbi_db_version = '1.0';
2424

2525
// Define most essential constants.
26-
define('BTCBI_VERSION', '2.1.0');
26+
define('BTCBI_VERSION', '2.1.1');
2727
define('BTCBI_PLUGIN_MAIN_FILE', __FILE__);
2828

2929
require_once plugin_dir_path(__FILE__) . 'includes/loader.php';
Lines changed: 154 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,101 @@
11
/* eslint-disable react/jsx-no-useless-fragment */
22
/* eslint-disable no-undef */
3-
import { useEffect, useState } from 'react'
4-
import { useRecoilState, useRecoilValue } from 'recoil'
5-
import { $btcbi, $flowStep, $newFlow } from '../../../GlobalStates'
6-
import useFetch from '../../../hooks/useFetch'
7-
import CloseIcn from '../../../Icons/CloseIcn'
8-
import { deepCopy, sortFreeProd, sortObj } from '../../../Utils/Helpers'
9-
import { __ } from '../../../Utils/i18nwrap'
10-
import Loader from '../../Loaders/Loader'
11-
import CustomTrigger from '../../Triggers/CustomTrigger'
12-
import FormPlugin from '../../Triggers/FormPlugin'
13-
import Webhook from '../../Triggers/Webhook'
14-
import ActionHook from '../../Triggers/ActionHook'
15-
import GetLogo from '../../../Utils/GetLogo'
16-
import EssentialBlocksHelper from '../../Triggers/TriggerHelpers/EssentialBlocksHelper'
17-
import SpectraHelper from '../../Triggers/TriggerHelpers/SpectraHelper'
18-
import CustomFormSubmission from '../../Triggers/CustomFormSubmission'
19-
import { allTriggersName } from '../../../Utils/AllTriggersName'
20-
import CoblocksHelper from '../../Triggers/TriggerHelpers/CoblocksHelper'
3+
import { useEffect, useState } from "react";
4+
import { useRecoilState, useRecoilValue } from "recoil";
5+
import { $btcbi, $flowStep, $newFlow } from "../../../GlobalStates";
6+
import useFetch from "../../../hooks/useFetch";
7+
import CloseIcn from "../../../Icons/CloseIcn";
8+
import { deepCopy, sortFreeProd, sortObj } from "../../../Utils/Helpers";
9+
import { __ } from "../../../Utils/i18nwrap";
10+
import Loader from "../../Loaders/Loader";
11+
import CustomTrigger from "../../Triggers/CustomTrigger";
12+
import FormPlugin from "../../Triggers/FormPlugin";
13+
import Webhook from "../../Triggers/Webhook";
14+
import ActionHook from "../../Triggers/ActionHook";
15+
import GetLogo from "../../../Utils/GetLogo";
16+
import EssentialBlocksHelper from "../../Triggers/TriggerHelpers/EssentialBlocksHelper";
17+
import SpectraHelper from "../../Triggers/TriggerHelpers/SpectraHelper";
18+
import CustomFormSubmission from "../../Triggers/CustomFormSubmission";
19+
import { allTriggersName } from "../../../Utils/AllTriggersName";
20+
import CoblocksHelper from "../../Triggers/TriggerHelpers/CoblocksHelper";
2121

2222
export default function SelectTrigger() {
2323
// const data = allTriggersName
24-
const { isPro } = useRecoilValue($btcbi)
24+
const { isPro } = useRecoilValue($btcbi);
2525
const loaderStyle = {
26-
display: 'flex',
27-
height: '82vh',
28-
justifyContent: 'center',
29-
alignItems: 'center',
30-
}
31-
const { data, isLoading } = useFetch({ payload: {}, action: 'trigger/list', method: 'GET' })
32-
const [allTriggers, setAllTriggers] = useState(data || {})
33-
const [searchValue, setSearchValue] = useState('')
34-
const flowStep = useRecoilValue($flowStep)
35-
const [newFlow, setNewFlow] = useRecoilState($newFlow)
26+
display: "flex",
27+
height: "82vh",
28+
justifyContent: "center",
29+
alignItems: "center",
30+
};
31+
const { data, isLoading } = useFetch({
32+
payload: {},
33+
action: "trigger/list",
34+
method: "GET",
35+
});
36+
const [allTriggers, setAllTriggers] = useState(data || {});
37+
const [searchValue, setSearchValue] = useState("");
38+
const flowStep = useRecoilValue($flowStep);
39+
const [newFlow, setNewFlow] = useRecoilState($newFlow);
3640

3741
const sortFeaturedProducts = (dataObj = {}) => {
3842
if (dataObj) {
39-
const newData = deepCopy(dataObj)
40-
const ifAnyFeaturedProdFound = featuredProducts.some(pr => pr in newData)
41-
if (!ifAnyFeaturedProdFound) return sortObj(newData)
43+
const newData = deepCopy(dataObj);
44+
const ifAnyFeaturedProdFound = featuredProducts.some(
45+
(pr) => pr in newData
46+
);
47+
if (!ifAnyFeaturedProdFound) return sortObj(newData);
4248
const featuredProductData = featuredProducts.reduce((accr, curr) => {
43-
const tempAccr = { ...accr }
49+
const tempAccr = { ...accr };
4450
if (newData[curr]) {
45-
tempAccr[curr] = newData[curr]
46-
delete newData[curr]
51+
tempAccr[curr] = newData[curr];
52+
delete newData[curr];
4753
}
48-
return tempAccr
49-
}, {})
50-
const sortedTriggers = sortObj(newData)
51-
const finalSortedTriggers = sortFreeProd(sortedTriggers)
52-
const finalData = { ...featuredProductData, ...finalSortedTriggers }
53-
return finalData
54+
return tempAccr;
55+
}, {});
56+
const sortedTriggers = sortObj(newData);
57+
const finalSortedTriggers = sortFreeProd(sortedTriggers);
58+
const finalData = { ...featuredProductData, ...finalSortedTriggers };
59+
return finalData;
5460
}
5561

56-
return dataObj
57-
}
62+
return dataObj;
63+
};
5864
// console.log('data', data)
5965
useEffect(() => {
6066
if (data?.success === true) {
61-
setAllTriggers({ data: sortFeaturedProducts(data?.data) })
67+
setAllTriggers({ data: sortFeaturedProducts(data?.data) });
6268
}
63-
}, [data])
64-
65-
const featuredProducts = ['BitForm']
69+
}, [data]);
6670

71+
const featuredProducts = ["BitForm"];
6772

6873
const searchInteg = (e) => {
69-
const { value } = e.target
70-
setSearchValue(value)
71-
const filtered = Object.entries(data.data).filter((integ) => integ[1].name.toLowerCase().includes(value.toLowerCase())).reduce((prev, [key, values]) => ({ ...prev, [key]: values }), {})
74+
const { value } = e.target;
75+
setSearchValue(value);
76+
const filtered = Object.entries(data.data)
77+
.filter((integ) =>
78+
integ[1].name.toLowerCase().includes(value.toLowerCase())
79+
)
80+
.reduce((prev, [key, values]) => ({ ...prev, [key]: values }), {});
7281
// const organizeData = filtered?.reduce((prev, [key, values]) => ({ ...prev, [key]: values }), {})
73-
setAllTriggers({ success: true, data: sortFeaturedProducts(filtered) })
74-
}
82+
setAllTriggers({ success: true, data: sortFeaturedProducts(filtered) });
83+
};
7584

7685
const setTrigger = (trigger) => {
77-
const tempConf = { ...newFlow }
78-
tempConf.triggered_entity = trigger
79-
tempConf.triggerDetail = allTriggers.data[trigger]
80-
setNewFlow(tempConf)
81-
}
86+
const tempConf = { ...newFlow };
87+
tempConf.triggered_entity = trigger;
88+
tempConf.triggerDetail = allTriggers.data[trigger];
89+
setNewFlow(tempConf);
90+
};
8291

8392
const removeTrigger = () => {
84-
const tempConf = { ...newFlow }
85-
delete tempConf.triggered_entity
86-
setNewFlow(tempConf)
87-
}
93+
const tempConf = { ...newFlow };
94+
delete tempConf.triggered_entity;
95+
setNewFlow(tempConf);
96+
};
8897
if (isLoading) {
89-
return (
90-
<Loader style={loaderStyle} />
91-
)
98+
return <Loader style={loaderStyle} />;
9299
}
93100
// console.log('data', data)
94101

@@ -97,50 +104,96 @@ export default function SelectTrigger() {
97104
<div>
98105
<h1 className="txt-center mt-5">{data?.data}</h1>
99106
</div>
100-
)
107+
);
101108
}
102109

103110
return (
104111
<>
105-
{newFlow.triggered_entity
106-
? (
107-
<>
108-
<div role="button" className="btcd-inte-card flx flx-center flx-wrp mr-4 mt-3" tabIndex="0">
109-
<GetLogo name={newFlow.triggered_entity} extension="webp" />
110-
<div className="txt-center">
111-
{allTriggers.data[newFlow.triggered_entity]?.name}
112-
</div>
113-
<button onClick={removeTrigger} className="icn-btn btcd-mdl-close" aria-label="modal-close" type="button"><CloseIcn size={16} stroke={3} /></button>
114-
</div>
115-
<div className="flx">
116-
{newFlow.triggerDetail?.type === 'form' && flowStep === 1 && <FormPlugin />}
117-
{newFlow.triggerDetail?.type === 'webhook' && flowStep === 1 && <Webhook />}
118-
{newFlow.triggerDetail?.type === 'custom_trigger' && flowStep === 1 && <CustomTrigger />}
119-
{newFlow.triggerDetail?.type === 'action_hook' && flowStep === 1 && <ActionHook />}
120-
{newFlow.triggerDetail?.type === 'spectra' && flowStep === 1 && <SpectraHelper />}
121-
{newFlow.triggerDetail?.type === 'essentialBlocks' && flowStep === 1 && <EssentialBlocksHelper />}
122-
{newFlow.triggerDetail?.type === 'coblocks' && flowStep === 1 && <CoblocksHelper />}
123-
{newFlow.triggerDetail?.type === 'custom_form_submission' && flowStep === 1 && <CustomFormSubmission />}
112+
{newFlow.triggered_entity ? (
113+
<>
114+
<div
115+
role="button"
116+
className="btcd-inte-card flx flx-center flx-wrp mt-3"
117+
tabIndex="0"
118+
>
119+
<GetLogo name={newFlow.triggered_entity} extension="webp" />
120+
<div className="txt-center">
121+
{allTriggers.data[newFlow.triggered_entity]?.name}
124122
</div>
125-
</>
126-
) : (
127-
<>
128-
<div className=" btcd-inte-wrp txt-center">
129-
<h2 className="mt-0">Please select a Trigger</h2>
130-
<input type="search" className="btcd-paper-inp w-5 mb-2" onChange={searchInteg} value={searchValue} placeholder="Search Trigger..." autoFocus />
131-
<div className="flx flx-center flx-wrp pb-3">
132-
{allTriggers?.data && Object.keys(allTriggers?.data).map((inte, i) => (
123+
<button
124+
onClick={removeTrigger}
125+
className="icn-btn btcd-mdl-close"
126+
aria-label="modal-close"
127+
type="button"
128+
>
129+
<CloseIcn size={16} stroke={3} />
130+
</button>
131+
</div>
132+
<div className="flx">
133+
{newFlow.triggerDetail?.type === "form" && flowStep === 1 && (
134+
<FormPlugin />
135+
)}
136+
{newFlow.triggerDetail?.type === "webhook" && flowStep === 1 && (
137+
<Webhook />
138+
)}
139+
{newFlow.triggerDetail?.type === "custom_trigger" &&
140+
flowStep === 1 && <CustomTrigger />}
141+
{newFlow.triggerDetail?.type === "action_hook" &&
142+
flowStep === 1 && <ActionHook />}
143+
{newFlow.triggerDetail?.type === "spectra" && flowStep === 1 && (
144+
<SpectraHelper />
145+
)}
146+
{newFlow.triggerDetail?.type === "essentialBlocks" &&
147+
flowStep === 1 && <EssentialBlocksHelper />}
148+
{newFlow.triggerDetail?.type === "coblocks" && flowStep === 1 && (
149+
<CoblocksHelper />
150+
)}
151+
{newFlow.triggerDetail?.type === "custom_form_submission" &&
152+
flowStep === 1 && <CustomFormSubmission />}
153+
</div>
154+
</>
155+
) : (
156+
<>
157+
<div className=" btcd-inte-wrp txt-center">
158+
<h2 className="mt-0">Please select a Trigger</h2>
159+
<input
160+
type="search"
161+
className="btcd-paper-inp w-5 mb-2"
162+
onChange={searchInteg}
163+
value={searchValue}
164+
placeholder="Search Trigger..."
165+
autoFocus
166+
/>
167+
<div className="flx flx-center flx-wrp pb-3">
168+
{allTriggers?.data &&
169+
Object.keys(allTriggers?.data).map((inte, i) => (
133170
<div
134171
key={`inte-sm-${i + 2}`}
135-
onClick={() => !inte.disable && (isPro || !allTriggers?.data[inte]?.isPro) && setTrigger(inte)}
136-
onKeyUp={() => !inte.disable && (isPro || !allTriggers?.data[inte]?.isPro) && setNewInteg(inte.type)}
172+
onClick={() =>
173+
!inte.disable &&
174+
(isPro || !allTriggers?.data[inte]?.isPro) &&
175+
setTrigger(inte)
176+
}
177+
onKeyUp={() =>
178+
!inte.disable &&
179+
(isPro || !allTriggers?.data[inte]?.isPro) &&
180+
setNewInteg(inte.type)
181+
}
137182
role="button"
138183
tabIndex="0"
139-
className={`btcd-inte-card inte-sm mr-4 mt-3 ${inte.disable && (isPro || !allTriggers?.data[inte]?.isPro) && 'btcd-inte-dis'} ${(allTriggers?.data[inte]?.isPro && !isPro) && 'btcd-inte-pro'}`}
184+
className={`btcd-inte-card inte-sm mr-4 mt-3 ${inte.disable && (isPro || !allTriggers?.data[inte]?.isPro) && "btcd-inte-dis"} ${allTriggers?.data[inte]?.isPro && !isPro && "btcd-inte-pro"}`}
140185
>
141-
{(allTriggers?.data[inte]?.isPro && !isPro) && (
186+
{allTriggers?.data[inte]?.isPro && !isPro && (
142187
<div className="pro-filter">
143-
<span className="txt-pro"><a href="https://bitapps.pro/bit-integrations" target="_blank" rel="noreferrer">{__('Pro', 'bit-integrations')}</a></span>
188+
<span className="txt-pro">
189+
<a
190+
href="https://bitapps.pro/bit-integrations"
191+
target="_blank"
192+
rel="noreferrer"
193+
>
194+
{__("Pro", "bit-integrations")}
195+
</a>
196+
</span>
144197
</div>
145198
)}
146199
<GetLogo name={inte} extension="webp" />
@@ -149,10 +202,10 @@ export default function SelectTrigger() {
149202
</div>
150203
</div>
151204
))}
152-
</div>
153205
</div>
154-
</>
155-
)}
206+
</div>
207+
</>
208+
)}
156209
</>
157-
)
210+
);
158211
}

0 commit comments

Comments
 (0)