feat: initialize game frontend with Vue, routing, and session management
- 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.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { defineStore } from 'pinia';
|
||||
|
||||
export type SessionStatus = 'unknown' | 'public' | 'authed' | 'general';
|
||||
|
||||
interface SessionState {
|
||||
status: SessionStatus;
|
||||
}
|
||||
|
||||
export const useSessionStore = defineStore('session', {
|
||||
state: (): SessionState => ({
|
||||
status: 'unknown',
|
||||
}),
|
||||
getters: {
|
||||
isReady: (state) => state.status !== 'unknown',
|
||||
isAuthed: (state) => state.status === 'authed' || state.status === 'general',
|
||||
hasGeneral: (state) => state.status === 'general',
|
||||
},
|
||||
actions: {
|
||||
setStatus(status: SessionStatus) {
|
||||
this.status = status;
|
||||
},
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user