Dashboard Redesign (#48)

* feat: add user_template setting

* style: header

* style: page padding

* style: header

* feat: header now time

* style: login page

* feat: nav indicator

* style: button inset shadow

* style: footer text size

* feat: header show login_ip

* fix: error toast

* fix: frontend_templates setting

* fix: lint

* feat: pr auto format

* chore: auto-fix linting and formatting issues

---------

Co-authored-by: hamster1963 <hamster1963@users.noreply.github.com>
This commit is contained in:
仓鼠
2024-12-13 23:51:33 +08:00
committed by GitHub
parent b04ef1bb72
commit 8c8d3e3057
132 changed files with 13242 additions and 12878 deletions

View File

@@ -1,56 +1,71 @@
import { createContext, useContext, useEffect, useMemo } from "react"
import { useServerStore } from "./useServerStore"
import { getServerGroups } from "@/api/server-group"
import { getServers } from "@/api/server"
import { getServerGroups } from "@/api/server-group"
import { ServerContextProps } from "@/types"
import { createContext, useContext, useEffect, useMemo } from "react"
import { useLocation } from "react-router-dom"
import { toast } from "sonner"
const ServerContext = createContext<ServerContextProps>({});
import { useServerStore } from "./useServerStore"
const ServerContext = createContext<ServerContextProps>({})
interface ServerProviderProps {
children: React.ReactNode;
withServer?: boolean;
withServerGroup?: boolean;
children: React.ReactNode
withServer?: boolean
withServerGroup?: boolean
}
export const ServerProvider: React.FC<ServerProviderProps> = ({ children, withServer, withServerGroup }) => {
const serverGroup = useServerStore(store => store.serverGroup);
const setServerGroup = useServerStore(store => store.setServerGroup);
export const ServerProvider: React.FC<ServerProviderProps> = ({
children,
withServer,
withServerGroup,
}) => {
const serverGroup = useServerStore((store) => store.serverGroup)
const setServerGroup = useServerStore((store) => store.setServerGroup)
const server = useServerStore(store => store.server);
const setServer = useServerStore(store => store.setServer);
const server = useServerStore((store) => store.server)
const setServer = useServerStore((store) => store.setServer)
const location = useLocation();
const location = useLocation()
useEffect(() => {
if (withServerGroup)
(async () => {
try {
const sg = await getServerGroups();
setServerGroup(sg);
} catch (error) {
setServerGroup(undefined);
const sg = await getServerGroups()
setServerGroup(sg)
} catch (error: any) {
toast("ServerProvider Error", {
description: error.message,
})
setServerGroup(undefined)
}
})();
})()
if (withServer)
(async () => {
try {
const s = await getServers();
const serverData = s.map(({ id, name }) => ({ id, name }));
setServer(serverData);
} catch (error) {
setServer(undefined);
const s = await getServers()
const serverData = s.map(({ id, name }) => ({ id, name }))
setServer(serverData)
} catch (error: any) {
toast("ServerProvider Error", {
description: error.message,
})
setServer(undefined)
}
})();
})()
}, [location.pathname])
const value: ServerContextProps = useMemo(() => ({
servers: server,
serverGroups: serverGroup,
}), [server, serverGroup]);
return <ServerContext.Provider value={value}>{children}</ServerContext.Provider>;
const value: ServerContextProps = useMemo(
() => ({
servers: server,
serverGroups: serverGroup,
}),
[server, serverGroup],
)
return <ServerContext.Provider value={value}>{children}</ServerContext.Provider>
}
export const useServer = () => {
return useContext(ServerContext);
};
return useContext(ServerContext)
}