import * as React from 'react'; import { useState, useEffect } from 'react'; import Bowser from 'bowser'; const Table = () => { const [batLevel, setBatLevel] = useState(''); const [batStatus, setBatStatus] = useState(''); useEffect(() => { navigator.getBattery().then((res) => { setBatLevel(`${Math.round(res.level * 100)}%`); setBatStatus(res.charging ? 'Charging' : 'Not charging'); }); }, []); const uaResult = Bowser.parse(navigator.userAgent); const browser = uaResult.browser.name; const browserVersion = uaResult.browser.version; const browserEngine = uaResult.engine.name; const os = `${uaResult.os.name} ${uaResult.os.versionName}`; const platform = uaResult.platform.type; const language = navigator.language; const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; const date = new Date(); const offset = date.getTimezoneOffset(); const cookies = navigator.cookieEnabled ? 'True' : 'False'; const java = navigator.javaEnabled() ? 'True' : 'False'; const dnt = navigator.doNotTrack ? 'True' : 'False'; const pluginsLength = navigator.plugins.length; let pluginList = ''; for (let i = 0; i < pluginsLength; i++) { if (i !== 0) pluginList += ', '; pluginList += navigator.plugins[i].name; } const plugins = pluginList; const screenSize = `${window.screen.width}x${window.screen.height}`; const color = window.screen.colorDepth; const memory = `${navigator.deviceMemory}GB`; const cores = navigator.hardwareConcurrency; const maxTouch = navigator.maxTouchPoints; const gl = document.createElement('canvas').getContext('webgl'); const ext = gl.getExtension('WEBGL_debug_renderer_info'); const vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL); const renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL); return (
Software
Hardware
Browser: {browser}
Browser version: {browserVersion}
Browser engine: {browserEngine}
Operating system: {os}
Language: {language}
Timezone: {timezone}
Timezone offset: {offset}
Cookies enabled: {cookies}
Java enabled: {java}
DNT header enabled: {dnt}
Plugins: {plugins}
Platform: {platform}
Screen resolution: {screenSize}
Color Resolution: {color}
Battery level: {batLevel}
Battery status: {batStatus}
Device memory: {memory}
# of CPU cores: {cores}
Max touchpoints: {maxTouch}
WebGL vendor: {vendor}
WebGL renderer: {renderer}
); }; export default Table;