- Add index.html as the entry point for the application. - Create App.vue to serve as the main application component with RouterView. - Implement global styles in main.css using Tailwind CSS. - Set up TypeScript definitions for Vue components in env.d.ts. - Configure Vue Router with routes for home, public, login, and not found views. - Extend RouteMeta interface to include authentication-related metadata. - Create a Pinia store for session management with status tracking. - Implement TRPC client for API communication with session token handling. - Develop views for Login, Main, Not Found, and Public with basic structure. - Configure TypeScript for Node with tsconfig.node.json. - Set up Vite configuration for the project with Vue and Tailwind CSS plugins.
23 lines
605 B
TypeScript
23 lines
605 B
TypeScript
import { createTRPCProxyClient, httpBatchLink } from '@trpc/client';
|
|
import type { AppRouter } from '@sammo-ts/game-api';
|
|
|
|
const getSessionToken = (): string | null => {
|
|
if (typeof window === 'undefined') {
|
|
return null;
|
|
}
|
|
|
|
return window.localStorage.getItem('sammo-session-token');
|
|
};
|
|
|
|
export const trpc = createTRPCProxyClient<AppRouter>({
|
|
links: [
|
|
httpBatchLink({
|
|
url: '/api/trpc',
|
|
headers() {
|
|
const token = getSessionToken();
|
|
return token ? { 'x-session-token': token } : {};
|
|
},
|
|
}),
|
|
],
|
|
});
|