diff --git a/Kemkas.Web/Services/Character/CharacterPersistenceService.cs b/Kemkas.Web/Services/Character/CharacterPersistenceService.cs index e4b7fcc..5f289b7 100644 --- a/Kemkas.Web/Services/Character/CharacterPersistenceService.cs +++ b/Kemkas.Web/Services/Character/CharacterPersistenceService.cs @@ -72,6 +72,7 @@ public class CharacterPersistenceService( Szint = k.Szint, Faj = k.Faj.Convert(), Osztaly = k.Osztaly.Convert(), + Edition = "1e" }) .ToListAsync(); diff --git a/Kemkas.Web/ViewModels/CharacterListItemDto.cs b/Kemkas.Web/ViewModels/CharacterListItemDto.cs index b867bd0..c8dddab 100644 --- a/Kemkas.Web/ViewModels/CharacterListItemDto.cs +++ b/Kemkas.Web/ViewModels/CharacterListItemDto.cs @@ -2,20 +2,23 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -public struct CharacterListItemDto +public struct CharacterListItemDto() { [JsonPropertyName("id")] - public Guid Id { get; set; } - + public required Guid Id { get; set; } + [JsonPropertyName("name")] - public string Name { get; set; } - + public required string Name { get; set; } + [JsonPropertyName("szint")] - public byte Szint { get; set; } - + public required byte Szint { get; set; } + [JsonPropertyName("faj")] - public string Faj { get; set; } - + public required string Faj { get; set; } + [JsonPropertyName("osztaly")] - public string Osztaly { get; set; } + public required string Osztaly { get; set; } + + [JsonPropertyName("edition")] + public required string Edition { get; set; } } \ No newline at end of file diff --git a/Kemkas.Web/frontend/src/App.tsx b/Kemkas.Web/frontend/src/App.tsx index b7aacde..9816d8d 100644 --- a/Kemkas.Web/frontend/src/App.tsx +++ b/Kemkas.Web/frontend/src/App.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import './App.css'; import {Faro} from "@grafana/faro-web-sdk"; -import {createBrowserRouter, RouterProvider} from "react-router-dom"; +import {createBrowserRouter, redirect, RouterProvider} from "react-router-dom"; import CreateCharacter from "./first-edition/pages/CreateCharacter"; import CharacterList from "./first-edition/pages/CharacterList"; import ErrorBoundary from "./shared/ErrorBoundary"; @@ -12,42 +12,12 @@ import {UserContext, userDefaults} from './shared/contexts/UserContext'; import CreateCharacter2E from "./second-edition/pages/CreateCharacter2E"; function App(props: {faro?: Faro}) { - const router = createBrowserRouter([ - { - path: "/", - element: , - ErrorBoundary: ErrorBoundary, - }, - { - path: "/2e", - element: , - ErrorBoundary: ErrorBoundary, - }, - { - path: "/2e/:id", - element: , - loader: args => fetch(`api/Character/${args.params.id}`), - ErrorBoundary: ErrorBoundary, - }, - { - path: "/karaktereim", - element: , - loader: () => fetch(`api/Character`), - ErrorBoundary: ErrorBoundary, - }, - { - path: "/:id", - element: , - loader: args => fetch(`api/Character/${args.params.id}`), - ErrorBoundary: ErrorBoundary, - }, - ]); - + const [fetchedUser, setFetchedUser] = useState(userDefaults) if (fetchedUser.state === "not-started") { setFetchedUser({...fetchedUser, state: "loading"}) - fetch('api/User/me') + fetch(`${window.location.origin}/api/User/me`) .then(response => { if (response.ok) { return response.text(); @@ -69,6 +39,49 @@ function App(props: {faro?: Faro}) { }) } + const router = createBrowserRouter([ + { + path: "/", + loader: () => fetchedUser.data == null ? redirect("/1e/karakter") : redirect("/karaktereim") + }, + { + path: "/karaktereim", + element: , + loader: () => fetch(`${window.location.origin}/api/Character`), + ErrorBoundary: ErrorBoundary, + }, + { + path: "/1e", + loader: () => redirect("/1e/karakter") + }, + { + path: "/1e/karakter", + element: , + ErrorBoundary: ErrorBoundary, + }, + { + path: "/1e/karakter/:id", + element: , + loader: args => fetch(`${window.location.origin}/api/Character/${args.params.id}`), + ErrorBoundary: ErrorBoundary, + }, + { + path: "/2e", + loader: () => redirect("/2e/karakter") + }, + { + path: "/2e/karakter", + element: , + ErrorBoundary: ErrorBoundary, + }, + { + path: "/2e/karakter/:id", + element: , + loader: args => fetch(`${window.location.origin}/api/Character/${args.params.id}`), + ErrorBoundary: ErrorBoundary, + }, + ]); + return (
diff --git a/Kemkas.Web/frontend/src/first-edition/components/CharacterListItem.tsx b/Kemkas.Web/frontend/src/first-edition/components/CharacterListItem.tsx index d74cee9..2af786a 100644 --- a/Kemkas.Web/frontend/src/first-edition/components/CharacterListItem.tsx +++ b/Kemkas.Web/frontend/src/first-edition/components/CharacterListItem.tsx @@ -8,6 +8,7 @@ export interface CharacterListItemDto { szint: number, faj: Faj, osztaly: Osztaly, + edition: "1e" | "2e" } function CharacterListItem(props: { @@ -15,7 +16,7 @@ function CharacterListItem(props: { }) { const {character:c} = props return <> - {c.name} + {c.name} {c.szint}. szintű {FajLabel(c.faj)} {OsztalyLabel(c.osztaly)}