From d8bb2b735655030169e6c84ce9aff245869573d8 Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Fri, 10 Nov 2023 15:10:09 +0100 Subject: [PATCH] Implemented bucket delete and improved avatar update --- Moonlight/App/Services/BucketService.cs | 18 ++++++++++++++++++ .../App/Services/Users/UserDetailsService.cs | 14 +++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Moonlight/App/Services/BucketService.cs b/Moonlight/App/Services/BucketService.cs index 658ffa62..ced7ccdd 100644 --- a/Moonlight/App/Services/BucketService.cs +++ b/Moonlight/App/Services/BucketService.cs @@ -63,4 +63,22 @@ public class BucketService else throw new FileNotFoundException(); } + + public Task Delete(string bucket, string file, bool ignoreNotFound = false) + { + var filePath = PathBuilder.File(BasePath, bucket, file); + + if (File.Exists(filePath)) + { + File.Delete(filePath); + return Task.CompletedTask; + } + + // This section will only be reached if the file does not exist + + if (!ignoreNotFound) + throw new FileNotFoundException(); + + return Task.CompletedTask; + } } \ No newline at end of file diff --git a/Moonlight/App/Services/Users/UserDetailsService.cs b/Moonlight/App/Services/Users/UserDetailsService.cs index 6fdf51f5..f1070ff0 100644 --- a/Moonlight/App/Services/Users/UserDetailsService.cs +++ b/Moonlight/App/Services/Users/UserDetailsService.cs @@ -16,17 +16,25 @@ public class UserDetailsService public async Task UpdateAvatar(User user, Stream stream, string fileName) { + if (user.Avatar != null) + { + await BucketService.Delete("avatars", user.Avatar, true); + } + var file = await BucketService.Store("avatars", stream, fileName); user.Avatar = file; UserRepository.Update(user); } - public Task UpdateAvatar(User user) // Overload to reset avatar + public async Task UpdateAvatar(User user) // Overload to reset avatar { + if (user.Avatar != null) + { + await BucketService.Delete("avatars", user.Avatar, true); + } + user.Avatar = null; UserRepository.Update(user); - - return Task.CompletedTask; } } \ No newline at end of file