diff --git a/src/api/domain.ts b/src/api/domain.ts index ef3d08a..65eddd6 100644 --- a/src/api/domain.ts +++ b/src/api/domain.ts @@ -51,3 +51,8 @@ export const updateDomain = ( export const syncDomainWHOIS = (id: number) => { return fetcher(FetcherMethod.POST, `/api/v1/domains/${id}/sync`) } + +// 同步所有域名 +export const syncAllDomains = () => { + return fetcher(FetcherMethod.POST, "/api/v1/domains/sync-all") +} diff --git a/src/components/notifier.tsx b/src/components/notifier.tsx index cbb130e..d3ad6d3 100644 --- a/src/components/notifier.tsx +++ b/src/components/notifier.tsx @@ -55,9 +55,9 @@ const notificationFormSchema = z.object({ request_type: z.coerce.number().int().min(1).max(255), request_header: z.string(), request_body: z.string(), - verify_tls: asOptionalField(z.boolean()), - skip_check: asOptionalField(z.boolean()), - format_metric_units: asOptionalField(z.boolean()), + verify_tls: z.boolean().default(false), + skip_check: z.boolean().default(false), + format_metric_units: z.boolean().default(false), type: z.coerce.number().int().default(1), }) @@ -75,9 +75,9 @@ export const NotifierCard: React.FC = ({ data, mutate }) => { request_type: data.request_type ?? 1, request_header: data.request_header ?? "", request_body: data.request_body ?? "", - verify_tls: (data as any).verify_tls ?? false, - skip_check: (data as any).skip_check ?? false, - format_metric_units: (data as any).format_metric_units ?? false, + verify_tls: data.verify_tls ?? false, + skip_check: data.skip_check ?? false, + format_metric_units: data.format_metric_units ?? false, type: data.type ?? 1, } : { @@ -319,66 +319,64 @@ export const NotifierCard: React.FC = ({ data, mutate }) => { )} /> )} - ( - - -
- -
diff --git a/src/routes/root.tsx b/src/routes/root.tsx index 84b390b..967ab6d 100644 --- a/src/routes/root.tsx +++ b/src/routes/root.tsx @@ -4,7 +4,8 @@ import { Toaster } from "@/components/ui/sonner" import useSetting from "@/hooks/useSetting" import i18n from "@/lib/i18n" import { InjectContext } from "@/lib/inject" -import { useEffect } from "react" +import { DateTime } from "luxon" +import { useEffect, useState } from "react" import { useTranslation } from "react-i18next" import { Outlet } from "react-router-dom" @@ -36,8 +37,10 @@ export default function Root() { return ( -
-
+
+
diff --git a/src/routes/settings.tsx b/src/routes/settings.tsx index f94a6a2..243dc7e 100644 --- a/src/routes/settings.tsx +++ b/src/routes/settings.tsx @@ -57,6 +57,8 @@ const settingFormSchema = z.object({ custom_links: asOptionalField(z.string()), background_image_day: asOptionalField(z.string()), background_image_night: asOptionalField(z.string()), + telegram_bot_token: asOptionalField(z.string()), + telegram_admin_chat_id: asOptionalField(z.string()), }) export default function SettingsPage() { @@ -251,6 +253,32 @@ export default function SettingsPage() { )} /> + ( + + Telegram Bot Token + + + + + + )} + /> + ( + + Telegram Admin Chat ID + + + + + + )} + />