diff --git a/ui/src/components/certimate/AccessAliyunForm.tsx b/ui/src/components/certimate/AccessAliyunForm.tsx
index f64800b5..2b1d818c 100644
--- a/ui/src/components/certimate/AccessAliyunForm.tsx
+++ b/ui/src/components/certimate/AccessAliyunForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, AliyunConfig, accessFormType, getUsageByConfigType } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessAliyunFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessAliyunFormProps = {
 };
 
 const AccessAliyunForm = ({ data, op, onAfterReq }: AccessAliyunFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessAwsForm.tsx b/ui/src/components/certimate/AccessAwsForm.tsx
index 9baac3c7..94a4aedb 100644
--- a/ui/src/components/certimate/AccessAwsForm.tsx
+++ b/ui/src/components/certimate/AccessAwsForm.tsx
@@ -10,7 +10,7 @@ import { Button } from "@/components/ui/button";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, AwsConfig, getUsageByConfigType } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessAwsFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessAwsFormProps = {
 };
 
 const AccessAwsForm = ({ data, op, onAfterReq }: AccessAwsFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessCloudflareForm.tsx b/ui/src/components/certimate/AccessCloudflareForm.tsx
index 4451dbad..0f156eee 100644
--- a/ui/src/components/certimate/AccessCloudflareForm.tsx
+++ b/ui/src/components/certimate/AccessCloudflareForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, CloudflareConfig, getUsageByConfigType } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessCloudflareFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessCloudflareFormProps = {
 };
 
 const AccessCloudflareForm = ({ data, op, onAfterReq }: AccessCloudflareFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessEditDialog.tsx b/ui/src/components/certimate/AccessEditDialog.tsx
index 8c70a148..c44a7f52 100644
--- a/ui/src/components/certimate/AccessEditDialog.tsx
+++ b/ui/src/components/certimate/AccessEditDialog.tsx
@@ -207,7 +207,13 @@ const AccessEditDialog = ({ trigger, op, data, className }: AccessEditProps) =>
       <DialogContent className="sm:max-w-[600px] w-full dark:text-stone-200">
         <DialogHeader>
           <DialogTitle>
-            {op == "add" ? t("access.authorization.add") : op == "edit" ? t("access.authorization.edit") : t("access.authorization.copy")}
+            {
+              {
+                ["add"]: t("access.authorization.add"),
+                ["edit"]: t("access.authorization.edit"),
+                ["copy"]: t("access.authorization.copy"),
+              }[op]
+            }
           </DialogTitle>
         </DialogHeader>
         <ScrollArea className="max-h-[80vh]">
diff --git a/ui/src/components/certimate/AccessGodaddyForm.tsx b/ui/src/components/certimate/AccessGodaddyForm.tsx
index 99484d4a..39325fff 100644
--- a/ui/src/components/certimate/AccessGodaddyForm.tsx
+++ b/ui/src/components/certimate/AccessGodaddyForm.tsx
@@ -10,7 +10,7 @@ import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, getUsageByConfigType, GodaddyConfig } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessGodaddyFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessGodaddyFormProps = {
 };
 
 const AccessGodaddyForm = ({ data, op, onAfterReq }: AccessGodaddyFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessGroupEdit.tsx b/ui/src/components/certimate/AccessGroupEdit.tsx
index 8f809fd3..68d881a3 100644
--- a/ui/src/components/certimate/AccessGroupEdit.tsx
+++ b/ui/src/components/certimate/AccessGroupEdit.tsx
@@ -12,7 +12,7 @@ import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "
 import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { update } from "@/repository/access_group";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessGroupEditProps = {
   className?: string;
@@ -20,7 +20,7 @@ type AccessGroupEditProps = {
 };
 
 const AccessGroupEdit = ({ className, trigger }: AccessGroupEditProps) => {
-  const { reloadAccessGroups } = useConfig();
+  const { reloadAccessGroups } = useConfigContext();
 
   const [open, setOpen] = useState(false);
   const { t } = useTranslation();
diff --git a/ui/src/components/certimate/AccessGroupList.tsx b/ui/src/components/certimate/AccessGroupList.tsx
index a5b97998..704b49f5 100644
--- a/ui/src/components/certimate/AccessGroupList.tsx
+++ b/ui/src/components/certimate/AccessGroupList.tsx
@@ -21,14 +21,14 @@ import { useToast } from "@/components/ui/use-toast";
 import AccessGroupEdit from "./AccessGroupEdit";
 import { getProviderInfo } from "@/domain/access";
 import { getErrMessage } from "@/lib/error";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 import { remove } from "@/repository/access_group";
 
 const AccessGroupList = () => {
   const {
     config: { accessGroups },
     reloadAccessGroups,
-  } = useConfig();
+  } = useConfigContext();
 
   const { toast } = useToast();
 
diff --git a/ui/src/components/certimate/AccessHttpreqForm.tsx b/ui/src/components/certimate/AccessHttpreqForm.tsx
index 2eb63bea..b8527fbb 100644
--- a/ui/src/components/certimate/AccessHttpreqForm.tsx
+++ b/ui/src/components/certimate/AccessHttpreqForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, HttpreqConfig, accessFormType, getUsageByConfigType } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessHttpreqFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessHttpreqFormProps = {
 };
 
 const AccessHttpreqForm = ({ data, op, onAfterReq }: AccessHttpreqFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessHuaweicloudForm.tsx b/ui/src/components/certimate/AccessHuaweicloudForm.tsx
index 01b49317..d70bd994 100644
--- a/ui/src/components/certimate/AccessHuaweicloudForm.tsx
+++ b/ui/src/components/certimate/AccessHuaweicloudForm.tsx
@@ -10,7 +10,7 @@ import { Button } from "@/components/ui/button";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, HuaweiCloudConfig, getUsageByConfigType } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessHuaweiCloudFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessHuaweiCloudFormProps = {
 };
 
 const AccessHuaweiCloudForm = ({ data, op, onAfterReq }: AccessHuaweiCloudFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessKubernetesForm.tsx b/ui/src/components/certimate/AccessKubernetesForm.tsx
index 7939783a..aa23089a 100644
--- a/ui/src/components/certimate/AccessKubernetesForm.tsx
+++ b/ui/src/components/certimate/AccessKubernetesForm.tsx
@@ -12,7 +12,7 @@ import { Input } from "@/components/ui/input";
 import { readFileContent } from "@/lib/file";
 import { PbErrorData } from "@/domain/base";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessKubernetesFormProps = {
   op: "add" | "edit" | "copy";
@@ -21,7 +21,7 @@ type AccessKubernetesFormProps = {
 };
 
 const AccessKubernetesForm = ({ data, op, onAfterReq }: AccessKubernetesFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
 
   const fileInputRef = useRef<HTMLInputElement | null>(null);
   const [fileName, setFileName] = useState("");
@@ -119,7 +119,7 @@ const AccessKubernetesForm = ({ data, op, onAfterReq }: AccessKubernetesFormProp
             e.stopPropagation();
             form.handleSubmit(onSubmit)(e);
           }}
-          className="space-y-3"
+          className="space-y-8"
         >
           <FormField
             control={form.control}
diff --git a/ui/src/components/certimate/AccessLocalForm.tsx b/ui/src/components/certimate/AccessLocalForm.tsx
index 300ac453..5c08a257 100644
--- a/ui/src/components/certimate/AccessLocalForm.tsx
+++ b/ui/src/components/certimate/AccessLocalForm.tsx
@@ -10,7 +10,7 @@ import { Button } from "@/components/ui/button";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, getUsageByConfigType } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessLocalFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessLocalFormProps = {
 };
 
 const AccessLocalForm = ({ data, op, onAfterReq }: AccessLocalFormProps) => {
-  const { addAccess, updateAccess, reloadAccessGroups } = useConfig();
+  const { addAccess, updateAccess, reloadAccessGroups } = useConfigContext();
   const { t } = useTranslation();
 
   const formSchema = z.object({
@@ -88,7 +88,7 @@ const AccessLocalForm = ({ data, op, onAfterReq }: AccessLocalFormProps) => {
             e.stopPropagation();
             form.handleSubmit(onSubmit)(e);
           }}
-          className="space-y-3"
+          className="space-y-8"
         >
           <FormField
             control={form.control}
diff --git a/ui/src/components/certimate/AccessNamesiloForm.tsx b/ui/src/components/certimate/AccessNamesiloForm.tsx
index f87f2a6a..c01dbf32 100644
--- a/ui/src/components/certimate/AccessNamesiloForm.tsx
+++ b/ui/src/components/certimate/AccessNamesiloForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, getUsageByConfigType, NamesiloConfig } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessNamesiloFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessNamesiloFormProps = {
 };
 
 const AccessNamesiloForm = ({ data, op, onAfterReq }: AccessNamesiloFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessPdnsForm.tsx b/ui/src/components/certimate/AccessPdnsForm.tsx
index e5aa5c7a..37a00f9c 100644
--- a/ui/src/components/certimate/AccessPdnsForm.tsx
+++ b/ui/src/components/certimate/AccessPdnsForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, PdnsConfig, accessFormType, getUsageByConfigType } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessPdnsFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessPdnsFormProps = {
 };
 
 const AccessPdnsForm = ({ data, op, onAfterReq }: AccessPdnsFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessQiniuForm.tsx b/ui/src/components/certimate/AccessQiniuForm.tsx
index cff0e5db..8d73bf00 100644
--- a/ui/src/components/certimate/AccessQiniuForm.tsx
+++ b/ui/src/components/certimate/AccessQiniuForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, getUsageByConfigType, QiniuConfig } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessQiniuFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessQiniuFormProps = {
 };
 
 const AccessQiniuForm = ({ data, op, onAfterReq }: AccessQiniuFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessSSHForm.tsx b/ui/src/components/certimate/AccessSSHForm.tsx
index 852093c6..024c2554 100644
--- a/ui/src/components/certimate/AccessSSHForm.tsx
+++ b/ui/src/components/certimate/AccessSSHForm.tsx
@@ -17,7 +17,7 @@ import { cn } from "@/lib/utils";
 import { PbErrorData } from "@/domain/base";
 import { save } from "@/repository/access";
 import { updateById } from "@/repository/access_group";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessSSHFormProps = {
   op: "add" | "edit" | "copy";
@@ -31,7 +31,7 @@ const AccessSSHForm = ({ data, op, onAfterReq }: AccessSSHFormProps) => {
     updateAccess,
     reloadAccessGroups,
     config: { accessGroups },
-  } = useConfig();
+  } = useConfigContext();
 
   const fileInputRef = useRef<HTMLInputElement | null>(null);
 
@@ -199,7 +199,7 @@ const AccessSSHForm = ({ data, op, onAfterReq }: AccessSSHFormProps) => {
             e.stopPropagation();
             form.handleSubmit(onSubmit)(e);
           }}
-          className="space-y-3"
+          className="space-y-8"
         >
           <FormField
             control={form.control}
diff --git a/ui/src/components/certimate/AccessTencentForm.tsx b/ui/src/components/certimate/AccessTencentForm.tsx
index 805b1d77..a3aa55d3 100644
--- a/ui/src/components/certimate/AccessTencentForm.tsx
+++ b/ui/src/components/certimate/AccessTencentForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, getUsageByConfigType, TencentConfig } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessTencentFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessTencentFormProps = {
 };
 
 const AccessTencentForm = ({ data, op, onAfterReq }: AccessTencentFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/AccessWebhookForm.tsx b/ui/src/components/certimate/AccessWebhookForm.tsx
index ef1c2f73..40f8f56d 100644
--- a/ui/src/components/certimate/AccessWebhookForm.tsx
+++ b/ui/src/components/certimate/AccessWebhookForm.tsx
@@ -10,7 +10,7 @@ import { Input } from "@/components/ui/input";
 import { PbErrorData } from "@/domain/base";
 import { Access, accessFormType, getUsageByConfigType, WebhookConfig } from "@/domain/access";
 import { save } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type AccessWebhookFormProps = {
   op: "add" | "edit" | "copy";
@@ -19,7 +19,7 @@ type AccessWebhookFormProps = {
 };
 
 const AccessWebhookForm = ({ data, op, onAfterReq }: AccessWebhookFormProps) => {
-  const { addAccess, updateAccess } = useConfig();
+  const { addAccess, updateAccess } = useConfigContext();
   const { t } = useTranslation();
   const formSchema = z.object({
     id: z.string().optional(),
diff --git a/ui/src/components/certimate/EmailsEdit.tsx b/ui/src/components/certimate/EmailsEdit.tsx
index ceb1d5d6..d4bd5af4 100644
--- a/ui/src/components/certimate/EmailsEdit.tsx
+++ b/ui/src/components/certimate/EmailsEdit.tsx
@@ -13,7 +13,7 @@ import { cn } from "@/lib/utils";
 import { PbErrorData } from "@/domain/base";
 import { EmailsSetting } from "@/domain/settings";
 import { update } from "@/repository/settings";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 type EmailsEditProps = {
   className?: string;
@@ -24,7 +24,7 @@ const EmailsEdit = ({ className, trigger }: EmailsEditProps) => {
   const {
     config: { emails },
     setEmails,
-  } = useConfig();
+  } = useConfigContext();
 
   const [open, setOpen] = useState(false);
   const { t } = useTranslation();
diff --git a/ui/src/components/notify/DingTalk.tsx b/ui/src/components/notify/DingTalk.tsx
index 585642f7..c3841144 100644
--- a/ui/src/components/notify/DingTalk.tsx
+++ b/ui/src/components/notify/DingTalk.tsx
@@ -8,7 +8,7 @@ import { Switch } from "@/components/ui/switch";
 import { useToast } from "@/components/ui/use-toast";
 import { getErrMessage } from "@/lib/error";
 import { NotifyChannelDingTalk, NotifyChannels } from "@/domain/settings";
-import { useNotify } from "@/providers/notify";
+import { useNotifyContext } from "@/providers/notify";
 import { update } from "@/repository/settings";
 import Show from "@/components/Show";
 import { notifyTest } from "@/api/notify";
@@ -20,7 +20,7 @@ type DingTalkSetting = {
 };
 
 const DingTalk = () => {
-  const { config, setChannels } = useNotify();
+  const { config, setChannels } = useNotifyContext();
   const { t } = useTranslation();
 
   const [changed, setChanged] = useState<boolean>(false);
@@ -241,4 +241,3 @@ const DingTalk = () => {
 };
 
 export default DingTalk;
-
diff --git a/ui/src/components/notify/Lark.tsx b/ui/src/components/notify/Lark.tsx
index eb6aa8f1..f8bf7534 100644
--- a/ui/src/components/notify/Lark.tsx
+++ b/ui/src/components/notify/Lark.tsx
@@ -2,7 +2,7 @@ import { Input } from "@/components/ui/input";
 import { Button } from "@/components/ui/button";
 import { Switch } from "@/components/ui/switch";
 import { Label } from "@/components/ui/label";
-import { useNotify } from "@/providers/notify";
+import { useNotifyContext } from "@/providers/notify";
 import { NotifyChannelLark, NotifyChannels } from "@/domain/settings";
 import { useEffect, useState } from "react";
 import { update } from "@/repository/settings";
@@ -19,7 +19,7 @@ type LarkSetting = {
 };
 
 const Lark = () => {
-  const { config, setChannels } = useNotify();
+  const { config, setChannels } = useNotifyContext();
   const { t } = useTranslation();
 
   const [changed, setChanged] = useState<boolean>(false);
@@ -222,4 +222,3 @@ const Lark = () => {
 };
 
 export default Lark;
-
diff --git a/ui/src/components/notify/Telegram.tsx b/ui/src/components/notify/Telegram.tsx
index 7f30e03b..419126fc 100644
--- a/ui/src/components/notify/Telegram.tsx
+++ b/ui/src/components/notify/Telegram.tsx
@@ -9,7 +9,7 @@ import { useToast } from "@/components/ui/use-toast";
 import { getErrMessage } from "@/lib/error";
 import { NotifyChannels, NotifyChannelTelegram } from "@/domain/settings";
 import { update } from "@/repository/settings";
-import { useNotify } from "@/providers/notify";
+import { useNotifyContext } from "@/providers/notify";
 import { notifyTest } from "@/api/notify";
 import Show from "@/components/Show";
 
@@ -20,7 +20,7 @@ type TelegramSetting = {
 };
 
 const Telegram = () => {
-  const { config, setChannels } = useNotify();
+  const { config, setChannels } = useNotifyContext();
   const { t } = useTranslation();
 
   const [changed, setChanged] = useState<boolean>(false);
@@ -244,4 +244,3 @@ const Telegram = () => {
 };
 
 export default Telegram;
-
diff --git a/ui/src/components/notify/Webhook.tsx b/ui/src/components/notify/Webhook.tsx
index 09409ded..b614b50c 100644
--- a/ui/src/components/notify/Webhook.tsx
+++ b/ui/src/components/notify/Webhook.tsx
@@ -10,7 +10,7 @@ import { getErrMessage } from "@/lib/error";
 import { isValidURL } from "@/lib/url";
 import { NotifyChannels, NotifyChannelWebhook } from "@/domain/settings";
 import { update } from "@/repository/settings";
-import { useNotify } from "@/providers/notify";
+import { useNotifyContext } from "@/providers/notify";
 import { notifyTest } from "@/api/notify";
 import Show from "@/components/Show";
 
@@ -21,7 +21,7 @@ type WebhookSetting = {
 };
 
 const Webhook = () => {
-  const { config, setChannels } = useNotify();
+  const { config, setChannels } = useNotifyContext();
   const { t } = useTranslation();
   const [changed, setChanged] = useState<boolean>(false);
 
@@ -234,4 +234,3 @@ const Webhook = () => {
 };
 
 export default Webhook;
-
diff --git a/ui/src/pages/access/Access.tsx b/ui/src/pages/access/Access.tsx
index 910838d7..ac3b6549 100644
--- a/ui/src/pages/access/Access.tsx
+++ b/ui/src/pages/access/Access.tsx
@@ -23,11 +23,11 @@ import XPagination from "@/components/certimate/XPagination";
 import { convertZulu2Beijing } from "@/lib/time";
 import { Access as AccessType, accessTypeMap } from "@/domain/access";
 import { remove } from "@/repository/access";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 
 const Access = () => {
   const { t } = useTranslation();
-  const { config, deleteAccess } = useConfig();
+  const { config, deleteAccess } = useConfigContext();
   const { accesses } = config;
 
   const perPage = 10;
diff --git a/ui/src/pages/domains/Edit.tsx b/ui/src/pages/domains/Edit.tsx
index d882b5cc..66e66a30 100644
--- a/ui/src/pages/domains/Edit.tsx
+++ b/ui/src/pages/domains/Edit.tsx
@@ -25,14 +25,14 @@ import { accessTypeMap } from "@/domain/access";
 import { EmailsSetting } from "@/domain/settings";
 import { DeployConfig, Domain } from "@/domain/domain";
 import { save, get } from "@/repository/domains";
-import { useConfig } from "@/providers/config";
+import { useConfigContext } from "@/providers/config";
 import { Switch } from "@/components/ui/switch";
 import { TooltipFast } from "@/components/ui/tooltip";
 
 const Edit = () => {
   const {
     config: { accesses, emails },
-  } = useConfig();
+  } = useConfigContext();
 
   const [domain, setDomain] = useState<Domain>({} as Domain);
 
diff --git a/ui/src/providers/config/index.tsx b/ui/src/providers/config/index.tsx
index ccc884f1..67455c49 100644
--- a/ui/src/providers/config/index.tsx
+++ b/ui/src/providers/config/index.tsx
@@ -26,13 +26,13 @@ export type ConfigContext = {
 
 const Context = createContext({} as ConfigContext);
 
-export const useConfig = () => useContext(Context);
+export const useConfigContext = () => useContext(Context);
 
-interface ContainerProps {
+interface ConfigProviderProps {
   children: ReactNode;
 }
 
-export const ConfigProvider = ({ children }: ContainerProps) => {
+export const ConfigProvider = ({ children }: ConfigProviderProps) => {
   const [config, dispatchConfig] = useReducer(configReducer, {
     accesses: [],
     emails: { content: { emails: [] } },
diff --git a/ui/src/providers/notify/index.tsx b/ui/src/providers/notify/index.tsx
index 66cdda27..a0e9c195 100644
--- a/ui/src/providers/notify/index.tsx
+++ b/ui/src/providers/notify/index.tsx
@@ -12,12 +12,13 @@ export type NotifyContext = {
 
 const Context = createContext({} as NotifyContext);
 
-export const useNotify = () => useContext(Context);
-interface ContainerProps {
+export const useNotifyContext = () => useContext(Context);
+
+interface NotifyProviderProps {
   children: ReactNode;
 }
 
-export const NotifyProvider = ({ children }: ContainerProps) => {
+export const NotifyProvider = ({ children }: NotifyProviderProps) => {
   const [notify, dispatchNotify] = useReducer(notifyReducer, {});
 
   useEffect(() => {