@@ -218,4 +213,4 @@ export function ServerServiceConfig() {
);
}
-export { Config as Component };
+export { ConfigPage as Component };
diff --git a/packages/frontend/admin/src/modules/layout.tsx b/packages/frontend/admin/src/modules/layout.tsx
index d2a0ba9b0d..28d1534683 100644
--- a/packages/frontend/admin/src/modules/layout.tsx
+++ b/packages/frontend/admin/src/modules/layout.tsx
@@ -6,10 +6,8 @@ import {
import { Separator } from '@affine/admin/components/ui/separator';
import { TooltipProvider } from '@affine/admin/components/ui/tooltip';
import { cn } from '@affine/admin/utils';
-import { useQuery } from '@affine/core/hooks/use-query';
-import { FeatureType, getCurrentUserFeaturesQuery } from '@affine/graphql';
import { AlignJustifyIcon } from 'lucide-react';
-import type { ReactNode, RefObject } from 'react';
+import type { PropsWithChildren, ReactNode, RefObject } from 'react';
import {
createContext,
useCallback,
@@ -19,8 +17,6 @@ import {
useState,
} from 'react';
import type { ImperativePanelHandle } from 'react-resizable-panels';
-import { useNavigate } from 'react-router-dom';
-import { toast } from 'sonner';
import { Button } from '../components/ui/button';
import {
@@ -32,14 +28,9 @@ import {
SheetTrigger,
} from '../components/ui/sheet';
import { Logo } from './accounts/components/logo';
-import { useServerConfig } from './common';
import { NavContext } from './nav/context';
import { Nav } from './nav/nav';
-interface LayoutProps {
- content: ReactNode;
-}
-
interface RightPanelContextType {
isOpen: boolean;
rightPanelContent: ReactNode;
@@ -81,14 +72,7 @@ export function useMediaQuery(query: string) {
return value;
}
-export function Layout({ content }: LayoutProps) {
- const serverConfig = useServerConfig();
- const {
- data: { currentUser },
- } = useQuery({
- query: getCurrentUserFeaturesQuery,
- });
-
+export function Layout({ children }: PropsWithChildren) {
const [rightPanelContent, setRightPanelContent] = useState
(null);
const [open, setOpen] = useState(false);
const rightPanelRef = useRef(null);
@@ -126,26 +110,6 @@ export function Layout({ content }: LayoutProps) {
[closePanel, openPanel]
);
- const navigate = useNavigate();
-
- useEffect(() => {
- if (serverConfig.initialized === false) {
- navigate('/admin/setup');
- return;
- } else if (!currentUser) {
- navigate('/admin/auth');
- return;
- } else if (!currentUser?.features.includes?.(FeatureType.Admin)) {
- toast.error('You are not an admin, please login the admin account.');
- navigate('/admin/auth');
- return;
- }
- }, [currentUser, navigate, serverConfig.initialized]);
-
- if (serverConfig.initialized === false || !currentUser) {
- return null;
- }
-
return (
- {content}
+ {children}
{
- fetch('/api/auth/sign-out', {
- method: 'POST',
- })
+ fetch('/api/auth/sign-out')
.then(() => {
toast.success('Logged out successfully');
- navigate('/admin/auth');
+ relative();
})
.catch(err => {
toast.error(`Failed to logout: ${err.message}`);
});
- }, [navigate]);
-
- useEffect(() => {
- if (serverConfig.initialized === false) {
- navigate('/admin/setup');
- return;
- }
- if (!currentUser) {
- navigate('/admin/auth');
- return;
- }
- if (!currentUser?.features.includes?.(FeatureType.Admin)) {
- toast.error('You are not an admin, please login the admin account.');
- navigate('/admin/auth');
- return;
- }
- }, [currentUser, navigate, serverConfig.initialized]);
+ }, [relative]);
return (
diff --git a/packages/frontend/admin/src/modules/settings/index.tsx b/packages/frontend/admin/src/modules/settings/index.tsx
index 6aa25dd2f9..9d5770fa5d 100644
--- a/packages/frontend/admin/src/modules/settings/index.tsx
+++ b/packages/frontend/admin/src/modules/settings/index.tsx
@@ -6,7 +6,6 @@ import { CheckIcon } from 'lucide-react';
import type { Dispatch, SetStateAction } from 'react';
import { useCallback, useMemo, useState } from 'react';
-import { Layout } from '../layout';
import { useNav } from '../nav/context';
import { ConfirmChanges } from './confirm-changes';
import { RuntimeSettingRow } from './runtime-setting-row';
@@ -25,10 +24,6 @@ export type ModifiedValues = {
newValue: any;
};
-export function Settings() {
- return
} />;
-}
-
export function SettingsPage() {
const { trigger } = useUpdateServerRuntimeConfigs();
const { serverRuntimeConfig } = useGetServerRuntimeConfig();
@@ -190,4 +185,4 @@ export const AdminPanel = ({
);
};
-export { Settings as Component };
+export { SettingsPage as Component };
diff --git a/packages/frontend/admin/src/modules/setup/index.tsx b/packages/frontend/admin/src/modules/setup/index.tsx
index 7bd1dbd1e2..dd41c459c9 100644
--- a/packages/frontend/admin/src/modules/setup/index.tsx
+++ b/packages/frontend/admin/src/modules/setup/index.tsx
@@ -1,7 +1,16 @@
+import { Navigate } from 'react-router-dom';
+
+import { useServerConfig } from '../common';
import { Form } from './form';
import logo from './logo.svg';
export function Setup() {
+ const config = useServerConfig();
+
+ if (config.initialized) {
+ return
;
+ }
+
return (