import React from 'react'; import { getMemory } from '../../memory'; import { StolenDataEntry } from '../../stolen-data-entry'; import { maskString, useEmitter } from '../../util'; import './stolen-data-cluster.scss'; const MAX_STRING_VALUE_LENGTH = 100; function StolenDataValue({ entry }: { entry: StolenDataEntry; prefixKey?: string }) { const [version] = useEmitter(entry); let body = null; if (!entry.value) { body = <>; } else { body = (
{maskString(entry.value, 1, MAX_STRING_VALUE_LENGTH)}
); } return ( { entry.toggleMark(); getMemory().emit('change', false, entry.request.shorthost, 'clicked value'); e.stopPropagation(); }} title={maskString(entry.value, 1, MAX_STRING_VALUE_LENGTH)} > {body} ); } function StolenDataRow({ entry }: { entry: StolenDataEntry }) { const [version] = useEmitter(entry); return ( { entry.toggleMark(); getMemory().emit( 'change', false, entry.request.shorthost, 'clicked checkbox' ); }} /> { entry.toggleMark(); getMemory().emit( 'change', false, entry.request.shorthost, 'Clicked entry name' ); }} > {entry.name} {entry.source === 'cookie' ? ( ) : entry.request.hasCookie() ? ( ) : null} {entry.exposesOrigin() ? ( ) : entry.request.exposesOrigin() ? ( ) : null} ); } export default function StolenDataCluster({ origin, shorthost, minValueLength, cookiesOnly, refreshToken, cookiesOrOriginOnly, detailsVisibility, }: { origin: string; shorthost: string; refreshToken: number; minValueLength: number; cookiesOnly: boolean; cookiesOrOriginOnly: boolean; detailsVisibility: boolean; }) { const cluster = getMemory().getClustersForOrigin(origin)[shorthost]; const fullHosts = cluster.getFullHosts(); /* console.log('Stolen data cluster!', shorthost, refreshToken); */ return (
{cluster.id}
{fullHosts.map((host, index) => ( {host} {`${fullHosts.length - 1 !== index ? '· ' : ''}`} ))}
{detailsVisibility ? (
{cluster .calculateRepresentativeStolenData({ minValueLength, cookiesOnly, cookiesOrOriginOnly, }) .map((entry) => ( ))}
Wysłane dane:
) : null}
); }