diff --git a/Iceshrimp.Frontend/Core/Schemas/StoredUser.cs b/Iceshrimp.Frontend/Core/Schemas/StoredUser.cs
index 490958f9..4e966baf 100644
--- a/Iceshrimp.Frontend/Core/Schemas/StoredUser.cs
+++ b/Iceshrimp.Frontend/Core/Schemas/StoredUser.cs
@@ -3,7 +3,7 @@ using Iceshrimp.Shared.Schemas;
namespace Iceshrimp.Frontend.Core.Schemas;
-public class StoredUser() : UserResponse
+public class StoredUser : UserResponse
{
- [JsonPropertyName("token")] public required string Token { get; set; }
+ [JsonPropertyName("token")] public required string Token { get; set; }
}
\ No newline at end of file
diff --git a/Iceshrimp.Frontend/Core/Services/SessionService.cs b/Iceshrimp.Frontend/Core/Services/SessionService.cs
index f1159204..e002e62f 100644
--- a/Iceshrimp.Frontend/Core/Services/SessionService.cs
+++ b/Iceshrimp.Frontend/Core/Services/SessionService.cs
@@ -1,6 +1,5 @@
using Blazored.LocalStorage;
using Iceshrimp.Frontend.Core.Schemas;
-using Iceshrimp.Shared.Schemas;
using Microsoft.AspNetCore.Components;
namespace Iceshrimp.Frontend.Core.Services;
@@ -50,7 +49,7 @@ internal class SessionService
WriteUsers();
}
- private StoredUser? GetUserById(string id)
+ private StoredUser GetUserById(string id)
{
var user = Users[id];
return user;
diff --git a/Iceshrimp.Frontend/Pages/Login.razor b/Iceshrimp.Frontend/Pages/Login.razor
index 14c41133..2056857a 100644
--- a/Iceshrimp.Frontend/Pages/Login.razor
+++ b/Iceshrimp.Frontend/Pages/Login.razor
@@ -3,15 +3,15 @@
@using Iceshrimp.Frontend.Core.Schemas
@using Iceshrimp.Frontend.Core.Services
@using Iceshrimp.Shared.Schemas
-@inject ApiService Api
-@inject SessionService SessionService
+@inject ApiService Api
+@inject SessionService SessionService
@inject NavigationManager Navigation
Login
-
+ @bind="@Username"/>
+
@if (Loading)
@@ -36,13 +36,21 @@
Loading = true;
try
{
+ if (Username == null || Password == null)
+ {
+ Loading = false;
+ Failure = true;
+ StateHasChanged(); // Manually triggering a state update, else component will not re-render.
+ return;
+ }
+
var res = await Api.Auth.Login(new AuthRequest { Username = Username, Password = Password });
switch (res.Status)
{
case AuthStatusEnum.Authenticated:
SessionService.AddUser(new StoredUser
{ // Token nor user will ever be null on an authenticated response
- Id = res.User!.Id,
+ Id = res.User!.Id,
Username = res.User.Username,
DisplayName = res.User.DisplayName,
AvatarUrl = res.User.AvatarUrl,
@@ -70,4 +78,5 @@
StateHasChanged(); // Manually triggering a state update, else component will not re-render.
}
}
+
}
\ No newline at end of file
diff --git a/Iceshrimp.Frontend/Pages/Timeline.razor b/Iceshrimp.Frontend/Pages/Timeline.razor
index 2dee28e3..0f4e1775 100644
--- a/Iceshrimp.Frontend/Pages/Timeline.razor
+++ b/Iceshrimp.Frontend/Pages/Timeline.razor
@@ -3,31 +3,31 @@
@using Iceshrimp.Frontend.Core.Services
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
-@inject SessionService Session
+@inject SessionService Session
@inject NavigationManager Navigation
Timeline
-@if (username != null)
+@if (_username != null)
{
- You are logged in as @username
+ You are logged in as @_username
Authorization says you are @context.User.Identity!.Name
-}else
+}
+else
{
Not logged in
}
-
@code {
- private string? username;
+ private string? _username;
protected override void OnInitialized()
{
if (Session.Current != null)
{
- username = Session.Current.Username;
+ _username = Session.Current.Username;
}
}
@@ -36,4 +36,5 @@
Session.EndSession();
Navigation.NavigateTo("/login");
}
+
}
\ No newline at end of file