From 1a874120ce1ef2ea772fe0a52614c33dfb91e994 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Mon, 21 Oct 2024 00:03:32 +0800 Subject: [PATCH] feat: get server configs --- apps/renderer/src/atoms/server-configs.ts | 8 ++++++ apps/renderer/src/models/types.ts | 2 ++ .../renderer/src/providers/root-providers.tsx | 2 ++ .../src/providers/server-configs-provider.tsx | 15 ++++++++++ apps/renderer/src/queries/server-configs.ts | 12 ++++++++ packages/shared/src/hono.ts | 28 ++++++++++++++++++- 6 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 apps/renderer/src/atoms/server-configs.ts create mode 100644 apps/renderer/src/providers/server-configs-provider.tsx create mode 100644 apps/renderer/src/queries/server-configs.ts diff --git a/apps/renderer/src/atoms/server-configs.ts b/apps/renderer/src/atoms/server-configs.ts new file mode 100644 index 000000000..d48daba17 --- /dev/null +++ b/apps/renderer/src/atoms/server-configs.ts @@ -0,0 +1,8 @@ +import { atom } from "jotai" + +import { createAtomHooks } from "~/lib/jotai" +import type { ServerConfigs } from "~/models" + +export const [, , useServerConfigs, , getServerConfigs, setServerConfigs] = createAtomHooks( + atom>(null), +) diff --git a/apps/renderer/src/models/types.ts b/apps/renderer/src/models/types.ts index 6fe67938d..822eb8acf 100644 --- a/apps/renderer/src/models/types.ts +++ b/apps/renderer/src/models/types.ts @@ -123,3 +123,5 @@ export type ActionsInput = { export const TransactionTypes = ["mint", "purchase", "tip", "withdraw"] as const export type WalletModel = ExtractBizResponse["data"][number] + +export type ServerConfigs = ExtractBizResponse["data"] diff --git a/apps/renderer/src/providers/root-providers.tsx b/apps/renderer/src/providers/root-providers.tsx index 9b357e3a7..c98d2cf16 100644 --- a/apps/renderer/src/providers/root-providers.tsx +++ b/apps/renderer/src/providers/root-providers.tsx @@ -23,6 +23,7 @@ import { LazyModalStackProvider, // specific import should add `index` postfix } from "./lazy/index" +import { ServerConfigsProvider } from "./server-configs-provider" import { SettingSync } from "./setting-sync" import { StableRouterProvider } from "./stable-router-provider" import { UserProvider } from "./user-provider" @@ -44,6 +45,7 @@ export const RootProviders: FC = ({ children }) => ( + diff --git a/apps/renderer/src/providers/server-configs-provider.tsx b/apps/renderer/src/providers/server-configs-provider.tsx new file mode 100644 index 000000000..112acc554 --- /dev/null +++ b/apps/renderer/src/providers/server-configs-provider.tsx @@ -0,0 +1,15 @@ +import { useEffect } from "react" + +import { setServerConfigs } from "~/atoms/server-configs" +import { useServerConfigsQuery } from "~/queries/server-configs" + +export const ServerConfigsProvider = () => { + const serverConfigs = useServerConfigsQuery() + + useEffect(() => { + if (!serverConfigs) return + setServerConfigs(serverConfigs) + }, [serverConfigs]) + + return null +} diff --git a/apps/renderer/src/queries/server-configs.ts b/apps/renderer/src/queries/server-configs.ts new file mode 100644 index 000000000..108341586 --- /dev/null +++ b/apps/renderer/src/queries/server-configs.ts @@ -0,0 +1,12 @@ +import { useAuthQuery } from "~/hooks/common" +import { apiClient } from "~/lib/api-fetch" +import { defineQuery } from "~/lib/defineQuery" + +export const serverConfigs = { + get: () => defineQuery(["server-configs"], async () => await apiClient.status.configs.$get()), +} + +export const useServerConfigsQuery = () => { + const { data } = useAuthQuery(serverConfigs.get()) + return data?.data +} diff --git a/packages/shared/src/hono.ts b/packages/shared/src/hono.ts index 793ff12e9..9379b6a65 100644 --- a/packages/shared/src/hono.ts +++ b/packages/shared/src/hono.ts @@ -4431,6 +4431,33 @@ declare const levelsRelations: drizzle_orm.Relations<"levels", { }>; declare const _routes: hono_hono_base.HonoBase