109 lines
4.1 KiB
TypeScript
109 lines
4.1 KiB
TypeScript
|
import { EmailTemplate3Config } from './email-template-3';
|
||
|
import hostSettingsDropdown from './host-setting-dropdown';
|
||
|
import ConsentProblems from './consent-problems';
|
||
|
import LegitimateInteresProblems from './legitimate-interest-problems';
|
||
|
import { hostNeedsQuestions } from './host-needs-questions';
|
||
|
|
||
|
export function setHostSetting<
|
||
|
P1 extends keyof EmailTemplate3Config['hosts_settings'],
|
||
|
P2 extends keyof EmailTemplate3Config['hosts_settings'][P1]
|
||
|
>(
|
||
|
setConfig: React.Dispatch<React.SetStateAction<EmailTemplate3Config>>,
|
||
|
[p1, p2]: [P1, P2],
|
||
|
value: EmailTemplate3Config['hosts_settings'][P1][P2]
|
||
|
) {
|
||
|
setConfig((v) => {
|
||
|
console.log(v, {
|
||
|
...v,
|
||
|
hosts_settings: {
|
||
|
...v.hosts_settings,
|
||
|
[p1]: {
|
||
|
...v.hosts_settings[p2],
|
||
|
[p2]: value,
|
||
|
},
|
||
|
},
|
||
|
});
|
||
|
return {
|
||
|
...v,
|
||
|
hosts_settings: {
|
||
|
...v.hosts_settings,
|
||
|
[p1]: {
|
||
|
...v.hosts_settings[p1],
|
||
|
[p2]: value,
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export default function emailHostSettings(
|
||
|
config: EmailTemplate3Config,
|
||
|
setConfig: React.Dispatch<React.SetStateAction<EmailTemplate3Config>>
|
||
|
) {
|
||
|
if (config.policy_readable == 'null') {
|
||
|
return '';
|
||
|
}
|
||
|
const p = config.pronoun;
|
||
|
return (
|
||
|
<div>
|
||
|
{Object.entries(config.hosts_settings).map(([host_id, settings]) => (
|
||
|
<div key={host_id}>
|
||
|
<h5>
|
||
|
{host_id}, {hostNeedsQuestions(settings).toString()}
|
||
|
</h5>
|
||
|
<p>
|
||
|
Cele przetwarzania danych przez właściciela domeny {host_id}{' '}
|
||
|
{hostSettingsDropdown({
|
||
|
host_id,
|
||
|
setConfig,
|
||
|
settings,
|
||
|
field: 'presence',
|
||
|
value: settings.presence,
|
||
|
options: {
|
||
|
not_mentioned: ['nie są nigdzie na stronie opisane'],
|
||
|
mentioned_in_policy: [
|
||
|
'są opisane w polityce prywatności',
|
||
|
config.policy_readable !== 'yes',
|
||
|
],
|
||
|
mentioned_in_popup: ['są opisane w okienku RODO'],
|
||
|
},
|
||
|
})}
|
||
|
</p>
|
||
|
{!['not_mentioned', 'null'].includes(settings.presence) ? (
|
||
|
<p>
|
||
|
Wskazana przez administratora podstawa prawna dla{' '}
|
||
|
<strong> tego konkretnego celu</strong>{' '}
|
||
|
{hostSettingsDropdown({
|
||
|
host_id,
|
||
|
setConfig,
|
||
|
settings,
|
||
|
field: 'legal_basis_type' as const,
|
||
|
value: settings.legal_basis_type,
|
||
|
options: {
|
||
|
consent: ['to zgoda.'],
|
||
|
legitimate_interest: ['to uzasadniony interes.'],
|
||
|
not_mentioned: ['nie jest wskazana nigdzie na stronie.'],
|
||
|
},
|
||
|
})}
|
||
|
</p>
|
||
|
) : (
|
||
|
''
|
||
|
)}
|
||
|
{!['not_mentioned', 'null'].includes(settings.legal_basis_type) ? (
|
||
|
<div>
|
||
|
{ConsentProblems({ settings, host_id, pronoun: p, setConfig })}
|
||
|
{LegitimateInteresProblems({
|
||
|
settings,
|
||
|
host_id,
|
||
|
setConfig,
|
||
|
})}
|
||
|
</div>
|
||
|
) : (
|
||
|
''
|
||
|
)}
|
||
|
</div>
|
||
|
))}
|
||
|
</div>
|
||
|
);
|
||
|
}
|