22import toast from 'react-hot-toast'
33import { __ } from '../../../Utils/i18nwrap'
44import bitsFetch from '../../../Utils/bitsFetch'
5+ import { create } from 'mutative'
56
6- export const handleInput = (
7- e ,
8- mailerLiteConf ,
9- setMailerLiteConf ,
10- setLoading ,
11- setSnackbar ,
12- isNew ,
13- error ,
14- setError
15- ) => {
16- const newConf = { ...mailerLiteConf }
17- const { name } = e . target
18- if ( e . target . value !== '' ) {
19- newConf [ name ] = e . target . value
20- } else {
21- delete newConf [ name ]
22- }
23- setMailerLiteConf ( { ...newConf } )
7+ export const handleInput = ( e , mailerLiteConf , setMailerLiteConf , loading , setLoading ) => {
8+ const { name, value } = e . target
9+
10+ setMailerLiteConf ( prev =>
11+ create ( prev , draftConf => {
12+ draftConf [ name ] = value
13+
14+ if ( name === 'action' && value !== '' ) {
15+ mailerliteRefreshFields ( draftConf , setMailerLiteConf , loading , setLoading )
16+ }
17+ } )
18+ )
2419}
2520
26- export const generateMappedField = ( mailerLiteConf ) => {
27- const requiredFlds = mailerLiteConf ?. mailerLiteFields . filter ( ( fld ) => fld . required === true )
21+ export const generateMappedField = mailerLiteConf => {
22+ const requiredFlds = mailerLiteConf ?. mailerLiteFields . filter ( fld => fld . required === true )
2823 return requiredFlds . length > 0
29- ? requiredFlds . map ( ( field ) => ( {
24+ ? requiredFlds . map ( field => ( {
3025 formField : '' ,
3126 mailerLiteFormField : field . key
3227 } ) )
3328 : [ { formField : '' , mailerLiteFormField : '' } ]
3429}
3530
36- export const checkMappedFields = ( mailerLiteConf ) => {
31+ export const checkMappedFields = mailerLiteConf => {
3732 const mappedFields = mailerLiteConf ?. field_map
3833 ? mailerLiteConf . field_map . filter (
39- ( mappedField ) =>
34+ mappedField =>
4035 ! mappedField . formField ||
4136 ! mappedField . mailerLiteFormField ||
4237 ( ! mappedField . formField === 'custom' && ! mappedField . customValue )
@@ -47,57 +42,89 @@ export const checkMappedFields = (mailerLiteConf) => {
4742 }
4843 return true
4944}
50- export const mailerliteRefreshFields = (
51- confTmp ,
52- setConf ,
53- setError ,
54- setisAuthorized ,
55- loading ,
56- setLoading ,
57- type
58- ) => {
45+
46+ export const authorization = ( confTmp , setIsAuthorized , loading , setLoading ) => {
5947 if ( ! confTmp . auth_token ) {
60- setError ( {
61- auth_token : ! confTmp . auth_token ? __ ( "API Key can't be empty" , 'bit-integrations' ) : ''
62- } )
48+ toast . error ( __ ( "API Key can't be empty" , 'bit-integrations' ) )
49+
6350 return
6451 }
65- setError ( { } )
66- if ( type === 'authorization' ) {
67- setLoading ( { ...loading , auth : true } )
68- } else {
69- setLoading ( { ...loading , field : true } )
70- }
52+
53+ setLoading ( { ...loading , auth : true } )
7154
7255 const requestParams = {
7356 auth_token : confTmp . auth_token ,
7457 version : confTmp . version
7558 }
7659
77- bitsFetch ( requestParams , 'mailerlite_refresh_fields' ) . then ( ( result ) => {
60+ bitsFetch ( requestParams , 'mailerlite_authorization' ) . then ( result => {
61+ setLoading ( { ...loading , auth : false } )
62+
7863 if ( result && result . success ) {
79- const newConf = { ...confTmp }
80- if ( result . data ) {
81- newConf . mailerLiteFields = result . data
82- }
83- setConf ( newConf )
84- setisAuthorized ( true )
85- if ( type === 'authorization' ) {
86- setLoading ( { ...loading , auth : false } )
87- toast . success ( __ ( 'Authorized Successfully' , 'bit-integrations' ) )
88- } else {
89- setLoading ( { ...loading , field : false } )
90- toast . success ( __ ( 'Fields refresh successfully' , 'bit-integrations' ) )
91- }
64+ setIsAuthorized ( true )
65+
66+ toast . success ( __ ( 'Authorized Successfully' , 'bit-integrations' ) )
67+
9268 return
9369 }
94- if ( type === 'authorization' ) {
95- setLoading ( { ...loading , auth : false } )
96- toast . error ( __ ( 'Authorized failed' , 'bit-integrations' ) )
97- } else {
98- setLoading ( { ...loading , field : false } )
99- toast . error ( __ ( 'Fields refresh failed' , 'bit-integrations' ) )
70+
71+ toast . error ( __ ( 'Authorized failed' , 'bit-integrations' ) )
72+ } )
73+ }
74+
75+ export const mailerliteRefreshFields = ( confTmp , setConf , loading , setLoading ) => {
76+ if ( ! confTmp . auth_token ) {
77+ toast . error ( __ ( "API Key can't be empty" , 'bit-integrations' ) )
78+
79+ return
80+ }
81+
82+ setLoading ( { ...loading , field : true } )
83+
84+ if ( confTmp ?. action !== 'add_subscriber' ) {
85+ setLoading ( { ...loading , field : false } )
86+
87+ setConf ( prev =>
88+ create ( prev , draftConf => {
89+ draftConf . mailerLiteFields = [
90+ {
91+ key : 'email' ,
92+ label : 'Email' ,
93+ required : true
94+ }
95+ ]
96+
97+ draftConf . field_map = generateMappedField ( draftConf )
98+ } )
99+ )
100+
101+ toast . success ( __ ( 'Fields refresh successfully' , 'bit-integrations' ) )
102+
103+ return
104+ }
105+
106+ const requestParams = {
107+ auth_token : confTmp . auth_token ,
108+ version : confTmp . version
109+ }
110+
111+ bitsFetch ( requestParams , 'mailerlite_refresh_fields' ) . then ( result => {
112+ setLoading ( { ...loading , field : false } )
113+
114+ if ( result && result . success ) {
115+ setConf ( prev =>
116+ create ( prev , draftConf => {
117+ draftConf . mailerLiteFields = result . data
118+ draftConf . field_map = generateMappedField ( draftConf )
119+ } )
120+ )
121+
122+ toast . success ( __ ( 'Fields refresh successfully' , 'bit-integrations' ) )
123+
124+ return
100125 }
126+
127+ toast . error ( __ ( 'Fields refresh failed' , 'bit-integrations' ) )
101128 } )
102129}
103130
@@ -109,7 +136,7 @@ export const getAllGroups = (confTmp, setConf, loding, setLoading) => {
109136 version : confTmp . version
110137 }
111138
112- bitsFetch ( requestParams , 'mailerlite_fetch_all_groups' ) . then ( ( result ) => {
139+ bitsFetch ( requestParams , 'mailerlite_fetch_all_groups' ) . then ( result => {
113140 if ( result && result . success ) {
114141 const newConf = { ...confTmp }
115142 if ( result . data ) {
0 commit comments