import * as React from 'react'; import { Service } from '@usercentrics/cmp-browser-sdk'; import { Icon } from '../../components/Icon'; import { useUsercentrics } from '../../contexts/UsercentricsContext'; import { DecisionsContext, selectDecision } from '../../contexts/DecisionsContext'; import CheckBox from '../CheckBox'; import { StoredInformation } from './StoredInformation'; import { ContentSection, SectionWithTitle } from './ContentSection'; import { getServiceData } from './getServiceData'; export const ContentService = ({ service }: { service: Service }): JSX.Element => { const { handlers, settingsLabels } = useUsercentrics(); const { decisions, updateDecision } = React.useContext(DecisionsContext); const [subServices, setSubservices] = React.useState([]); const [isSubServicesOpen, setIsSubservicesOpen] = React.useState(false); const toggleSubServicesVisibility = () => setIsSubservicesOpen(!isSubServicesOpen); React.useEffect(() => { const getSubservices = async () => { try { const subServices = await service.fetchSubServices(); setSubservices(subServices); } catch (error) { console.error(error); } }; if (service.subServicesLength > 0 && subServices.length === 0) { getSubservices(); } }, [service, service.subServicesLength, subServices.length]); const handleCheckBoxOnClick = () => { updateDecision(service.id, !decisions[service.id].status); handlers?.accept([ { serviceId: service.id, status: !decisions[service.id].status, }, ]); }; const serviceLabels = settingsLabels?.service; const sections = getServiceData(service, serviceLabels); return (
{service.name}

{service.description}

{sections.length > 0 && (
{sections.map((section, index) => ( ))}
)} {subServices.length > 0 && (

Subservices

{service.description}

{isSubServicesOpen && subServices.map((service) => getServiceData(service, serviceLabels).map((section, index) => ( )) )}
)} {service.deviceStorage?.disclosures && } {service.consent.history.map((choice, index: number) => (
{choice.status ? settingsLabels?.general.consentGiven : settingsLabels?.general.consentNotGiven}
{new Date(choice.timestamp).toLocaleString()}
))}
); };