import { useState, useEffect } from 'react'; import { Center, Group, Stack } from '@mantine/core'; import isElectron from 'is-electron'; import { RiCheckFill } from 'react-icons/ri'; import { Link } from 'react-router-dom'; import { Button, Text } from '@/renderer/components'; import { ActionRequiredContainer } from '@/renderer/features/action-required/components/action-required-container'; import { MpvRequired } from '@/renderer/features/action-required/components/mpv-required'; import { ServerCredentialRequired } from '@/renderer/features/action-required/components/server-credential-required'; import { ServerRequired } from '@/renderer/features/action-required/components/server-required'; import { settings } from '@/renderer/features/settings'; import { AnimatedPage, useServerCredential } from '@/renderer/features/shared'; import { AppRoute } from '@/renderer/router/routes'; import { useAuthStore } from '@/renderer/store'; export const ActionRequiredRoute = () => { const { serverToken } = useServerCredential(); const currentServer = useAuthStore((state) => state.currentServer); const [isMpvRequired, setIsMpvRequired] = useState(false); const isServerRequired = !currentServer; const isCredentialRequired = currentServer?.noCredential && !serverToken; useEffect(() => { const getMpvPath = async () => { if (!isElectron()) return setIsMpvRequired(false); const mpvPath = await settings.get('mpv_path'); return setIsMpvRequired(!mpvPath); }; getMpvPath(); }, []); const checks = [ { component: , title: 'MPV required', valid: !isMpvRequired, }, { component: , title: 'Credentials required', valid: !isCredentialRequired, }, { component: , title: 'Server required', valid: !isServerRequired, }, ]; const canReturnHome = checks.every((c) => c.valid); const displayedCheck = checks.find((c) => !c.valid); return (
{displayedCheck && ( {displayedCheck?.component} )} {canReturnHome && ( <> No issues found )}
); };