Optimize app outlet

This commit is contained in:
jeffvli 2023-05-31 00:27:16 -07:00
parent 791088deb6
commit fa0a21a021

View file

@ -1,41 +1,34 @@
import { useState, useEffect } from 'react'; import { useMemo } from 'react';
import isElectron from 'is-electron'; import isElectron from 'is-electron';
import { Navigate, Outlet, useLocation } from 'react-router-dom'; import { Navigate, Outlet } from 'react-router-dom';
import { AppRoute } from '/@/renderer/router/routes'; import { AppRoute } from '/@/renderer/router/routes';
import { useCurrentServer } from '/@/renderer/store'; import { useCurrentServer } from '/@/renderer/store';
const localSettings = isElectron() ? window.electron.localSettings : null; const localSettings = isElectron() ? window.electron.localSettings : null;
export const AppOutlet = () => { export const AppOutlet = () => {
const location = useLocation();
const currentServer = useCurrentServer(); const currentServer = useCurrentServer();
const [isMpvRequired, setIsMpvRequired] = useState(false); const isActionsRequired = useMemo(() => {
const isServerRequired = !currentServer; const isMpvRequired = () => {
if (!isElectron()) return false;
useEffect(() => { const mpvPath = localSettings.get('mpv_path');
const getMpvPath = async () => { if (mpvPath) return false;
if (!isElectron()) return setIsMpvRequired(false); return true;
const mpvPath = await localSettings.get('mpv_path');
if (mpvPath) {
return setIsMpvRequired(false);
}
return setIsMpvRequired(true);
}; };
getMpvPath(); const isServerRequired = !currentServer;
}, []);
const actions = [isServerRequired, isMpvRequired]; const actions = [isServerRequired, isMpvRequired()];
const actionRequired = actions.some((c) => c); const isActionRequired = actions.some((c) => c);
if (actionRequired) { return isActionRequired;
}, [currentServer]);
if (isActionsRequired) {
return ( return (
<Navigate <Navigate
replace replace
state={{ from: location }}
to={AppRoute.ACTION_REQUIRED} to={AppRoute.ACTION_REQUIRED}
/> />
); );