2022-01-17 19:50:14 +01:00
|
|
|
import React, { Fragment, useEffect, useState } from 'react';
|
|
|
|
import ReactDOM from 'react-dom';
|
|
|
|
import Options from '../options';
|
|
|
|
import { StolenData } from './stolen-data';
|
2022-01-19 13:12:28 +01:00
|
|
|
import { getshorthost, useEmitter } from '../util';
|
2022-01-17 19:50:14 +01:00
|
|
|
import { getMemory } from '../memory';
|
2022-01-19 13:12:28 +01:00
|
|
|
import InfoCircleIcon from '../assets/icons/info_circle_outline.svg';
|
|
|
|
import SettingsIcon from '../assets/icons/settings.svg';
|
|
|
|
import TrashIcon from '../assets/icons/trash_full.svg';
|
|
|
|
import MailIcon from '../assets/icons/mail.svg';
|
|
|
|
import ShortLeftIcon from '../assets/icons/short_left.svg';
|
2021-10-03 09:03:56 +02:00
|
|
|
|
|
|
|
async function getCurrentTab() {
|
2022-01-17 19:50:14 +01:00
|
|
|
const [tab] = await browser.tabs.query({
|
|
|
|
active: true,
|
|
|
|
windowId: browser.windows.WINDOW_ID_CURRENT,
|
|
|
|
});
|
|
|
|
return tab;
|
2021-10-03 09:03:56 +02:00
|
|
|
}
|
|
|
|
|
2022-01-17 19:50:14 +01:00
|
|
|
import './global.scss';
|
|
|
|
import './sidebar.scss';
|
|
|
|
|
2021-10-03 09:03:56 +02:00
|
|
|
const Sidebar = () => {
|
2022-01-17 19:50:14 +01:00
|
|
|
const [origin, setOrigin] = useState<string | null>(null);
|
|
|
|
const [minValueLength, setMinValueLength] = useState<number | null>(7);
|
|
|
|
const [cookiesOnly, setCookiesOnly] = useState<boolean>(false);
|
|
|
|
const [stolenDataView, setStolenDataView] = useState<boolean>(true);
|
|
|
|
const [cookiesOrOriginOnly, setCookiesOrOriginOnly] =
|
|
|
|
useState<boolean>(false);
|
|
|
|
const [counter, setCounter] = useEmitter(getMemory());
|
2022-01-19 14:12:52 +01:00
|
|
|
const [marksOccurrence, setMarksOccurrence] = useState<boolean>(false);
|
2021-11-06 21:48:25 +01:00
|
|
|
|
2022-01-17 19:50:14 +01:00
|
|
|
useEffect(() => {
|
|
|
|
const listener = async (data: any) => {
|
|
|
|
console.log('tab change!');
|
|
|
|
const tab = await getCurrentTab();
|
|
|
|
const url = new URL(tab.url);
|
|
|
|
if (url.origin.startsWith('moz-extension')) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
setOrigin(url.origin);
|
|
|
|
};
|
|
|
|
browser.tabs.onUpdated.addListener(listener);
|
|
|
|
return () => {
|
|
|
|
browser.tabs.onUpdated.removeListener(listener);
|
|
|
|
};
|
|
|
|
});
|
2021-11-06 21:48:25 +01:00
|
|
|
|
2022-01-19 14:12:52 +01:00
|
|
|
useEffect(() => {
|
|
|
|
for (const cluster of Object.values(
|
|
|
|
getMemory().getClustersForOrigin(origin)
|
|
|
|
)) {
|
|
|
|
if (cluster.hasMarks()) {
|
|
|
|
return setMarksOccurrence(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return setMarksOccurrence(false);
|
|
|
|
}, [counter]);
|
|
|
|
|
|
|
|
|
2022-01-17 19:50:14 +01:00
|
|
|
return (
|
|
|
|
<Fragment>
|
|
|
|
{/* <div id="selector">
|
2021-10-03 09:03:56 +02:00
|
|
|
<TabDropdown setPickedTab={setPickedTab} pickedTab={pickedTab} />
|
|
|
|
<button
|
|
|
|
id="get_current_tab_button"
|
|
|
|
onClick={async () => setPickedTab(await getCurrentTab())}
|
|
|
|
>
|
|
|
|
Wybierz aktywną kartę{" "}
|
|
|
|
</button>
|
2021-11-06 21:48:25 +01:00
|
|
|
</div> */}
|
2022-01-17 19:50:14 +01:00
|
|
|
<header>
|
|
|
|
<img
|
|
|
|
src="../assets/logo-internet-czas-dzialac.svg"
|
|
|
|
height={48}
|
|
|
|
></img>
|
|
|
|
<div className="webpage-metadata">
|
|
|
|
<span>Analiza strony</span>
|
|
|
|
<span className="webpage-metadata--hyperlink">
|
|
|
|
{origin}
|
|
|
|
</span>
|
|
|
|
</div>
|
2022-01-19 13:12:28 +01:00
|
|
|
{stolenDataView ? (
|
|
|
|
<a href="https://internet-czas-dzialac.pl">
|
|
|
|
<InfoCircleIcon />
|
|
|
|
</a>
|
|
|
|
) : (
|
|
|
|
<button onClick={() => setStolenDataView(true)}>
|
|
|
|
<ShortLeftIcon />
|
|
|
|
</button>
|
|
|
|
)}
|
2022-01-17 19:50:14 +01:00
|
|
|
</header>
|
|
|
|
|
|
|
|
<nav>
|
|
|
|
<button onClick={() => setStolenDataView(!stolenDataView)}>
|
2022-01-19 13:12:28 +01:00
|
|
|
{/* {stolenDataView ? 'Options' : 'Data'}
|
|
|
|
*/}
|
|
|
|
<SettingsIcon />
|
|
|
|
<span>Ustawienia wtyczki</span>
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
onClick={() => {
|
|
|
|
getMemory().removeCookiesFor(
|
|
|
|
origin,
|
|
|
|
getshorthost(new URL(origin).host)
|
|
|
|
);
|
2022-01-19 14:12:52 +01:00
|
|
|
setMarksOccurrence(false);
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
{/* {stolenDataView ? 'Options' : 'Data'}
|
|
|
|
*/}
|
|
|
|
<TrashIcon />
|
|
|
|
<span>Wyczyść ciasteczka first-party</span>
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
onClick={() => {
|
|
|
|
getMemory().removeRequestsFor(origin);
|
|
|
|
setCounter((c) => c + 1);
|
|
|
|
setMarksOccurrence(false);
|
2022-01-19 13:12:28 +01:00
|
|
|
}}
|
|
|
|
>
|
|
|
|
{/* {stolenDataView ? 'Options' : 'Data'}
|
|
|
|
*/}
|
|
|
|
<TrashIcon />
|
2022-01-19 14:12:52 +01:00
|
|
|
<span>Wyczyść pamięć</span>
|
2022-01-19 13:12:28 +01:00
|
|
|
</button>
|
|
|
|
<button
|
2022-01-19 14:12:52 +01:00
|
|
|
disabled={!marksOccurrence}
|
2022-01-19 13:12:28 +01:00
|
|
|
onClick={() => {
|
|
|
|
const params = [
|
|
|
|
'height=' + screen.height,
|
|
|
|
'width=' + screen.width,
|
|
|
|
'fullscreen=yes',
|
|
|
|
].join(',');
|
|
|
|
window.open(
|
|
|
|
`/report-window/report-window.html?origin=${origin}`,
|
|
|
|
'new_window',
|
|
|
|
params
|
|
|
|
);
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
<MailIcon />
|
|
|
|
<span>Utwórz wiadomość dla administratora tej witryny</span>
|
2022-01-17 19:50:14 +01:00
|
|
|
</button>
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
{stolenDataView ? (
|
|
|
|
<StolenData
|
|
|
|
origin={origin}
|
|
|
|
refreshToken={counter}
|
|
|
|
refresh={() => setCounter((c) => c + 1)}
|
|
|
|
minValueLength={minValueLength}
|
|
|
|
cookiesOnly={cookiesOnly}
|
|
|
|
cookiesOrOriginOnly={cookiesOrOriginOnly}
|
|
|
|
/>
|
|
|
|
) : (
|
|
|
|
<Options
|
|
|
|
minValueLength={minValueLength}
|
|
|
|
setMinValueLength={setMinValueLength}
|
|
|
|
cookiesOnly={cookiesOnly}
|
|
|
|
setCookiesOnly={setCookiesOnly}
|
|
|
|
cookiesOrOriginOnly={cookiesOrOriginOnly}
|
|
|
|
setCookiesOrOriginOnly={setCookiesOrOriginOnly}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
</section>
|
|
|
|
|
2022-01-19 14:12:52 +01:00
|
|
|
<footer>Footer marks → {JSON.stringify(marksOccurrence)}</footer>
|
2022-01-17 19:50:14 +01:00
|
|
|
</Fragment>
|
|
|
|
);
|
2021-10-03 09:03:56 +02:00
|
|
|
};
|
|
|
|
|
2022-01-17 19:50:14 +01:00
|
|
|
ReactDOM.render(<Sidebar />, document.getElementById('app'));
|