Skip to content

Commit 8187636

Browse files
committed
feat: use simple user-template routes in modals
1 parent 316d7a1 commit 8187636

File tree

3 files changed

+139
-210
lines changed

3 files changed

+139
-210
lines changed

dashboard/src/components/dialogs/user-modal.tsx

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
useCreateUserFromTemplate,
2222
useGetGroupsSimple,
2323
useGetUsers,
24-
useGetUserTemplates,
24+
useGetUserTemplatesSimple,
2525
useModifyUser,
2626
useModifyUserWithTemplate,
2727
type UserResponse,
@@ -500,16 +500,20 @@ export default function UserModal({ isDialogOpen, onOpenChange, form, editingUse
500500
},
501501
)
502502

503-
// Fetch data for tabs without caching
504-
const { data: templatesData, isLoading: templatesLoading } = useGetUserTemplates(undefined, {
505-
query: {
506-
staleTime: 0,
507-
gcTime: 0,
508-
refetchOnMount: true,
509-
refetchOnReconnect: false,
510-
enabled: isDialogOpen,
503+
// Fetch lightweight templates for selector tabs without caching
504+
const { data: templatesData, isLoading: templatesLoading } = useGetUserTemplatesSimple(
505+
{ all: true },
506+
{
507+
query: {
508+
staleTime: 0,
509+
gcTime: 0,
510+
refetchOnMount: true,
511+
refetchOnReconnect: false,
512+
enabled: isDialogOpen,
513+
},
511514
},
512-
})
515+
)
516+
const templateOptions = templatesData?.templates || []
513517

514518
// Prefetch lightweight groups while modal is open so the Groups tab can render immediately.
515519
useGetGroupsSimple(
@@ -2007,7 +2011,7 @@ export default function UserModal({ isDialogOpen, onOpenChange, form, editingUse
20072011
</SelectTrigger>
20082012
<SelectContent>
20092013
<SelectItem value="none">---</SelectItem>
2010-
{(templatesData || []).map((tpl: any) => (
2014+
{templateOptions.map((tpl: any) => (
20112015
<SelectItem key={tpl.id} value={String(tpl.id)}>
20122016
{tpl.name}
20132017
</SelectItem>
@@ -2234,7 +2238,7 @@ export default function UserModal({ isDialogOpen, onOpenChange, form, editingUse
22342238
</SelectTrigger>
22352239
<SelectContent>
22362240
<SelectItem value="none">---</SelectItem>
2237-
{(templatesData || []).map((template: any) => (
2241+
{templateOptions.map((template: any) => (
22382242
<SelectItem key={template.id} value={String(template.id)}>
22392243
{template.name}
22402244
</SelectItem>

dashboard/src/components/dialogs/user-template-modal.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,16 @@ import { Switch } from '@/components/ui/switch.tsx'
99
import useDirDetection from '@/hooks/use-dir-detection'
1010
import useDynamicErrorHandler from '@/hooks/use-dynamic-errors.ts'
1111
import { cn } from '@/lib/utils.ts'
12-
import { DataLimitResetStrategy, ShadowsocksMethods, useCreateUserTemplate, useModifyUserTemplate, UserStatusCreate, XTLSFlows } from '@/service/api'
12+
import {
13+
DataLimitResetStrategy,
14+
getGetUserTemplatesQueryKey,
15+
getGetUserTemplatesSimpleQueryKey,
16+
ShadowsocksMethods,
17+
useCreateUserTemplate,
18+
useModifyUserTemplate,
19+
UserStatusCreate,
20+
XTLSFlows,
21+
} from '@/service/api'
1322
import { queryClient } from '@/utils/query-client.ts'
1423
import { useState } from 'react'
1524
import { UseFormReturn } from 'react-hook-form'
@@ -81,8 +90,9 @@ export default function UserTemplateModal({ isDialogOpen, onOpenChange, form, ed
8190
}),
8291
)
8392
}
84-
// Invalidate nodes queries after successful operation
85-
queryClient.invalidateQueries({ queryKey: ['/api/user_templates'] })
93+
// Invalidate both template list variants used across pages/modals.
94+
queryClient.invalidateQueries({ queryKey: getGetUserTemplatesQueryKey() })
95+
queryClient.invalidateQueries({ queryKey: getGetUserTemplatesSimpleQueryKey() })
8696
onOpenChange(false)
8797
form.reset()
8898
} catch (error: any) {

0 commit comments

Comments
 (0)