Fix nullable warnings and update CI/CD for beta branch

This commit is contained in:
2026-01-30 11:38:49 -05:00
parent fe886fc44b
commit ad1b58f5bd
6 changed files with 17 additions and 11 deletions

View File

@@ -4,10 +4,10 @@ on:
workflow_dispatch: workflow_dispatch:
push: push:
tags: ["v*"] tags: ["v*"]
branches: [main, dev] branches: [main, beta]
pull_request: pull_request:
types: [closed] types: [closed]
branches: [main, dev] branches: [main, beta]
env: env:
DOTNET_VERSION: "10.0.x" DOTNET_VERSION: "10.0.x"
@@ -77,7 +77,8 @@ jobs:
type=semver,pattern={{version}} type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}} type=semver,pattern={{major}}
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/dev' || github.event_name == 'workflow_dispatch' }} type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=beta,enable=${{ github.ref == 'refs/heads/beta' }}
- name: Build and push - name: Build and push
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6

View File

@@ -85,7 +85,7 @@ public class DeezerDownloadServiceTests : IDisposable
var serviceProviderMock = new Mock<IServiceProvider>(); var serviceProviderMock = new Mock<IServiceProvider>();
serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService))) serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService)))
.Returns(null); .Returns(null!);
return new DeezerDownloadService( return new DeezerDownloadService(
_httpClientFactoryMock.Object, _httpClientFactoryMock.Object,

View File

@@ -107,8 +107,8 @@ public class JellyfinProxyServiceTests
Assert.True(captured!.Headers.Contains("Authorization")); Assert.True(captured!.Headers.Contains("Authorization"));
var authHeader = captured.Headers.GetValues("Authorization").First(); var authHeader = captured.Headers.GetValues("Authorization").First();
Assert.Contains("MediaBrowser", authHeader); Assert.Contains("MediaBrowser", authHeader);
Assert.Contains(_settings.ApiKey, authHeader); Assert.Contains(_settings.ApiKey!, authHeader);
Assert.Contains(_settings.ClientName, authHeader); Assert.Contains(_settings.ClientName!, authHeader);
} }
[Fact] [Fact]

View File

@@ -88,7 +88,7 @@ public class QobuzDownloadServiceTests : IDisposable
var serviceProviderMock = new Mock<IServiceProvider>(); var serviceProviderMock = new Mock<IServiceProvider>();
serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService))) serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService)))
.Returns(null); .Returns(null!);
return new QobuzDownloadService( return new QobuzDownloadService(
_httpClientFactoryMock.Object, _httpClientFactoryMock.Object,

View File

@@ -140,7 +140,7 @@ public class JellyfinStartupValidator : BaseStartupValidator
$"Token=\"{settings.ApiKey}\""; $"Token=\"{settings.ApiKey}\"";
using var request = new HttpRequestMessage(HttpMethod.Get, using var request = new HttpRequestMessage(HttpMethod.Get,
$"{settings.Url.TrimEnd('/')}/System/Info"); $"{settings.Url?.TrimEnd('/')}/System/Info");
request.Headers.Add("Authorization", authHeader); request.Headers.Add("Authorization", authHeader);
var response = await _httpClient.SendAsync(request, cancellationToken); var response = await _httpClient.SendAsync(request, cancellationToken);
@@ -180,7 +180,7 @@ public class JellyfinStartupValidator : BaseStartupValidator
{ {
try try
{ {
var url = $"{settings.Url.TrimEnd('/')}/Library/MediaFolders"; var url = $"{settings.Url?.TrimEnd('/')}/Library/MediaFolders";
if (!string.IsNullOrWhiteSpace(settings.UserId)) if (!string.IsNullOrWhiteSpace(settings.UserId))
{ {
url += $"?userId={settings.UserId}"; url += $"?userId={settings.UserId}";

View File

@@ -481,11 +481,11 @@ public class SquidWTFMetadataService : IMusicMetadataService
var songs = new List<Song>(); var songs = new List<Song>();
// Get playlist name for album field // Get playlist name for album field
var playlistName = playlist.Value.TryGetProperty("title", out var titleEl) var playlistName = playlist?.TryGetProperty("title", out var titleEl) == true
? titleEl.GetString() ?? "Unknown Playlist" ? titleEl.GetString() ?? "Unknown Playlist"
: "Unknown Playlist"; : "Unknown Playlist";
if (tracks != null) if (tracks.HasValue)
{ {
int trackIndex = 1; int trackIndex = 1;
foreach (var entry in tracks.Value.EnumerateArray()) foreach (var entry in tracks.Value.EnumerateArray())
@@ -785,6 +785,11 @@ public class SquidWTFMetadataService : IMusicMetadataService
tracks = tracksEl; tracks = tracksEl;
} }
if (!playlist.HasValue)
{
throw new InvalidOperationException("Playlist data is missing");
}
var externalId = playlist.Value.GetProperty("uuid").GetString()!; var externalId = playlist.Value.GetProperty("uuid").GetString()!;
// Get curator/creator name // Get curator/creator name