@@ -4,8 +4,16 @@ import minus from '../Assets/minus.png';
44import { useTranslation } from 'react-i18next' ;
55import { Accordion , Button , Form } from 'react-bootstrap' ;
66import ConsentHeader from './ConsentHeader' ;
7+ import { postDisabledBlockDomains } from '../utils/consent' ;
78
8- const CustomizeCategory = ( { languageSwitcher, setShowCustomize, disabledBlockDomains } : any ) => {
9+ const CustomizeCategory = ( {
10+ languageSwitcher,
11+ setShowCustomize,
12+ disabledBlockDomains,
13+ handleRevokeBtn,
14+ showRevoke,
15+ endpoint,
16+ } : any ) => {
917 const { t } = useTranslation ( ) ;
1018
1119 const blockJSDomains = window . blockJSDomains ?? [ ] ;
@@ -21,7 +29,14 @@ const CustomizeCategory = ({ languageSwitcher, setShowCustomize, disabledBlockDo
2129 return acc ;
2230 } , { } ) ;
2331
32+ const isConsented =
33+ showRevoke ||
34+ ( sessionStorage . getItem ( 'aesirx-analytics-revoke' ) &&
35+ sessionStorage . getItem ( 'aesirx-analytics-revoke' ) !== '0' ) ;
36+
2437 const [ disabledItems , setDisabledItems ] = useState ( [ ] ) ;
38+ const [ isDoNotSell , setIsDoNotSell ] = useState ( false ) ;
39+ const [ isLoading , setIsLoading ] = useState ( false ) ;
2540
2641 const handleToggle = ( category : string ) => {
2742 setDisabledItems ( ( prev ) => {
@@ -107,9 +122,9 @@ const CustomizeCategory = ({ languageSwitcher, setShowCustomize, disabledBlockDo
107122 ( window as any ) ?. aesirx_analytics_translate ?. txt_custom_tracking_desc ??
108123 t ( 'txt_custom_tracking_desc' ) ;
109124 }
110- const allCategoryItems = blockJSDomains . filter ( ( item ) => item . category === key ) ;
111- const isCategoryChecked = ! allCategoryItems . every ( ( item ) =>
112- disabledItems . some ( ( disabled ) => disabled . domain === item . domain )
125+ const allCategoryItems = blockJSDomains ? .filter ( ( item ) => item . category === key ) ;
126+ const isCategoryChecked = ! allCategoryItems ? .every ( ( item ) =>
127+ disabledItems ? .some ( ( disabled ) => disabled . domain === item . domain )
113128 ) ;
114129 return (
115130 < Accordion . Item eventKey = { index ?. toString ( ) } key = { index } >
@@ -183,6 +198,42 @@ const CustomizeCategory = ({ languageSwitcher, setShowCustomize, disabledBlockDo
183198 </ Accordion . Item >
184199 ) ;
185200 } ) }
201+ { window [ 'aesirxOptOutMode' ] === 'true' &&
202+ window [ 'aesirxOptOutDoNotSell' ] === 'true' &&
203+ isConsented ? (
204+ < Accordion . Item className = "mt-3" eventKey = { 'donotsell' } >
205+ < div className = "d-flex align-items-center justify-content-between" >
206+ < Accordion . Header >
207+ < div className = "d-flex align-items-center" >
208+ < div className = "accordion-title" >
209+ < div className = "fw-medium text-black" >
210+ { ( window as any ) ?. aesirx_analytics_translate ?. txt_do_not_sell ??
211+ t ( 'txt_do_not_sell' ) }
212+ </ div >
213+ < p className = "mb-0 fs-14 d-none d-lg-block" >
214+ { ( window as any ) ?. aesirx_analytics_translate ?. txt_disables_third_party ??
215+ t ( 'txt_disables_third_party' ) }
216+ </ p >
217+ </ div >
218+ </ div >
219+ </ Accordion . Header >
220+ < Form . Check
221+ className = "ms-auto me-0 pe-3"
222+ type = "switch"
223+ value = { 'donotsell' }
224+ onChange = { ( e ) => {
225+ setIsDoNotSell ( e ?. target ?. checked ) ;
226+ } }
227+ />
228+ </ div >
229+ < p className = "mb-0 fs-14 subtitle-mobile d-lg-none" >
230+ { ( window as any ) ?. aesirx_analytics_translate ?. txt_disables_third_party ??
231+ t ( 'txt_disables_third_party' ) }
232+ </ p >
233+ </ Accordion . Item >
234+ ) : (
235+ < > </ >
236+ ) }
186237 </ Accordion >
187238 </ div >
188239 < div className = "rounded-bottom position-relative overflow-hidden text-white bg-white" >
@@ -200,12 +251,44 @@ const CustomizeCategory = ({ languageSwitcher, setShowCustomize, disabledBlockDo
200251 </ Button >
201252 < Button
202253 variant = "outline-success"
203- onClick = { ( ) => {
204- setShowCustomize ( false ) ;
254+ onClick = { async ( ) => {
205255 window [ 'disabledBlockJSDomains' ] = disabledItems ;
256+ if ( window [ 'aesirxOptOutMode' ] === 'true' && isConsented ) {
257+ setIsLoading ( true ) ;
258+ const levelRevoke =
259+ sessionStorage . getItem ( 'aesirx-analytics-revoke' ) &&
260+ parseInt ( sessionStorage . getItem ( 'aesirx-analytics-revoke' ) ) ;
261+
262+ if ( isDoNotSell ) {
263+ sessionStorage . setItem ( 'aesirx-analytics-rejected' , 'true' ) ;
264+ await handleRevokeBtn ( ) ;
265+ } else {
266+ await postDisabledBlockDomains ( endpoint ) ;
267+ }
268+ if ( levelRevoke <= 1 && window [ 'aesirx1stparty' ] ) {
269+ setTimeout ( ( ) => {
270+ window . location . reload ( ) ;
271+ } , 1000 ) ;
272+ } else {
273+ setShowCustomize ( false ) ;
274+ setIsLoading ( false ) ;
275+ }
276+ } else {
277+ setShowCustomize ( false ) ;
278+ }
206279 } }
207280 className = "d-flex align-items-center justify-content-center fs-14 px-5 me-3 mb-2 mb-lg-0 rounded-pill py-2 py-lg-3"
281+ disabled = { isLoading }
208282 >
283+ { isLoading ? (
284+ < span
285+ className = "spinner-border spinner-border-sm me-1"
286+ role = "status"
287+ aria-hidden = "true"
288+ > </ span >
289+ ) : (
290+ < > </ >
291+ ) }
209292 { ( window as any ) ?. aesirx_analytics_translate ?. txt_save ?? t ( 'txt_save' ) }
210293 </ Button >
211294 </ div >
0 commit comments