Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

version updated to v2.4.9 with some bug fixes #88

Merged
merged 18 commits into from
Feb 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions bitwpfi.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Plugin Name: Bit Integrations
* Plugin URI: https://bitapps.pro/bit-integrations
* Description: Bit Integrations is a platform that integrates with over 250+ 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
* Version: 2.4.8
* Version: 2.4.9
* Author: Automation & Integration Plugin - Bit Apps
* Author URI: https://bitapps.pro
* Text Domain: bit-integrations
Expand All @@ -24,7 +24,7 @@
$btcbi_db_version = '1.1';

// Define most essential constants.
define('BTCBI_VERSION', '2.4.8');
define('BTCBI_VERSION', '2.4.9');
define('BTCBI_PLUGIN_MAIN_FILE', __FILE__);

require_once plugin_dir_path(__FILE__) . 'includes/loader.php';
Expand Down
6 changes: 6 additions & 0 deletions frontend-dev/src/Utils/StaticData/webhookIntegrations.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ export const customFormIntegrations = [
'ConvertPro',
'FunnelKitAutomations',
'CalculatedFieldsForm',
'AmeliaBooking',
'FluentSMTP',
'BbPress',
'Newsletter',
'WishlistMember',
'GravityKit',
]

export const actionHookIntegrations = ['ActionHook']
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,15 @@ import MultiSelect from 'react-multiple-select-dropdown-lite'
import Loader from '../../Loaders/Loader'
import { useRecoilValue } from 'recoil'
import { $btcbi } from '../../../GlobalStates'
import { getProFeatureSubtitle, getProFeatureTitle } from '../IntegrationHelpers/ActionUtilitiesHelper'

export default function FluentCrmActions({ fluentCrmConf, setFluentCrmConf, loading, setLoading, setSnackbar }) {
export default function FluentCrmActions({
fluentCrmConf,
setFluentCrmConf,
loading,
setLoading,
setSnackbar
}) {
const [actionMdl, setActionMdl] = useState({ show: false })
const btcbi = useRecoilValue($btcbi)
const { isPro } = btcbi
Expand Down Expand Up @@ -50,38 +57,32 @@ export default function FluentCrmActions({ fluentCrmConf, setFluentCrmConf, load
<div className="pos-rel d-flx w-8">
<TableCheckBox
checked={fluentCrmConf.actions?.skip_if_exists || false}
onChange={(e) => actionHandler(e, 'exists')}
onChange={e => actionHandler(e, 'exists')}
className="wdt-200 mt-4 mr-2"
value="skip_if_exists"
title={__('Skip exist Contact', 'bit-integrations')}
subTitle={__('Skip if contact already exist in FluentCRM', 'bit-integrations')}
/>
<TableCheckBox
checked={fluentCrmConf.actions?.double_opt_in || false}
onChange={(e) => actionHandler(e, 'doubleOpIn')}
onChange={e => actionHandler(e, 'doubleOpIn')}
className="wdt-200 mt-4 mr-2"
value="double_opt_in"
title={__('Double Opt-in', 'bit-integrations')}
subTitle={__('Enable Double Option for new contacts', 'bit-integrations')}
/>
<TableCheckBox
checked={fluentCrmConf.actions?.company_id || false}
onChange={(e) => actionHandler(e, 'company_id')}
onChange={e => actionHandler(e, 'company_id')}
className="wdt-200 mt-4 mr-2"
value="company_id"
isInfo={!isPro}
title={`${__('Assign Company', 'bit-integrations')} ${!isPro ? '(Pro)' : ''}`}
subTitle={isPro
? __('Assign Company for contact', 'bit-integrations')
: sprintf(
__(
'The Bit Integration Pro v(%s) plugin needs to be installed and activated to enable the %s feature',
'bit-integrations'
),
'2.3.8',
__('Assign Company', 'bit-integrations')
)
}
title={getProFeatureTitle(__('Assign Company', 'bit-integrations'))}
subTitle={getProFeatureSubtitle(
__('Assign Company', 'bit-integrations'),
__('Assign Company for contact', 'bit-integrations'),
'2.3.8'
)}
/>

{isPro && (
Expand Down Expand Up @@ -109,10 +110,13 @@ export default function FluentCrmActions({ fluentCrmConf, setFluentCrmConf, load
) : (
<div className="flx flx-center mt-2">
<MultiSelect
options={fluentCrmConf?.companies && fluentCrmConf.companies.map(item => ({ label: item.label, value: item.id.toString() }))}
options={
fluentCrmConf?.companies &&
fluentCrmConf.companies.map(item => ({ label: item.label, value: item.id.toString() }))
}
className="msl-wrp-options"
defaultValue={fluentCrmConf.actions?.company_id?.toString() || ''}
onChange={(val) => actionHandler(val, 'company')}
onChange={val => actionHandler(val, 'company')}
singleSelect
selectOnClose
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import Loader from '../../Loaders/Loader'
import { getAllBusinessInboxes, supportStaff } from './FluentSupportCommonFunc'
import { useRecoilValue } from 'recoil'
import { $btcbi } from '../../../GlobalStates'
import { getProFeatureSubtitle, getProFeatureTitle } from '../IntegrationHelpers/ActionUtilitiesHelper'

export default function FluentSupportActions({
fluentSupportConf,
Expand Down Expand Up @@ -48,13 +49,7 @@ export default function FluentSupportActions({
}
const openBusinessInboxModal = () => {
if (!fluentSupportConf.default?.businessInboxes) {
getAllBusinessInboxes(
formID,
fluentSupportConf,
setFluentSupportConf,
setIsLoading,
setSnackbar
)
getAllBusinessInboxes(formID, fluentSupportConf, setFluentSupportConf, setIsLoading, setSnackbar)
}
setActionMdl({ show: 'business_inboxes' })
}
Expand All @@ -73,10 +68,7 @@ export default function FluentSupportActions({
className="wdt-200 mt-4 mr-2"
value="support_staff"
title={__('Support Staff', 'bit-integrations')}
subTitle={__(
'Add a Support Staff to ticket pushed to fluentSupport.',
'bit-integrations'
)}
subTitle={__('Add a Support Staff to ticket pushed to fluentSupport.', 'bit-integrations')}
/>
{!fluentSupportConf.actions.support_staff && (
<small style={{ marginLeft: 30, marginTop: 10, color: 'red' }}>
Expand Down Expand Up @@ -106,22 +98,15 @@ export default function FluentSupportActions({
className="wdt-200 mt-4 mr-2"
value="Attachment"
isInfo={!isPro}
title={__(`Attachment ${!isPro ? '(Pro)' : ''}`, 'bit-integrations')}
subTitle={
isPro
? __(
'Supported Types: Photos, CSV, PDF/Docs, Zip, JSON and max file size: 2.0MB',
'bit-integrations'
)
: sprintf(
__(
'The Bit Integration Pro v(%s) plugin needs to be installed and activated to enable the %s feature',
'bit-integrations'
),
'2.1.7',
__('Upsert Record', 'bit-integrations')
)
}
title={getProFeatureTitle(__('Attachment', 'bit-integrations'))}
subTitle={getProFeatureSubtitle(
__('Upsert Record', 'bit-integrations'),
__(
'Supported Types: Photos, CSV, PDF/Docs, Zip, JSON and max file size: 2.0MB',
'bit-integrations'
),
'2.1.7'
)}
/>
</div>

Expand Down Expand Up @@ -150,24 +135,18 @@ export default function FluentSupportActions({
<select
value={fluentSupportConf.actions.support_staff}
className="btcd-paper-inp"
onChange={(e) => actionHandler(e.target.value, 'support_staff')}>
onChange={e => actionHandler(e.target.value, 'support_staff')}>
<option value="">{__('Select Support Staff', 'bit-integrations')}</option>
{fluentSupportConf?.default?.agents &&
fluentSupportConf.default.agents.map((staff) => (
fluentSupportConf.default.agents.map(staff => (
<option
key={staff.id}
value={`${staff.id}`}>{`${staff.first_name || staff.last_name ? staff.first_name + ' ' + staff.last_name : staff.email}`}</option>
))}
</select>
<button
onClick={() =>
supportStaff(
formID,
fluentSupportConf,
setFluentSupportConf,
setIsLoading,
setSnackbar
)
supportStaff(formID, fluentSupportConf, setFluentSupportConf, setIsLoading, setSnackbar)
}
className="icn-btn sh-sm ml-2 mr-2 tooltip"
style={{ '--tooltip-txt': '"Refresh Support Staff"' }}
Expand All @@ -194,7 +173,7 @@ export default function FluentSupportActions({
singleSelect
defaultValue={fluentSupportConf.actions.client_priority}
className="mt-2 w-9"
onChange={(val) => actionHandler(val, 'client_priority')}
onChange={val => actionHandler(val, 'client_priority')}
options={options}
/>
</ConfirmModal>
Expand Down Expand Up @@ -224,10 +203,10 @@ export default function FluentSupportActions({
<select
value={fluentSupportConf.actions.business_inbox}
className="btcd-paper-inp"
onChange={(e) => actionHandler(e.target.value, 'business_inbox')}>
onChange={e => actionHandler(e.target.value, 'business_inbox')}>
<option value="">{__('Select Business Inbox', 'bit-integrations')}</option>
{fluentSupportConf?.default?.businessInboxes &&
fluentSupportConf.default.businessInboxes.map((inbox) => (
fluentSupportConf.default.businessInboxes.map(inbox => (
<option key={inbox.id} value={`${inbox.id}`}>
{inbox.name}
</option>
Expand Down Expand Up @@ -268,10 +247,10 @@ export default function FluentSupportActions({
<MultiSelect
defaultValue={fluentSupportConf.actions.attachment}
className="mt-2 w-9"
onChange={(val) => actionHandler(val, 'attachment')}
onChange={val => actionHandler(val, 'attachment')}
options={formFields
.filter((itm) => itm.type === 'file')
.map((itm) => ({ label: itm.label, value: itm.name }))}
.filter(itm => itm.type === 'file')
.map(itm => ({ label: itm.label, value: itm.name }))}
singleSelect
closeOnSelect
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { __, sprintf } from '../../../Utils/i18nwrap'
import TableCheckBox from '../../Utilities/TableCheckBox'
import { useRecoilValue } from 'recoil'
import { $btcbi } from '../../../GlobalStates'
import { getProFeatureSubtitle, getProFeatureTitle } from '../IntegrationHelpers/ActionUtilitiesHelper'

export default function FreshSalesActions({ freshSalesConf, setFreshSalesConf }) {
const btcbi = useRecoilValue($btcbi)
Expand All @@ -29,27 +30,20 @@ export default function FreshSalesActions({ freshSalesConf, setFreshSalesConf })
<div className="pos-rel d-flx w-8">
{'Product' !== freshSalesConf.moduleData.module && (
<TableCheckBox
onChange={(e) => actionHandler(e, 'upsert')}
onChange={e => actionHandler(e, 'upsert')}
checked={freshSalesConf?.actions?.upsert || false}
className="wdt-200 mt-4 mr-2"
value="Upsert_Record"
isInfo={!isPro}
title={`${__('Upsert Record', 'bit-integrations')} ${isPro ? '' : `(${__('Pro', 'bit-integrations')})`}`}
subTitle={
isPro
? __(
'A record gets updated based on the unique identifier value, else a new record will be created',
'bit-integrations'
)
: sprintf(
__(
'The Bit Integration Pro v(%s) plugin needs to be installed and activated to enable the %s feature',
'bit-integrations'
),
'2.1.1',
__('Upsert Record', 'bit-integrations')
)
}
title={getProFeatureTitle(__('Upsert Record', 'bit-integrations'))}
subTitle={getProFeatureSubtitle(
__('Upsert Record', 'bit-integrations'),
__(
'A record gets updated based on the unique identifier value, else a new record will be created',
'bit-integrations'
),
'2.1.1'
)}
/>
)}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import 'react-multiple-select-dropdown-lite/dist/index.css'
import { getAllTags } from './GetResponseCommonFunc'
import { useRecoilValue } from 'recoil'
import { $btcbi } from '../../../GlobalStates'
import { getProFeatureSubtitle, getProFeatureTitle } from '../IntegrationHelpers/ActionUtilitiesHelper'

export default function GetResponseActions({
getResponseConf,
Expand Down Expand Up @@ -69,15 +70,15 @@ export default function GetResponseActions({
<div className="pos-rel d-flx w-8">
<TableCheckBox
checked={getResponseConf?.selectedTags.length || false}
onChange={(e) => actionHandler(e, 'tag')}
onChange={e => actionHandler(e, 'tag')}
className="wdt-200 mt-4 mr-2"
value="tag"
title={__('Add Tags', 'bit-integrations')}
subTitle={__('Add tags contact', 'bit-integrations')}
/>
<TableCheckBox
checked={getResponseConf.actions?.update || false}
onChange={(e) => actionHandler(e, 'update')}
onChange={e => actionHandler(e, 'update')}
className="wdt-200 mt-4 mr-2"
value="update_contact"
title={__('Update Contact', 'bit-integrations')}
Expand All @@ -86,23 +87,16 @@ export default function GetResponseActions({
{
<TableCheckBox
checked={getResponseConf?.dayOfCycle || false}
onChange={(e) => actionHandler(e, 'dayOfCycle')}
onChange={e => actionHandler(e, 'dayOfCycle')}
className="wdt-200 mt-4 mr-2"
value="dayOfCycle"
title={`${__('Autoresponder day', 'bit-integrations')} ${isPro ? '' : `(${__('Pro', 'bit-integrations')})`}`}
subTitle={
isPro
? __('The day on which the contact is in the Autoresponder cycle', 'bit-integrations')
: sprintf(
__(
'The Bit Integration Pro v(%s) plugin needs to be installed and activated to enable the %s feature',
'bit-integrations'
),
'2.1.9',
__('Autoresponder day', 'bit-integrations')
)
}
isInfo={!isPro}
title={getProFeatureTitle(__('Autoresponder day', 'bit-integrations'))}
subTitle={getProFeatureSubtitle(
__('Autoresponder day', 'bit-integrations'),
__('The day on which the contact is in the Autoresponder cycle', 'bit-integrations'),
'2.1.9'
)}
/>
}

Expand Down Expand Up @@ -130,10 +124,10 @@ export default function GetResponseActions({
) : (
<div className="flx flx-between mt-2">
<MultiSelect
options={getResponseConf?.tags?.map((tag) => ({ label: tag.name, value: tag.tagId }))}
options={getResponseConf?.tags?.map(tag => ({ label: tag.name, value: tag.tagId }))}
className="msl-wrp-options"
defaultValue={getResponseConf?.selectedTags}
onChange={(val) => setChanges(val, 'selectedTags')}
onChange={val => setChanges(val, 'selectedTags')}
/>
<button
onClick={() => getAllTags(getResponseConf, setGetResponseConf, setLoading)}
Expand Down Expand Up @@ -162,7 +156,7 @@ export default function GetResponseActions({
</div>
<input
className="btcd-paper-inp mt-1"
onChange={(e) => setChanges(e.target.value, 'dayOfCycle')}
onChange={e => setChanges(e.target.value, 'dayOfCycle')}
type="number"
name="dayOfCycle"
value={getResponseConf.dayOfCycle}
Expand Down
Loading