import * as React from 'react'; import { useHardwareConcurrency } from 'react-adaptive-hooks/hardware-concurrency'; import { useMediaCapabilities } from 'react-adaptive-hooks/media-capabilities'; import { useMemoryStatus } from 'react-adaptive-hooks/memory'; import { useNetworkStatus } from 'react-adaptive-hooks/network'; import { useSaveData } from 'react-adaptive-hooks/save-data'; const NetworkStatus = () => { const initialEffectiveConnectionType = '4g'; const { effectiveConnectionType } = useNetworkStatus(initialEffectiveConnectionType); let media; switch (effectiveConnectionType) { case 'slow-2g': media = low resolution; break; case '2g': media = medium resolution; break; case '3g': media = high resolution; break; case '4g': media = ; break; default: media = ; break; } return
{media}
; }; const SaveData = () => { const initialSaveDataStatus = true; const { saveData } = useSaveData(initialSaveDataStatus); return (
{ saveData ? : }
); }; const HardwareConcurrency = () => { const { numberOfLogicalProcessors } = useHardwareConcurrency(); return (
{ numberOfLogicalProcessors && numberOfLogicalProcessors <= 4 ? : }
); }; const MemoryStatus = () => { const initialMemoryStatus = { deviceMemory: 4 }; const { deviceMemory } = useMemoryStatus(initialMemoryStatus); return (
{ deviceMemory < 4 ? : }
); }; const webmMediaConfig = { type: 'file' as const, // 'record', 'transmission', or 'media-source' video: { contentType: 'video/webm;codecs=vp8', // valid content type width: 800, // width of the video height: 600, // height of the video bitrate: 10000, // number of bits used to encode 1s of video framerate: 30 // number of frames making up that 1s. } }; const initialMediaCapabilities = {smooth: false}; interface MediaCapabilitiesProps { videoSources: { webm: string; mp4: string; }; } const MediaCapabilities = ({ videoSources }: MediaCapabilitiesProps) => { const { mediaCapabilities } = useMediaCapabilities(webmMediaConfig, initialMediaCapabilities); return (
{ (!mediaCapabilities.supported || !mediaCapabilities.hasMediaConfig) && (
Defaulted to mp4. Couldn't test webm support, either the media capabilities api is unavailable or no media configuration was given.
) }
); };