Restore workspace prerender and auth errors

This commit is contained in:
2026-05-02 23:53:40 +02:00
parent 2d2ed561cc
commit 1f19bf7bfd
2 changed files with 16 additions and 7 deletions

View File

@@ -17,7 +17,7 @@
<link href="https://fonts.googleapis.com/css2?family=Noto+Color+Emoji&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Noto+Color+Emoji&display=swap" rel="stylesheet">
@if (UseInteractiveApp) @if (UseInteractiveApp)
{ {
<HeadOutlet @rendermode="@(new InteractiveServerRenderMode(prerender: false))"/> <HeadOutlet @rendermode="InteractiveServer"/>
} }
</head> </head>
<body> <body>
@@ -27,7 +27,7 @@
} }
else else
{ {
<Routes @rendermode="@(new InteractiveServerRenderMode(prerender: false))"/> <Routes @rendermode="InteractiveServer"/>
} }
<script src="js/rpgroller-api.js"></script> <script src="js/rpgroller-api.js"></script>
@if (UseInteractiveApp) @if (UseInteractiveApp)
@@ -38,11 +38,9 @@ else
</html> </html>
@code { @code {
[Inject] [Inject] private IGameService GameService { get; set; } = null!;
private IGameService GameService { get; set; } = null!;
[CascadingParameter] [CascadingParameter] private HttpContext? HttpContext { get; set; }
private HttpContext? HttpContext { get; set; }
private bool UseInteractiveApp => !UseStaticAuthPage; private bool UseInteractiveApp => !UseStaticAuthPage;
@@ -94,4 +92,4 @@ else
return value.Count > 0 ? value[0] : null; return value.Count > 0 ? value[0] : null;
} }
} }

View File

@@ -275,6 +275,11 @@ window.rpgRollerApi = (() => {
errorElement.textContent = message || ""; errorElement.textContent = message || "";
} }
function setInvalidCredentialsErrors(form) {
setFieldError(form, "username", "Invalid username or password.");
setFieldError(form, "password", "Invalid username or password.");
}
function readFormData(form) { function readFormData(form) {
return Object.fromEntries(new FormData(form).entries()); return Object.fromEntries(new FormData(form).entries());
} }
@@ -325,6 +330,7 @@ window.rpgRollerApi = (() => {
}); });
if (Object.keys(errors).length > 0) { if (Object.keys(errors).length > 0) {
setAuthStatus(statusElement, "Resolve validation issues before submitting.", true);
setFormError(form, "Resolve validation issues before submitting."); setFormError(form, "Resolve validation issues before submitting.");
return; return;
} }
@@ -345,12 +351,17 @@ window.rpgRollerApi = (() => {
try { try {
const response = await request("POST", endpoint, requestBody); const response = await request("POST", endpoint, requestBody);
if (!response.ok) { if (!response.ok) {
setAuthStatus(statusElement, response.error || "Request failed.", true);
if (formType === "register" && response.code === "duplicate_username") { if (formType === "register" && response.code === "duplicate_username") {
setFieldError(form, "username", "Username is already taken. Choose another one."); setFieldError(form, "username", "Username is already taken. Choose another one.");
} else if (formType === "login" && response.code === "invalid_credentials") {
setInvalidCredentialsErrors(form);
} else { } else {
setFormError(form, response.error || "Request failed."); setFormError(form, response.error || "Request failed.");
} }
setFormError(form, response.error || "Request failed.");
return; return;
} }