import React from 'react';
import { getMemory } from '../memory';
import { StolenDataEntry } from '../stolen-data-entry';
import { maskString, useEmitter } from '../util';
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();
e.stopPropagation();
}}
style={{ color: entry.isMarked ? 'black' : 'gray' }}
>
{body}
);
}
function StolenDataRow({
entry,
refresh,
}: {
entry: StolenDataEntry;
refresh: Function;
}) {
const [version] = useEmitter(entry);
return (
{
entry.toggleMark();
refresh();
}}
/>
|
{
entry.toggleMark();
refresh();
}}
>
{entry.name}
|
{entry.source === 'cookie' ? (
🍪
) : entry.request.hasCookie() ? (
🍪
) : null}
{entry.exposesOrigin() ? (
⚠️
) : entry.request.exposesOrigin() ? (
⚠️
) : null}
|
|
);
}
export default function StolenDataCluster({
origin,
shorthost,
minValueLength,
refresh,
cookiesOnly,
cookiesOrOriginOnly,
}: {
origin: string;
shorthost: string;
refreshToken: number;
minValueLength: number;
refresh: Function;
cookiesOnly: boolean;
cookiesOrOriginOnly: boolean;
}) {
const cluster = getMemory().getClustersForOrigin(origin)[shorthost];
return (
{cluster
.calculateRepresentativeStolenData({
minValueLength,
cookiesOnly,
cookiesOrOriginOnly,
})
.map((entry) => (
))}
);
}