894391aaa3
Trzeba jeszcze zrobić tak, aby pytania dla kolejnych hostów pojawiały się po kolei - tzn dopiero jak dla poprzedniego hosta hostNeedsQuestions jest false, to pokazujemy następnego. Potem trzeba popracować nad samym generowaniem treści na podstawie wszystkich tych odpowiedzi
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>
|
|
);
|
|
}
|