Added context to stop prop drilling
This commit is contained in:
parent
26ac07bedb
commit
148beeeaed
11 changed files with 149 additions and 121 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import BlocksOne from './BlocksOne';
|
import BlocksOne from './BlocksOne';
|
||||||
import BlocksTwo from './BlocksTwo';
|
import BlocksTwo from './BlocksTwo';
|
||||||
// import FontsBlock from './FontsBlock';
|
// import FontsBlock from './FontsBlock';
|
||||||
|
|
@ -18,24 +19,18 @@ const Blocks = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{connectionData ? (
|
{connectionData ? (
|
||||||
<>
|
<DataContext.Provider value={{ workerData, connectionData }}>
|
||||||
<div className="centerBlockInner">
|
<div className="centerBlockInner">
|
||||||
<BlocksOne workerData={workerData} />
|
<BlocksOne />
|
||||||
</div>
|
</div>
|
||||||
<div className="centerBlockInner">
|
<div className="centerBlockInner">
|
||||||
<BlocksTwo
|
<BlocksTwo />
|
||||||
workerData={workerData}
|
|
||||||
connectionData={connectionData}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="centerBlockMobile">
|
<div className="centerBlockMobile">
|
||||||
<BlocksOne workerData={workerData} />
|
<BlocksOne />
|
||||||
<BlocksTwo
|
<BlocksTwo />
|
||||||
workerData={workerData}
|
|
||||||
connectionData={connectionData}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</>
|
</DataContext.Provider>
|
||||||
) : (
|
) : (
|
||||||
<div className="contentBlock loadBlock">
|
<div className="contentBlock loadBlock">
|
||||||
<center>Loading...</center>
|
<center>Loading...</center>
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ import IntlBlock from './IntlBlock';
|
||||||
import NavigatorBlock from './NavigatorBlock';
|
import NavigatorBlock from './NavigatorBlock';
|
||||||
import FingerprintBlock from './FingerprintBlock';
|
import FingerprintBlock from './FingerprintBlock';
|
||||||
|
|
||||||
const BlocksOne = ({ workerData }) => (
|
const BlocksOne = () => (
|
||||||
<>
|
<>
|
||||||
<FingerprintBlock workerData={workerData} />
|
<FingerprintBlock />
|
||||||
<NavigatorBlock workerData={workerData} />
|
<NavigatorBlock />
|
||||||
<UserAgentBlock workerAgent={workerData.userAgent} />
|
<UserAgentBlock />
|
||||||
<IntlBlock workerData={workerData} />
|
<IntlBlock />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ import ScreenBlock from './ScreenBlock';
|
||||||
import LocationBlock from './LocationBlock';
|
import LocationBlock from './LocationBlock';
|
||||||
import ConnectionBlock from './ConnectionBlock';
|
import ConnectionBlock from './ConnectionBlock';
|
||||||
|
|
||||||
const BlocksTwo = ({ workerData, connectionData }) => (
|
const BlocksTwo = () => (
|
||||||
<>
|
<>
|
||||||
<LocationBlock workerData={workerData} connectionData={connectionData} />
|
<LocationBlock />
|
||||||
<ConnectionBlock workerData={workerData} connectionData={connectionData} />
|
<ConnectionBlock />
|
||||||
<ScreenBlock />
|
<ScreenBlock />
|
||||||
<OtherBlock workerData={workerData} />
|
<OtherBlock />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
|
import { useContext } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import Block from './Block';
|
import Block from './Block';
|
||||||
import Table from './Table';
|
import Table from './Table';
|
||||||
import { getConnection } from '../utils/connection';
|
import { getConnection } from '../utils/connection';
|
||||||
|
|
||||||
const LocationBlock = ({ connectionData }) => (
|
const LocationBlock = () => {
|
||||||
|
const { connectionData } = useContext(DataContext);
|
||||||
|
return (
|
||||||
<Block>
|
<Block>
|
||||||
<h1>Connection</h1>
|
<h1>Connection</h1>
|
||||||
<Table data={getConnection(connectionData)} />
|
<Table data={getConnection(connectionData)} />
|
||||||
|
|
@ -20,6 +24,7 @@ const LocationBlock = ({ connectionData }) => (
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</Block>
|
</Block>
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default LocationBlock;
|
export default LocationBlock;
|
||||||
|
|
|
||||||
5
frontend/src/components/Context.js
Normal file
5
frontend/src/components/Context.js
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { createContext } from 'react';
|
||||||
|
|
||||||
|
const DataContext = createContext();
|
||||||
|
|
||||||
|
export default DataContext;
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import './FingerprintBlock.css';
|
import './FingerprintBlock.css';
|
||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect, useContext } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import Block from './Block';
|
import Block from './Block';
|
||||||
import Table from './Table';
|
import Table from './Table';
|
||||||
import {
|
import {
|
||||||
|
|
@ -9,9 +10,10 @@ import {
|
||||||
getFingerprint,
|
getFingerprint,
|
||||||
} from '../utils/fingerprint';
|
} from '../utils/fingerprint';
|
||||||
|
|
||||||
const FingerprintBlock = ({ workerData }) => {
|
const FingerprintBlock = () => {
|
||||||
const [signature, setSignature] = useState();
|
const [signature, setSignature] = useState();
|
||||||
const [load, setload] = useState(false);
|
const [load, setload] = useState(false);
|
||||||
|
const { workerData } = useContext(DataContext);
|
||||||
const hash = getHash(workerData);
|
const hash = getHash(workerData);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
|
import { useContext } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import Block from './Block';
|
import Block from './Block';
|
||||||
import Table from './Table';
|
import Table from './Table';
|
||||||
import getIntl from '../utils/intl';
|
import getIntl from '../utils/intl';
|
||||||
|
|
||||||
const IntlBlock = ({ workerData }) => (
|
const IntlBlock = () => {
|
||||||
|
const { workerData } = useContext(DataContext);
|
||||||
|
return (
|
||||||
<Block>
|
<Block>
|
||||||
<h1>Intl</h1>
|
<h1>Intl</h1>
|
||||||
<Table data={getIntl(workerData)} />
|
<Table data={getIntl(workerData)} />
|
||||||
|
|
@ -19,6 +23,7 @@ const IntlBlock = ({ workerData }) => (
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</Block>
|
</Block>
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default IntlBlock;
|
export default IntlBlock;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
|
import { useContext } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import Block from './Block';
|
import Block from './Block';
|
||||||
import Table from './Table';
|
import Table from './Table';
|
||||||
import { getMap, getLocation } from '../utils/connection';
|
import { getMap, getLocation } from '../utils/connection';
|
||||||
|
|
||||||
const LocationBlock = ({ connectionData, workerData }) => (
|
const LocationBlock = () => {
|
||||||
|
const { workerData, connectionData } = useContext(DataContext);
|
||||||
|
return (
|
||||||
<Block>
|
<Block>
|
||||||
<h1>Location</h1>
|
<h1>Location</h1>
|
||||||
<img src={getMap(connectionData)} alt="Map of current location" />
|
<img src={getMap(connectionData)} alt="Map of current location" />
|
||||||
|
|
@ -21,6 +25,7 @@ const LocationBlock = ({ connectionData, workerData }) => (
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</Block>
|
</Block>
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default LocationBlock;
|
export default LocationBlock;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
|
import { useContext } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import Block from './Block';
|
import Block from './Block';
|
||||||
import Table from './Table';
|
import Table from './Table';
|
||||||
import getNavigator from '../utils/navigator';
|
import getNavigator from '../utils/navigator';
|
||||||
|
|
||||||
const NavigatorBlock = ({ workerData }) => (
|
const NavigatorBlock = () => {
|
||||||
|
const { workerData } = useContext(DataContext);
|
||||||
|
return (
|
||||||
<Block>
|
<Block>
|
||||||
<h1>Navigator</h1>
|
<h1>Navigator</h1>
|
||||||
<Table data={getNavigator(workerData)} />
|
<Table data={getNavigator(workerData)} />
|
||||||
|
|
@ -20,6 +24,7 @@ const NavigatorBlock = ({ workerData }) => (
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</Block>
|
</Block>
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default NavigatorBlock;
|
export default NavigatorBlock;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect, useContext } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import Block from './Block';
|
import Block from './Block';
|
||||||
import Table from './Table';
|
import Table from './Table';
|
||||||
import getOther from '../utils/other';
|
import getOther from '../utils/other';
|
||||||
|
|
||||||
const OtherBlock = ({ workerData }) => {
|
const OtherBlock = () => {
|
||||||
const [adBlock, setAdBlock] = useState();
|
const [adBlock, setAdBlock] = useState();
|
||||||
const [battery, setBattery] = useState();
|
const [battery, setBattery] = useState();
|
||||||
|
const { workerData } = useContext(DataContext);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetch('https://www3.doubleclick.net', {
|
fetch('https://www3.doubleclick.net', {
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
|
import { useContext } from 'react';
|
||||||
|
import DataContext from './Context';
|
||||||
import Block from './Block';
|
import Block from './Block';
|
||||||
import Table from './Table';
|
import Table from './Table';
|
||||||
import getUserAgent from '../utils/userAgent';
|
import getUserAgent from '../utils/userAgent';
|
||||||
|
|
||||||
const UserAgentBlock = ({ workerAgent }) => (
|
const UserAgentBlock = () => {
|
||||||
|
const { workerData } = useContext(DataContext);
|
||||||
|
return (
|
||||||
<Block>
|
<Block>
|
||||||
<h1>User Agent</h1>
|
<h1>User Agent</h1>
|
||||||
<Table data={getUserAgent(workerAgent)} />
|
<Table data={getUserAgent(workerData.userAgent)} />
|
||||||
<p>
|
<p>
|
||||||
<b>Explanation:</b> Your user agent can be parsed to determine information
|
<b>Explanation:</b> Your user agent can be parsed to determine
|
||||||
about your browser or operating system.{' '}
|
information about your browser or operating system.{' '}
|
||||||
<a
|
<a
|
||||||
className="link"
|
className="link"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
|
@ -20,6 +24,7 @@ const UserAgentBlock = ({ workerAgent }) => (
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</Block>
|
</Block>
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default UserAgentBlock;
|
export default UserAgentBlock;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue