import { invoke } from '@tauri-apps/api'; import { FC, useMemo } from 'react'; import { useAsync } from 'react-async-hook'; import { DisplayWithLedStrips } from './components/display-with-led-strips'; import { PickerConfiguration } from './models/picker-configuration'; const getPickerConfig = () => invoke('get_picker_config'); const getScreenshotOfDisplays = () => invoke('take_snapshot').then((items) => items?.map((it) => `data:image/webp;base64,${it}`), ); export const Configurator: FC = () => { const { loading: pendingPickerConfig, result: pickerConfig } = useAsync( getPickerConfig, [], ); const { loading: pendingScreenshotOfDisplays, result: screenshotOfDisplays } = useAsync( getScreenshotOfDisplays, [], ); const displays = useMemo(() => { if (pickerConfig && screenshotOfDisplays) { return screenshotOfDisplays.map((screenshot, index) => ( )); } }, [pickerConfig, screenshotOfDisplays]); if (pendingPickerConfig || pendingScreenshotOfDisplays) { return (
等待 {JSON.stringify({ pendingPickerConfig, pendingScreenshotOfDisplays })} {displays}
); } return
{displays}
; };