import { RequestCluster } from '../request-cluster'; import { ExplainerKey } from './explainers'; import { ParsedAnswers } from './parse-answers'; import { v } from './verbs'; abstract class Problem { constructor(public answers: ParsedAnswers, public clusters: Record) {} getMarkedClusters() { return Object.values(this.clusters).filter((c) => c.hasMarks()); } abstract getEmailContent(): JSX.Element; abstract getNecessaryExplainers(): ExplainerKey[]; } function formatRange(cluster: RequestCluster) { const parts = [] as string[]; console.log(cluster); if (cluster.hasMarkedCookies()) { parts.push('mojego identyfikatora internetowego pozyskanego z Cookie'); } if (cluster.exposesOrigin()) { parts.push('części mojej historii przeglądania'); } return parts.join(' oraz '); } class NoInformationAtAllProblem extends Problem { getEmailContent() { const _ = (word: string) => v(word, this.answers.zaimek); return ( <>

Brak informacji na temat przetwarzania danych osobowych

{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami domen:

Na stronie brakuje jednak jakichkolwiek informacji o tym, jakie są cele przetwarzania takich danych oraz jakie są podstawy prawne takiego przetwarzania.

Zwracam się zatem do Państwa z następującymi pytaniami:

); } getNecessaryExplainers() { const explainers = [] as Array; if ( this.getMarkedClusters().some((cluster) => { console.log(cluster); return cluster.hasMarkedCookies(); }) ) { explainers.push('cookies_are_pii'); } return explainers; } } class UnlawfulCookieAccess extends Problem { getNecessaryExplainers(): ExplainerKey[] { return []; } getEmailContent() { const cookie_clusters = Object.values(this.clusters).filter((c) => c.hasMarkedCookies()); return ( <>

Dostęp do cookies niezgodny z ustawą Prawo Telekomunikacyjne

Państwa strona dokonała odczytu plików Cookie zapisanych na dysku twardym mojego komputera. Dotyczy to plików cookie przypisanych do domen:

); } static qualifies(answers: ParsedAnswers, clusters: RequestCluster[]): boolean { // są cookiesy, nie było zgody, nie są konieczne do działania strony const cookie_clusters = Object.values(clusters).filter((c) => c.hasMarkedCookies()); return cookie_clusters.some((cluster) => { const hostAnswers = answers.hosts[cluster.id]; return ( (hostAnswers.present == 'not_mentioned' || hostAnswers.present == 'not_before_making_a_choice' || ['none', 'closed_popup', 'deny_all'].includes(hostAnswers.popup_action)) && hostAnswers.was_processing_necessary != 'yes' ); }); } } export default function deduceProblems( answers: ParsedAnswers, clusters: Record ): Problem[] { const problems = []; if (answers.popup_type === 'none') { problems.push(new NoInformationAtAllProblem(answers, clusters)); } if (UnlawfulCookieAccess.qualifies(answers, Object.values(clusters))) { problems.push(new UnlawfulCookieAccess(answers, clusters)); } return problems; }