import React, { Fragment } from 'react'; import ReactDOM from 'react-dom'; import { getMemory } from '../../memory'; import { useEmitter, getshorthost } from '../../util'; import browserAPI from '../../lib/browser-api'; async function getCurrentTab() { const [tab] = await browserAPI.tabs.query({ active: true, windowId: browserAPI.windows.WINDOW_ID_CURRENT, }); return tab; } function isDomainHighlySuspicious(domain: string) { return ( domain.includes('facebook') || domain.includes('twitter') || domain.includes('linkedin') || false ); } const Toolbar = () => { const [origin, setOrigin] = React.useState(null); const [eventCounts] = useEmitter(getMemory()); const [cookieDomainCopy, setCookieDomainCopy] = React.useState(null); const [_, setMarksOccurrence] = React.useState(false); const [exposedOriginDomainCopy, setExposedOriginDomainCopy] = React.useState( null ); const first_sentence_cookie = 'Strona dokonała zapisu i odczytu plików Cookie dla domen '; const first_sentence_history = 'Część informacji o Twojej historii przeglądania została wysłana do '; React.useEffect(() => { const listener = async () => { const tab = await getCurrentTab(); if (tab !== undefined && tab.url) { const url = new URL(tab.url); if (url.origin.startsWith('moz-extension')) { return; } setOrigin(url.origin); } else { console.warn('Out of the tab scope'); } }; browserAPI.tabs.onUpdated.addListener(listener); listener(); return () => { browserAPI.tabs.onUpdated.removeListener(listener); }; }); React.useEffect(() => { if (!origin) return; const exposedOriginDomains = Object.values(getMemory().getClustersForOrigin(origin)) .filter((cluster) => cluster.exposesOrigin()) .sort((cluster1, cluster2) => isDomainHighlySuspicious(cluster1.id) ? -1 : isDomainHighlySuspicious(cluster2.id) ? 1 : 0 ) .map((cluster) => cluster.id); setExposedOriginDomainCopy(''); switch (exposedOriginDomains.length) { case 0: break; case 1: setExposedOriginDomainCopy(`${exposedOriginDomains[0]}.`); break; case 2: setExposedOriginDomainCopy( `${exposedOriginDomains[0]} oraz ${exposedOriginDomains[1]}.` ); break; case 3: setExposedOriginDomainCopy( `${exposedOriginDomains[0]}, ${exposedOriginDomains[1]} oraz ${exposedOriginDomains[2]}.` ); break; default: setExposedOriginDomainCopy( `${exposedOriginDomains[0]}, ${exposedOriginDomains[1]} (i ${ exposedOriginDomains.length - 2 < 2 ? 2 : exposedOriginDomains.length - 2 } innych).` ); break; } }, [eventCounts['*'], origin]); React.useEffect(() => { if (!origin) return; const cookieDomains = Object.values(getMemory().getClustersForOrigin(origin)) .filter((cluster) => cluster.hasCookies()) .sort((cluster1, cluster2) => isDomainHighlySuspicious(cluster1.id) ? -1 : isDomainHighlySuspicious(cluster2.id) ? 1 : 0 ) .map((cluster) => cluster.id); setCookieDomainCopy(''); switch (cookieDomains.length) { case 0: break; case 1: setCookieDomainCopy(`${cookieDomains[0]}.`); break; case 2: setCookieDomainCopy(`${cookieDomains[0]} oraz ${cookieDomains[1]}.`); break; case 3: setCookieDomainCopy( `${cookieDomains[0]}, ${cookieDomains[1]} oraz ${cookieDomains[2]}.` ); break; default: setCookieDomainCopy( `${cookieDomains[0]}, ${cookieDomains[1]} (i ${ cookieDomains.length - 2 < 2 ? 2 : cookieDomains.length - 2 } innych).` ); break; } }, [eventCounts['*'], origin]); const autoMark = () => { Object.values(getMemory().getClustersForOrigin(origin || '')).forEach((cluster) => cluster.autoMark() ); setMarksOccurrence(true); }; return (
{origin ? (
{origin}
) : (
Rentgen - wtyczka do przeglądania
)}
{origin ? ( ) : ( )}
{origin ? ( {' '}
{ Object.values(getMemory().getClustersForOrigin(origin)).filter( (cluster) => cluster.hasCookies() ).length }
{ Object.values(getMemory().getClustersForOrigin(origin)).filter( (cluster) => cluster.exposesOrigin() ).length }
{Object.values(getMemory().getClustersForOrigin(origin)).length}
Liczba wykrytych domen podmiotów trzecich
{cookieDomainCopy ? (

cluster.hasCookies()) .map((domain) => domain.id) .join(', ')} > {first_sentence_cookie} {cookieDomainCopy}

) : null} {exposedOriginDomainCopy ? (

cluster.exposesOrigin()) .map((domain) => domain.id) .join(', ')} > {first_sentence_history} {exposedOriginDomainCopy}

) : null}
{exposedOriginDomainCopy || cookieDomainCopy ? (

Takie przetwarzanie danych może być niezgodne z prawem. Przejdź do analizy aby pomóc ustalić, czy ta strona nie narusza RODO lub ustawy Prawo Komunikacji Elektronicznej.

) : (

Nie znaleziono problemów na tej stronie.

)}
) : null}
); }; ReactDOM.render(, document.getElementById('toolbar'));