fix(gateway): decouple admin navigation loading

This commit is contained in:
2026-08-09 11:51:00 +00:00
parent fd0f874d55
commit 7361828641
9 changed files with 141 additions and 23 deletions
@@ -2,7 +2,7 @@
import { computed, onMounted, ref } from 'vue';
import DefaultLayout from './DefaultLayout.vue';
import { useAuthStore } from '../stores/auth';
import { trpc } from '../utils/trpc';
import { directTrpc } from '../utils/trpc';
defineProps<{
title: string;
@@ -12,10 +12,10 @@ defineProps<{
const menuOpen = ref(false);
const auth = useAuthStore();
const adminClient = trpc.admin as unknown as {
const adminNavigationClient = directTrpc.admin as unknown as {
capabilities: { list: { query: () => Promise<Array<{ permission: string; scopes?: string[] }>> } };
profiles: {
list: {
listNavigation: {
query: () => Promise<Array<{ profileName: string; profile: string; meta?: Record<string, unknown> }>>;
};
};
@@ -110,8 +110,8 @@ const navigation = computed(() => [
onMounted(async () => {
const [capabilityResult, profileResult] = await Promise.allSettled([
adminClient.capabilities.list.query(),
adminClient.profiles.list.query(),
adminNavigationClient.capabilities.list.query(),
adminNavigationClient.profiles.listNavigation.query(),
]);
capabilities.value = capabilityResult.status === 'fulfilled' ? capabilityResult.value : [];
profiles.value = profileResult.status === 'fulfilled' ? profileResult.value : [];
+13 -1
View File
@@ -1,4 +1,4 @@
import { createTRPCProxyClient, httpBatchLink } from '@trpc/client';
import { createTRPCProxyClient, httpBatchLink, httpLink } from '@trpc/client';
import type { AppRouter } from '@sammo-ts/gateway-api';
const getSessionToken = (): string | null => {
@@ -19,3 +19,15 @@ export const trpc = createTRPCProxyClient<AppRouter>({
}),
],
});
export const directTrpc = createTRPCProxyClient<AppRouter>({
links: [
httpLink({
url: import.meta.env.VITE_GATEWAY_API_URL ?? '/api/trpc',
headers() {
const token = getSessionToken();
return token ? { 'x-session-token': token } : {};
},
}),
],
});