import React, { type FC } from 'react'; import { useWindowEventListener } from '@wener/reaction'; import { useImmer } from 'use-immer'; import { useUserAgentPreferences } from '../../utils/UserAgentPreference'; import { SystemAboutPageSection } from './SystemAboutPageSection'; export const SystemAboutPageBrowserInfo: FC = () => { const getState = () => ({ ua: globalThis.navigator?.userAgent, width: globalThis.outerWidth, height: globalThis.outerHeight, screenWidth: globalThis.screen?.width, screenHeight: globalThis.screen?.height, timezone: Intl.DateTimeFormat?.().resolvedOptions?.()?.timeZone, }); const [state, update] = useImmer(getState); useWindowEventListener( { resize: () => { update(getState()); }, }, [], ); const { colorTheme, devicePixelRatio, reducedTransparency, reducedData, reducedMotion, contrast } = useUserAgentPreferences(); return (
窗口: {state.width}×{state.height}
屏幕: {state.screenWidth}×{state.screenHeight} @{devicePixelRatio}x
{state.ua}
更多信息
偏好主题: {colorTheme}
语言: {navigator.language}
时区: {state.timezone}
设备像素比: {devicePixelRatio}
对比度: {contrast}
{[ reducedData && 'Reduced Data', reducedMotion && 'Reduced Motion', reducedTransparency && 'Reduced Transparency', ] .filter(Boolean) .join(' ')}
); };