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