()
| 355 | }; |
| 356 | |
| 357 | const AppInner = () => { |
| 358 | const prefersReducedMotion = useAtomValue(atoms.prefersReducedMotionAtom); |
| 359 | const client = useAtomValue(ClientModel.getInstance().clientAtom); |
| 360 | const windowData = useAtomValue(GlobalModel.getInstance().windowDataAtom); |
| 361 | const isFullScreen = useAtomValue(atoms.isFullScreen); |
| 362 | |
| 363 | if (client == null || windowData == null) { |
| 364 | return ( |
| 365 | <div className="flex flex-col w-full h-full"> |
| 366 | <AppBackground /> |
| 367 | <CenteredDiv>invalid configuration, client or window was not loaded</CenteredDiv> |
| 368 | </div> |
| 369 | ); |
| 370 | } |
| 371 | |
| 372 | return ( |
| 373 | <div |
| 374 | className={clsx("flex flex-col w-full h-full", PLATFORM, { |
| 375 | fullscreen: isFullScreen, |
| 376 | "prefers-reduced-motion": prefersReducedMotion, |
| 377 | })} |
| 378 | onContextMenu={handleContextMenu} |
| 379 | > |
| 380 | <AppBackground /> |
| 381 | <MacOSFirstClickHandler /> |
| 382 | <AppKeyHandlers /> |
| 383 | <AppFocusHandler /> |
| 384 | <AppSettingsUpdater /> |
| 385 | <BadgeAutoClearing /> |
| 386 | <DndProvider backend={HTML5Backend}> |
| 387 | <Workspace /> |
| 388 | </DndProvider> |
| 389 | </div> |
| 390 | ); |
| 391 | }; |
| 392 | |
| 393 | export { App }; |
nothing calls this directly
no test coverage detected