fix: formatting, refs NOISSUE

This commit is contained in:
simon 2025-07-20 03:19:16 +02:00
parent 2e876ad628
commit 5b72e25636
10 changed files with 68 additions and 60 deletions

View File

@ -17,7 +17,7 @@ public class User
return (string.IsNullOrEmpty(NickName) ? Name : NickName).ToString(); return (string.IsNullOrEmpty(NickName) ? Name : NickName).ToString();
} }
} }
public List<Song> LikedSongs { get; set; } public required List<Song> LikedSongs { get; set; }
public string? SpotifyAuthAccessToken { get; set; } public string? SpotifyAuthAccessToken { get; set; }
public int? SpotifyAuthExpiresAfterSeconds { get; set; } public int? SpotifyAuthExpiresAfterSeconds { get; set; }

View File

@ -21,11 +21,12 @@ public class IndexModel : PageModel
public User CurrentUser public User CurrentUser
{ {
get { get
if(_currentUser == null) {
if (_currentUser == null)
{ {
var userName = this.User.Identity.Name; var userName = this.User.Identity.Name;
using(var dci = DataContext.Instance) using (var dci = DataContext.Instance)
{ {
_currentUser = dci.Users.Include(u => u.LikedSongs).Where(u => u.LdapUserName == userName).SingleOrDefault(); _currentUser = dci.Users.Include(u => u.LikedSongs).Where(u => u.LdapUserName == userName).SingleOrDefault();
} }
@ -68,7 +69,7 @@ public class IndexModel : PageModel
public async Task<IActionResult> OnPostUnlikeSong(int? songId) public async Task<IActionResult> OnPostUnlikeSong(int? songId)
{ {
using(var dci = DataContext.Instance) using (var dci = DataContext.Instance)
{ {
var user = dci.Users.Include(u => u.LikedSongs).Where(u => u.UserId == CurrentUser.UserId).SingleOrDefault(); var user = dci.Users.Include(u => u.LikedSongs).Where(u => u.UserId == CurrentUser.UserId).SingleOrDefault();
var songToRemove = user.LikedSongs.Where(s => s.SongId == songId).SingleOrDefault(); var songToRemove = user.LikedSongs.Where(s => s.SongId == songId).SingleOrDefault();

View File

@ -79,11 +79,12 @@ public class SongSubmissionModel : PageModel
public User CurrentUser public User CurrentUser
{ {
get { get
if(_currentUser == null) {
if (_currentUser == null)
{ {
var userName = this.User.Identity.Name; var userName = this.User.Identity.Name;
using(var dci = DataContext.Instance) using (var dci = DataContext.Instance)
{ {
_currentUser = dci.Users.Include(u => u.LikedSongs).Where(u => u.LdapUserName == userName).SingleOrDefault(); _currentUser = dci.Users.Include(u => u.LikedSongs).Where(u => u.LdapUserName == userName).SingleOrDefault();
} }
@ -262,7 +263,7 @@ public class SongSubmissionModel : PageModel
public async Task<IActionResult> OnPostUnlikeSong(int? songId) public async Task<IActionResult> OnPostUnlikeSong(int? songId)
{ {
using(var dci = DataContext.Instance) using (var dci = DataContext.Instance)
{ {
var user = dci.Users.Include(u => u.LikedSongs).Where(u => u.UserId == CurrentUser.UserId).SingleOrDefault(); var user = dci.Users.Include(u => u.LikedSongs).Where(u => u.UserId == CurrentUser.UserId).SingleOrDefault();
var songToRemove = user.LikedSongs.Where(s => s.SongId == songId).SingleOrDefault(); var songToRemove = user.LikedSongs.Where(s => s.SongId == songId).SingleOrDefault();

View File

@ -291,7 +291,8 @@ app.MapControllerRoute(
name: "logout", name: "logout",
pattern: "{controller=Auth}/{action=Logout}" pattern: "{controller=Auth}/{action=Logout}"
); );
app.MapGet("SpotifyLogin", async (HttpRequest request, HttpResponse response) => { app.MapGet("SpotifyLogin", async (HttpRequest request, HttpResponse response) =>
{
var spotifyClient = app.Services.GetService<SpotifyApiClient>(); var spotifyClient = app.Services.GetService<SpotifyApiClient>();
var code = request.Query["code"]; var code = request.Query["code"];
var oAuthResponse = await new OAuthClient().RequestToken( var oAuthResponse = await new OAuthClient().RequestToken(

View File

@ -15,8 +15,10 @@ public class Base64UrlImageBuilder
private string _fileContents = string.Empty; private string _fileContents = string.Empty;
public string FileContents { public string FileContents
get { {
get
{
return _fileContents; return _fileContents;
} }
} }

View File

@ -87,31 +87,31 @@ public class NavidromeValidator : SongValidatorBase
public class NavidromeShareInfoData public class NavidromeShareInfoData
{ {
[JsonPropertyName("id")] [JsonPropertyName("id")]
public string Id { get; set; } public required string Id { get; set; }
[JsonPropertyName("description")] [JsonPropertyName("description")]
public string Description { get; set; } public required string Description { get; set; }
[JsonPropertyName("downloadable")] [JsonPropertyName("downloadable")]
public bool Downloadable { get; set; } public bool Downloadable { get; set; }
[JsonPropertyName("tracks")] [JsonPropertyName("tracks")]
public List<NavidromeTrackInfoData> Tracks { get; set; } public required List<NavidromeTrackInfoData> Tracks { get; set; }
} }
public class NavidromeTrackInfoData public class NavidromeTrackInfoData
{ {
[JsonPropertyName("id")] [JsonPropertyName("id")]
public string Id { get; set; } public required string Id { get; set; }
[JsonPropertyName("title")] [JsonPropertyName("title")]
public string Title { get; set; } public required string Title { get; set; }
[JsonPropertyName("artist")] [JsonPropertyName("artist")]
public string Artist { get; set; } public required string Artist { get; set; }
[JsonPropertyName("album")] [JsonPropertyName("album")]
public string Album { get; set; } public required string Album { get; set; }
[JsonPropertyName("updatedAt")] [JsonPropertyName("updatedAt")]
public DateTime UpdatedAt { get; set; } public DateTime UpdatedAt { get; set; }

View File

@ -43,7 +43,7 @@ public class PlayListSynchronizer
public async Task SynchronizePlaylistsAsync(IList<SmartPlaylistDefinition> playlists) public async Task SynchronizePlaylistsAsync(IList<SmartPlaylistDefinition> playlists)
{ {
foreach(var playlist in playlists) foreach (var playlist in playlists)
{ {
await SynchronizePlaylistAsync(playlist); await SynchronizePlaylistAsync(playlist);
} }
@ -51,7 +51,7 @@ public class PlayListSynchronizer
public async Task SynchronizeUserPlaylistsAsync(User user) public async Task SynchronizeUserPlaylistsAsync(User user)
{ {
using(var dci = DataContext.Instance) using (var dci = DataContext.Instance)
{ {
var userPlayLists = dci.SmartPlaylistDefinitions var userPlayLists = dci.SmartPlaylistDefinitions
.Include(pl => pl.ExplicitlyIncludedSongs) .Include(pl => pl.ExplicitlyIncludedSongs)

View File

@ -5,7 +5,7 @@ using Microsoft.EntityFrameworkCore;
public class SpotifyApiClient public class SpotifyApiClient
{ {
private SpotifyClient _spotifyClient; private SpotifyClient _spotifyClient;
private SpotifyClient _userAuthorizedSpotifyClient; private SpotifyClient? _userAuthorizedSpotifyClient;
private ILogger<SpotifyApiClient> _logger; private ILogger<SpotifyApiClient> _logger;
public SpotifyApiClient(ILogger<SpotifyApiClient> logger) public SpotifyApiClient(ILogger<SpotifyApiClient> logger)
@ -33,7 +33,8 @@ public class SpotifyApiClient
.WithAuthenticator(new AuthorizationCodeAuthenticator( .WithAuthenticator(new AuthorizationCodeAuthenticator(
AppConfiguration.Instance.SpotifyClientId, AppConfiguration.Instance.SpotifyClientId,
AppConfiguration.Instance.SpotifyClientSecret, AppConfiguration.Instance.SpotifyClientSecret,
new AuthorizationCodeTokenResponse() { new AuthorizationCodeTokenResponse()
{
RefreshToken = refreshResponse.RefreshToken, RefreshToken = refreshResponse.RefreshToken,
AccessToken = refreshResponse.AccessToken, AccessToken = refreshResponse.AccessToken,
TokenType = refreshResponse.TokenType, TokenType = refreshResponse.TokenType,
@ -46,8 +47,10 @@ public class SpotifyApiClient
return this; return this;
} }
private SpotifyClient UserAuthorizedSpotifyClient { private SpotifyClient UserAuthorizedSpotifyClient
get { {
get
{
if (_userAuthorizedSpotifyClient == null) if (_userAuthorizedSpotifyClient == null)
{ {
throw new Exception("Cannot perform Spotify API call without user authorization. Authorize Spotify access from your user page first!"); throw new Exception("Cannot perform Spotify API call without user authorization. Authorize Spotify access from your user page first!");
@ -89,11 +92,11 @@ public class SpotifyApiClient
public async Task DeAuthorizeUserAsync(User user) public async Task DeAuthorizeUserAsync(User user)
{ {
using(var dci = DataContext.Instance) using (var dci = DataContext.Instance)
{ {
var isEntityTracked = dci.Entry(user).State != EntityState.Detached; var isEntityTracked = dci.Entry(user).State != EntityState.Detached;
if(!isEntityTracked) if (!isEntityTracked)
{ {
user = dci.Users.Find(user.UserId); user = dci.Users.Find(user.UserId);
} }
@ -107,13 +110,13 @@ public class SpotifyApiClient
public async Task<string> GetValidAuthorizationTokenAsync(User user) public async Task<string> GetValidAuthorizationTokenAsync(User user)
{ {
if(string.IsNullOrEmpty(user.SpotifyAuthAccessToken)) if (string.IsNullOrEmpty(user.SpotifyAuthAccessToken))
{ {
// user either never connected Spotify or we failed to refresh token - user needs to re-authenticate // user either never connected Spotify or we failed to refresh token - user needs to re-authenticate
return string.Empty; return string.Empty;
} }
if(!this.IsAuthTokenExpired(user)) if (!this.IsAuthTokenExpired(user))
{ {
return user.SpotifyAuthAccessToken; return user.SpotifyAuthAccessToken;
} }
@ -123,7 +126,7 @@ public class SpotifyApiClient
var isEntityTracked = dci.Entry(user).State != EntityState.Detached; var isEntityTracked = dci.Entry(user).State != EntityState.Detached;
if(!isEntityTracked) if (!isEntityTracked)
{ {
user = dci.Users.Find(user.UserId); user = dci.Users.Find(user.UserId);
} }
@ -139,7 +142,7 @@ public class SpotifyApiClient
user.SpotifyAuthRefreshToken = oAuthResponse.RefreshToken; user.SpotifyAuthRefreshToken = oAuthResponse.RefreshToken;
return user.SpotifyAuthAccessToken; return user.SpotifyAuthAccessToken;
} }
catch(Exception ex) catch (Exception ex)
{ {
_logger.LogWarning($"Failed to refresh SpotifyAuth token for user {user.LdapUserName}: {ex.Message}"); _logger.LogWarning($"Failed to refresh SpotifyAuth token for user {user.LdapUserName}: {ex.Message}");
await DeAuthorizeUserAsync(user); await DeAuthorizeUserAsync(user);
@ -186,7 +189,7 @@ public class SpotifyApiClient
var playlist = await UserAuthorizedSpotifyClient.Playlists.Create(currentUser.Id, playlistCreationRequest); var playlist = await UserAuthorizedSpotifyClient.Playlists.Create(currentUser.Id, playlistCreationRequest);
_logger.LogWarning($"Creating new playlist '{playlistTitle}'"); _logger.LogWarning($"Creating new playlist '{playlistTitle}'");
using(var dci = DataContext.Instance) using (var dci = DataContext.Instance)
{ {
var trackedUserEntity = dci.Users.Find(createdBy.UserId); var trackedUserEntity = dci.Users.Find(createdBy.UserId);
var newPlaylist = new SmartPlaylistDefinition() var newPlaylist = new SmartPlaylistDefinition()