diff --git a/src/components/Advanced.tsx b/src/components/Advanced.tsx index dafda2d..b1a876c 100644 --- a/src/components/Advanced.tsx +++ b/src/components/Advanced.tsx @@ -10,14 +10,14 @@ import { import { ConfigEditor } from "./ConfigEditor"; import { Button, Input, Label } from "./ui"; import { Check, Edit2, HelpCircle, X, ExternalLink, Copy } from "lucide-react"; -import { useDashboardToken } from "../services/api/hooks/useUtilities"; +import { useInstanceDashboardToken } from "../services/api/hooks/useUtilities"; import { useInstance } from "../services/api"; export function Advanced() { const { instanceId } = useParams<{ instanceId: string }>(); const [copied, setCopied] = useState(false); const { data: instance } = useInstance(instanceId || ''); - const { data: dashboardToken, isLoading: tokenLoading } = useDashboardToken(); + const { data: dashboardToken, isLoading: tokenLoading } = useInstanceDashboardToken(instanceId || ''); const [upstreamValue, setUpstreamValue] = useState("https://mywildcloud.org"); const [editingUpstream, setEditingUpstream] = useState(false); diff --git a/src/services/api/hooks/useUtilities.ts b/src/services/api/hooks/useUtilities.ts index 220a173..e58a95d 100644 --- a/src/services/api/hooks/useUtilities.ts +++ b/src/services/api/hooks/useUtilities.ts @@ -9,6 +9,15 @@ export function useDashboardToken() { }); } +export function useInstanceDashboardToken(instanceId: string) { + return useQuery({ + queryKey: ['instances', instanceId, 'utilities', 'dashboard', 'token'], + queryFn: () => utilitiesApi.getInstanceDashboardToken(instanceId), + staleTime: 30 * 60 * 1000, // 30 minutes + enabled: !!instanceId, + }); +} + export function useClusterVersions() { return useQuery({ queryKey: ['utilities', 'version'], diff --git a/src/services/api/utilities.ts b/src/services/api/utilities.ts index e748415..6444d7d 100644 --- a/src/services/api/utilities.ts +++ b/src/services/api/utilities.ts @@ -24,6 +24,11 @@ export const utilitiesApi = { return response.data; }, + async getInstanceDashboardToken(instanceName: string): Promise<{ token: string }> { + const response = await apiClient.get<{ data: { token: string }; success: boolean }>(`/api/v1/instances/${instanceName}/utilities/dashboard/token`); + return response.data; + }, + async getNodeIPs(): Promise<{ ips: string[] }> { return apiClient.get('/api/v1/utilities/nodes/ips'); },