From c1b1a619b30b6040cb752a28482591d58021faab Mon Sep 17 00:00:00 2001 From: Jason Dove Date: Sat, 13 Feb 2021 16:32:02 -0600 Subject: [PATCH] fix bug preventing folders with more than 50 chars as local media sources --- .../Commands/CreateLocalMediaSourceHandler.cs | 14 +++++++------- .../Commands/ScanLocalMediaSourceHandler.cs | 2 +- ErsatzTV/Pages/LocalMediaSourceEditor.razor | 10 +++++++++- ErsatzTV/Shared/LocalMediaSources.razor | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ErsatzTV.Application/MediaSources/Commands/CreateLocalMediaSourceHandler.cs b/ErsatzTV.Application/MediaSources/Commands/CreateLocalMediaSourceHandler.cs index 6b093f844..da307a55e 100644 --- a/ErsatzTV.Application/MediaSources/Commands/CreateLocalMediaSourceHandler.cs +++ b/ErsatzTV.Application/MediaSources/Commands/CreateLocalMediaSourceHandler.cs @@ -41,28 +41,28 @@ namespace ErsatzTV.Application.MediaSources.Commands Folder = folder }); - private async Task> ValidateName(CreateLocalMediaSource createCollection) + private async Task> ValidateName(CreateLocalMediaSource request) { List allNames = await _mediaSourceRepository.GetAll() .Map(list => list.Map(c => c.Name).ToList()); - Validation result1 = createCollection.NotEmpty(c => c.Name) - .Bind(_ => createCollection.NotLongerThan(50)(c => c.Name)); + Validation result1 = request.NotEmpty(c => c.Name) + .Bind(_ => request.NotLongerThan(50)(c => c.Name)); - var result2 = Optional(createCollection.Name) + var result2 = Optional(request.Name) .Filter(name => !allNames.Contains(name)) .ToValidation("Media source name must be unique"); - return (result1, result2).Apply((_, _) => createCollection.Name); + return (result1, result2).Apply((_, _) => request.Name); } - private async Task> ValidateFolder(CreateLocalMediaSource createCollection) + private async Task> ValidateFolder(CreateLocalMediaSource request) { List allFolders = await _mediaSourceRepository.GetAll() .Map(list => list.OfType().Map(c => c.Folder).ToList()); - return Optional(createCollection.Folder) + return Optional(request.Folder) .Filter(folder => allFolders.ForAll(f => !AreSubPaths(f, folder))) .ToValidation("Folder must not belong to another media source"); } diff --git a/ErsatzTV.Application/MediaSources/Commands/ScanLocalMediaSourceHandler.cs b/ErsatzTV.Application/MediaSources/Commands/ScanLocalMediaSourceHandler.cs index 76134bf01..968f456cf 100644 --- a/ErsatzTV.Application/MediaSources/Commands/ScanLocalMediaSourceHandler.cs +++ b/ErsatzTV.Application/MediaSources/Commands/ScanLocalMediaSourceHandler.cs @@ -31,7 +31,7 @@ namespace ErsatzTV.Application.MediaSources.Commands Validate(request) .MapT( p => _localMediaScanner.ScanLocalMediaSource(p.LocalMediaSource, p.FFprobePath) - .Map(_ => p.LocalMediaSource.Name)) + .Map(_ => p.LocalMediaSource.Folder)) .Bind(v => v.ToEitherAsync()); private async Task> Validate(ScanLocalMediaSource request) => diff --git a/ErsatzTV/Pages/LocalMediaSourceEditor.razor b/ErsatzTV/Pages/LocalMediaSourceEditor.razor index 848a06c25..db61326b3 100644 --- a/ErsatzTV/Pages/LocalMediaSourceEditor.razor +++ b/ErsatzTV/Pages/LocalMediaSourceEditor.razor @@ -67,7 +67,13 @@ _messageStore.Clear(); if (_editContext.Validate()) { - var command = new CreateLocalMediaSource(_model.Folder, _model.MediaType, _model.Folder); + var command = new CreateLocalMediaSource( + Convert.ToBase64String(Guid.NewGuid().ToByteArray()) + .TrimEnd('=') + .Replace("/", "_") + .Replace("+", "-"), + _model.MediaType, + _model.Folder); Either result = await Mediator.Send(command); await result.Match( Left: error => @@ -84,4 +90,6 @@ } } + + } \ No newline at end of file diff --git a/ErsatzTV/Shared/LocalMediaSources.razor b/ErsatzTV/Shared/LocalMediaSources.razor index 7beb32898..f486ec440 100644 --- a/ErsatzTV/Shared/LocalMediaSources.razor +++ b/ErsatzTV/Shared/LocalMediaSources.razor @@ -42,7 +42,7 @@ var parameters = new DialogParameters { { "EntityType", "media source" }, - { "EntityName", mediaSource.Name }, + { "EntityName", mediaSource.Folder }, { "DetailText", $"This media source contains {count} media items." }, { "DetailHighlight", count.ToString() } };