mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
import { NuqsAdapter } from '@offlegacy/nuqs-hash-router';
|
|
import isElectron from 'is-electron';
|
|
import { useEffect, useMemo } from 'react';
|
|
import { Navigate, Outlet } from 'react-router';
|
|
|
|
import { useServerAuthenticated } from '/@/renderer/hooks/use-server-authenticated';
|
|
import { AppRoute } from '/@/renderer/router/routes';
|
|
import { useCurrentServer } from '/@/renderer/store';
|
|
import { Center } from '/@/shared/components/center/center';
|
|
import { Spinner } from '/@/shared/components/spinner/spinner';
|
|
import { toast } from '/@/shared/components/toast/toast';
|
|
import { AuthState } from '/@/shared/types/types';
|
|
|
|
const ipc = isElectron() ? window.api.ipc : null;
|
|
const utils = isElectron() ? window.api.utils : null;
|
|
const mpvPlayerListener = isElectron() ? window.api.mpvPlayerListener : null;
|
|
|
|
export const AppOutlet = () => {
|
|
const currentServer = useCurrentServer();
|
|
// const setFallback = useSetPlayerFallback();
|
|
const authState = useServerAuthenticated();
|
|
|
|
const isActionsRequired = useMemo(() => {
|
|
const isServerRequired = !currentServer;
|
|
|
|
const actions = [isServerRequired];
|
|
const isActionRequired = actions.some((c) => c);
|
|
|
|
return isActionRequired;
|
|
}, [currentServer]);
|
|
|
|
// useEffect(() => {
|
|
// utils?.mainMessageListener((_event, data) => {
|
|
// toast.show(data);
|
|
// });
|
|
|
|
// mpvPlayerListener?.rendererPlayerFallback((_event, data) => {
|
|
// setFallback(data);
|
|
// });
|
|
|
|
// return () => {
|
|
// ipc?.removeAllListeners('toast-from-main');
|
|
// ipc?.removeAllListeners('renderer-player-fallback');
|
|
// };
|
|
// }, [setFallback]);
|
|
|
|
if (authState === AuthState.LOADING) {
|
|
return (
|
|
<Center h="100vh" w="100%">
|
|
<Spinner container />
|
|
</Center>
|
|
);
|
|
}
|
|
|
|
if (isActionsRequired || authState === AuthState.INVALID) {
|
|
return <Navigate replace to={AppRoute.ACTION_REQUIRED} />;
|
|
}
|
|
|
|
return (
|
|
<NuqsAdapter>
|
|
<Outlet />
|
|
</NuqsAdapter>
|
|
);
|
|
};
|