From 3d197b667a30011e94ff60265f5103dae419c991 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 17 May 2025 21:31:55 +0800 Subject: [PATCH] :bug: Fix update basic info didn't apply --- .../Account/AccountController.cs | 13 +++++++------ .../Account/NotificationController.cs | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/DysonNetwork.Sphere/Account/AccountController.cs b/DysonNetwork.Sphere/Account/AccountController.cs index c807eba..5fa07ec 100644 --- a/DysonNetwork.Sphere/Account/AccountController.cs +++ b/DysonNetwork.Sphere/Account/AccountController.cs @@ -63,7 +63,7 @@ public class AccountController( [MaxLength(128)] public string Password { get; set; } = string.Empty; - [MaxLength(128)] public string Language { get; set; } = "en"; + [MaxLength(128)] [RegularExpression("^[a-z]{2,3}$")] public string Language { get; set; } = "en-us"; [Required] public string CaptchaToken { get; set; } = string.Empty; } @@ -140,22 +140,23 @@ public class AccountController( public class BasicInfoRequest { [MaxLength(256)] public string? Nick { get; set; } - [MaxLength(32)] public string? Language { get; set; } + [MaxLength(32)] [RegularExpression("^[a-z]{2,3}$")] public string? Language { get; set; } } [Authorize] [HttpPatch("me")] public async Task> UpdateBasicInfo([FromBody] BasicInfoRequest request) { - if (HttpContext.Items["CurrentUser"] is not Account account) return Unauthorized(); + if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized(); + var account = await db.Accounts.FirstAsync(a => a.Id == currentUser.Id); + if (request.Nick is not null) account.Nick = request.Nick; if (request.Language is not null) account.Language = request.Language; - await accounts.PurgeAccountCache(account); - await db.SaveChangesAsync(); - return account; + await accounts.PurgeAccountCache(currentUser); + return currentUser; } public class ProfileRequest diff --git a/DysonNetwork.Sphere/Account/NotificationController.cs b/DysonNetwork.Sphere/Account/NotificationController.cs index 8c2c2d9..5f97ae9 100644 --- a/DysonNetwork.Sphere/Account/NotificationController.cs +++ b/DysonNetwork.Sphere/Account/NotificationController.cs @@ -60,4 +60,23 @@ public class NotificationController(AppDatabase db, NotificationService nty) : C return Ok(result); } + + [HttpDelete("subscription")] + [Authorize] + public async Task> UnsubscribeFromPushNotification() + { + HttpContext.Items.TryGetValue("CurrentSession", out var currentSessionValue); + HttpContext.Items.TryGetValue("CurrentUser", out var currentUserValue); + var currentUser = currentUserValue as Account; + if (currentUser == null) return Unauthorized(); + var currentSession = currentSessionValue as Session; + if (currentSession == null) return Unauthorized(); + + var affectedRows = await db.NotificationPushSubscriptions + .Where(s => + s.AccountId == currentUser.Id && + s.DeviceId == currentSession.Challenge.DeviceId + ).ExecuteDeleteAsync(); + return Ok(affectedRows); + } } \ No newline at end of file