diff --git a/components/report-window/email-content.tsx b/components/report-window/email-content.tsx index b6aad6e..eb99062 100644 --- a/components/report-window/email-content.tsx +++ b/components/report-window/email-content.tsx @@ -39,10 +39,12 @@ export default function EmailContent({ function copyTextToClipboard() { // Should be changed in the future to Clipboard API (https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write#browser_compatibility) let r = document.createRange(); - r.selectNode(document.querySelector('.mail-container__content')); - window.getSelection().addRange(r); + const container = document.querySelector('.mail-container__content'); + if (!container) return; + r.selectNode(container); + window.getSelection()?.addRange(r); document.execCommand('copy'); - window.getSelection().removeAllRanges(); + window.getSelection()?.removeAllRanges(); setCopy(true); } diff --git a/components/report-window/generate-survey-questions.ts b/components/report-window/generate-survey-questions.ts index 9c3c44e..c0b3cd4 100644 --- a/components/report-window/generate-survey-questions.ts +++ b/components/report-window/generate-survey-questions.ts @@ -122,7 +122,10 @@ function generateHostPage( defaultValueExpression: index == 0 ? 'marketing' - : `{${f('legitimate_interest_description', previous_cluster)}}`, + : `{${f( + 'legitimate_interest_description', + previous_cluster || undefined + )}}`, }, { type: 'radiogroup', diff --git a/components/report-window/har-converter.tsx b/components/report-window/har-converter.tsx index 16fe731..ed0e873 100644 --- a/components/report-window/har-converter.tsx +++ b/components/report-window/har-converter.tsx @@ -16,7 +16,9 @@ function handleNewFile( ); setFiltered(new Blob([JSON.stringify(content)], { type: 'application/json' })); }); - reader.readAsText(element.files[0]); + const file = element?.files?.[0]; + if (!file) throw new Error('file empty?'); + reader.readAsText(file); } function generateFakeHAR(entries: StolenDataEntry[]) { @@ -80,8 +82,11 @@ export default function HARConverter({ entries }: { entries: StolenDataEntry[] } type="file" accept=".har" onChange={(e) => { - setFilename(e.target.files[0].name); - handleNewFile(e.target, entries, setFiltered); + const file = e.target?.files?.[0]; + if (file) { + setFilename(file.name); + handleNewFile(e.target, entries, setFiltered); + } }} /> {(filtered && ( diff --git a/components/report-window/problems/unlawful-data.tsx b/components/report-window/problems/unlawful-data.tsx deleted file mode 100644 index 8bd8e99..0000000 --- a/components/report-window/problems/unlawful-data.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { RequestCluster } from '../../../request-cluster'; -import { ExplainerKey } from '../explainers'; -import { ParsedAnswers, ParsedHostAnswers } from '../parse-answers'; -import { v } from '../verbs'; -import { Problem } from './problem'; - -type UnlawfulDataClassification = 'no_purpose'; - -export function classifyUnlawfulData( - hostAnswers: ParsedHostAnswers, - cluster: RequestCluster -): UnlawfulDataClassification { - if (hostAnswers.present == 'not_mentioned' && hostAnswers.was_processing_necessary == 'no') { - return 'no_purpose'; - } -} - -export class UnlawfulData extends Problem { - static qualifies(answers: ParsedAnswers, clusters: RequestCluster[]): boolean {} - getEmailContent() { - const _ = (key: string) => v(key, this.answers.zaimek); - return ( - <> -
- {_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami - domen: -
- {this.getRangeDescription()} - > - ); - } - getNecessaryExplainers() { - return [] as ExplainerKey[]; - } -} diff --git a/components/report-window/report-window.tsx b/components/report-window/report-window.tsx index 1872825..a9b1db3 100644 --- a/components/report-window/report-window.tsx +++ b/components/report-window/report-window.tsx @@ -22,15 +22,17 @@ function Report() { const url = new URL(document.location.toString()); const origin = url.searchParams.get('origin'); const [counter] = useEmitter(getMemory()); + const rawAnswers = url.searchParams.get('answers'); const [answers, setAnswers] = React.useState