diff --git a/ErsatzTV.Application/MediaCollections/CollectionUpdateResult.cs b/ErsatzTV.Application/MediaCollections/CollectionUpdateResult.cs deleted file mode 100644 index f0fe4959f..000000000 --- a/ErsatzTV.Application/MediaCollections/CollectionUpdateResult.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Collections.Generic; - -namespace ErsatzTV.Application.MediaCollections -{ - public class CollectionUpdateResult - { - public List ModifiedPlayoutIds { get; set; } - } -} diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollection.cs b/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollection.cs index 5847d2112..ae69c119c 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollection.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollection.cs @@ -1,9 +1,7 @@ using ErsatzTV.Core; using LanguageExt; -using MediatR; namespace ErsatzTV.Application.MediaCollections.Commands { - public record AddEpisodeToCollection - (int CollectionId, int EpisodeId) : IRequest>; + public record AddEpisodeToCollection(int CollectionId, int EpisodeId) : MediatR.IRequest>; } diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollectionHandler.cs b/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollectionHandler.cs index e354d5cc1..8b41da6cc 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollectionHandler.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddEpisodeToCollectionHandler.cs @@ -1,46 +1,50 @@ using System.Threading; +using System.Threading.Channels; using System.Threading.Tasks; +using ErsatzTV.Application.Playouts.Commands; using ErsatzTV.Core; using ErsatzTV.Core.Interfaces.Repositories; using LanguageExt; -using MediatR; -using Unit = LanguageExt.Unit; namespace ErsatzTV.Application.MediaCollections.Commands { public class - AddEpisodeToCollectionHandler : IRequestHandler> + AddEpisodeToCollectionHandler : MediatR.IRequestHandler> { + private readonly ChannelWriter _channel; private readonly IMediaCollectionRepository _mediaCollectionRepository; private readonly ITelevisionRepository _televisionRepository; public AddEpisodeToCollectionHandler( IMediaCollectionRepository mediaCollectionRepository, - ITelevisionRepository televisionRepository) + ITelevisionRepository televisionRepository, + ChannelWriter channel) { _mediaCollectionRepository = mediaCollectionRepository; _televisionRepository = televisionRepository; + _channel = channel; } - public Task> Handle( + public Task> Handle( AddEpisodeToCollection request, CancellationToken cancellationToken) => Validate(request) .MapT(_ => ApplyAddTelevisionEpisodeRequest(request)) .Bind(v => v.ToEitherAsync()); - private async Task ApplyAddTelevisionEpisodeRequest(AddEpisodeToCollection request) + private async Task ApplyAddTelevisionEpisodeRequest(AddEpisodeToCollection request) { - var result = new CollectionUpdateResult(); - if (await _mediaCollectionRepository.AddMediaItem(request.CollectionId, request.EpisodeId)) { - result.ModifiedPlayoutIds = - await _mediaCollectionRepository.PlayoutIdsUsingCollection(request.CollectionId); + // rebuild all playouts that use this collection + foreach (int playoutId in await _mediaCollectionRepository + .PlayoutIdsUsingCollection(request.CollectionId)) + { + await _channel.WriteAsync(new BuildPlayout(playoutId, true)); + } } - return result; + return Unit.Default; } private async Task> Validate(AddEpisodeToCollection request) => diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddMovieCollection.cs b/ErsatzTV.Application/MediaCollections/Commands/AddMovieCollection.cs index 7b0d55512..e9bc90deb 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddMovieCollection.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddMovieCollection.cs @@ -1,9 +1,7 @@ using ErsatzTV.Core; using LanguageExt; -using MediatR; namespace ErsatzTV.Application.MediaCollections.Commands { - public record AddMovieToCollection - (int CollectionId, int MovieId) : IRequest>; + public record AddMovieToCollection(int CollectionId, int MovieId) : MediatR.IRequest>; } diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddMovieToCollectionHandler.cs b/ErsatzTV.Application/MediaCollections/Commands/AddMovieToCollectionHandler.cs index 7e858574e..3f8d0225a 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddMovieToCollectionHandler.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddMovieToCollectionHandler.cs @@ -1,46 +1,51 @@ using System.Threading; +using System.Threading.Channels; using System.Threading.Tasks; +using ErsatzTV.Application.Playouts.Commands; using ErsatzTV.Core; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Repositories; using LanguageExt; -using MediatR; -using Unit = LanguageExt.Unit; namespace ErsatzTV.Application.MediaCollections.Commands { public class - AddMovieToCollectionHandler : IRequestHandler> + AddMovieToCollectionHandler : MediatR.IRequestHandler> { + private readonly ChannelWriter _channel; private readonly IMediaCollectionRepository _mediaCollectionRepository; private readonly IMovieRepository _movieRepository; public AddMovieToCollectionHandler( IMediaCollectionRepository mediaCollectionRepository, - IMovieRepository movieRepository) + IMovieRepository movieRepository, + ChannelWriter channel) { _mediaCollectionRepository = mediaCollectionRepository; _movieRepository = movieRepository; + _channel = channel; } - public Task> Handle( + public Task> Handle( AddMovieToCollection request, CancellationToken cancellationToken) => Validate(request) .MapT(_ => ApplyAddMoviesRequest(request)) .Bind(v => v.ToEitherAsync()); - private async Task ApplyAddMoviesRequest(AddMovieToCollection request) + private async Task ApplyAddMoviesRequest(AddMovieToCollection request) { - var result = new CollectionUpdateResult(); - if (await _mediaCollectionRepository.AddMediaItem(request.CollectionId, request.MovieId)) { - result.ModifiedPlayoutIds = - await _mediaCollectionRepository.PlayoutIdsUsingCollection(request.CollectionId); + // rebuild all playouts that use this collection + foreach (int playoutId in await _mediaCollectionRepository + .PlayoutIdsUsingCollection(request.CollectionId)) + { + await _channel.WriteAsync(new BuildPlayout(playoutId, true)); + } } - return result; + return Unit.Default; } private async Task> Validate(AddMovieToCollection request) => diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollection.cs b/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollection.cs index 5aea47221..e3f795f82 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollection.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollection.cs @@ -1,9 +1,7 @@ using ErsatzTV.Core; using LanguageExt; -using MediatR; namespace ErsatzTV.Application.MediaCollections.Commands { - public record AddSeasonToCollection - (int CollectionId, int SeasonId) : IRequest>; + public record AddSeasonToCollection(int CollectionId, int SeasonId) : MediatR.IRequest>; } diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollectionHandler.cs b/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollectionHandler.cs index 583eaed32..b677da943 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollectionHandler.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddSeasonToCollectionHandler.cs @@ -1,46 +1,51 @@ using System.Threading; +using System.Threading.Channels; using System.Threading.Tasks; +using ErsatzTV.Application.Playouts.Commands; using ErsatzTV.Core; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Repositories; using LanguageExt; -using MediatR; -using Unit = LanguageExt.Unit; namespace ErsatzTV.Application.MediaCollections.Commands { public class - AddSeasonToCollectionHandler : IRequestHandler> + AddSeasonToCollectionHandler : MediatR.IRequestHandler> { + private readonly ChannelWriter _channel; private readonly IMediaCollectionRepository _mediaCollectionRepository; private readonly ITelevisionRepository _televisionRepository; public AddSeasonToCollectionHandler( IMediaCollectionRepository mediaCollectionRepository, - ITelevisionRepository televisionRepository) + ITelevisionRepository televisionRepository, + ChannelWriter channel) { _mediaCollectionRepository = mediaCollectionRepository; _televisionRepository = televisionRepository; + _channel = channel; } - public Task> Handle( + public Task> Handle( AddSeasonToCollection request, CancellationToken cancellationToken) => Validate(request) .MapT(_ => ApplyAddTelevisionSeasonRequest(request)) .Bind(v => v.ToEitherAsync()); - private async Task ApplyAddTelevisionSeasonRequest(AddSeasonToCollection request) + private async Task ApplyAddTelevisionSeasonRequest(AddSeasonToCollection request) { - var result = new CollectionUpdateResult(); - if (await _mediaCollectionRepository.AddMediaItem(request.CollectionId, request.SeasonId)) { - result.ModifiedPlayoutIds = - await _mediaCollectionRepository.PlayoutIdsUsingCollection(request.CollectionId); + // rebuild all playouts that use this collection + foreach (int playoutId in await _mediaCollectionRepository + .PlayoutIdsUsingCollection(request.CollectionId)) + { + await _channel.WriteAsync(new BuildPlayout(playoutId, true)); + } } - return result; + return Unit.Default; } private async Task> Validate(AddSeasonToCollection request) => diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollection.cs b/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollection.cs index e1c1388a0..48233e6d4 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollection.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollection.cs @@ -1,9 +1,7 @@ using ErsatzTV.Core; using LanguageExt; -using MediatR; namespace ErsatzTV.Application.MediaCollections.Commands { - public record AddShowToCollection - (int CollectionId, int ShowId) : IRequest>; + public record AddShowToCollection(int CollectionId, int ShowId) : MediatR.IRequest>; } diff --git a/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollectionHandler.cs b/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollectionHandler.cs index a6e005d18..de77bacfa 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollectionHandler.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/AddShowToCollectionHandler.cs @@ -1,43 +1,49 @@ using System.Threading; +using System.Threading.Channels; using System.Threading.Tasks; +using ErsatzTV.Application.Playouts.Commands; using ErsatzTV.Core; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Repositories; using LanguageExt; -using MediatR; -using Unit = LanguageExt.Unit; namespace ErsatzTV.Application.MediaCollections.Commands { - public class - AddShowToCollectionHandler : IRequestHandler> + public class AddShowToCollectionHandler : MediatR.IRequestHandler> { + private readonly ChannelWriter _channel; private readonly IMediaCollectionRepository _mediaCollectionRepository; private readonly ITelevisionRepository _televisionRepository; public AddShowToCollectionHandler( IMediaCollectionRepository mediaCollectionRepository, - ITelevisionRepository televisionRepository) + ITelevisionRepository televisionRepository, + ChannelWriter channel) { _mediaCollectionRepository = mediaCollectionRepository; _televisionRepository = televisionRepository; + _channel = channel; } - public Task> Handle( + public Task> Handle( AddShowToCollection request, CancellationToken cancellationToken) => Validate(request) .MapT(_ => ApplyAddTelevisionShowRequest(request)) .Bind(v => v.ToEitherAsync()); - private async Task ApplyAddTelevisionShowRequest(AddShowToCollection request) + private async Task ApplyAddTelevisionShowRequest(AddShowToCollection request) { - var result = new CollectionUpdateResult(); + var result = new Unit(); if (await _mediaCollectionRepository.AddMediaItem(request.CollectionId, request.ShowId)) { - result.ModifiedPlayoutIds = - await _mediaCollectionRepository.PlayoutIdsUsingCollection(request.CollectionId); + // rebuild all playouts that use this collection + foreach (int playoutId in await _mediaCollectionRepository + .PlayoutIdsUsingCollection(request.CollectionId)) + { + await _channel.WriteAsync(new BuildPlayout(playoutId, true)); + } } return result; diff --git a/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollection.cs b/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollection.cs index c4d16fc70..29aaa6703 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollection.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollection.cs @@ -1,11 +1,10 @@ using System.Collections.Generic; using ErsatzTV.Core; using LanguageExt; -using MediatR; namespace ErsatzTV.Application.MediaCollections.Commands { - public record RemoveItemsFromCollection(int MediaCollectionId) : IRequest> + public record RemoveItemsFromCollection(int MediaCollectionId) : MediatR.IRequest> { public List MediaItemIds { get; set; } = new(); } diff --git a/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollectionHandler.cs b/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollectionHandler.cs index 21b09dc7b..cab1d2a9d 100644 --- a/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollectionHandler.cs +++ b/ErsatzTV.Application/MediaCollections/Commands/RemoveItemsFromCollectionHandler.cs @@ -1,32 +1,37 @@ using System.Linq; using System.Threading; +using System.Threading.Channels; using System.Threading.Tasks; +using ErsatzTV.Application.Playouts.Commands; using ErsatzTV.Core; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Repositories; using LanguageExt; -using MediatR; namespace ErsatzTV.Application.MediaCollections.Commands { public class - RemoveItemsFromCollectionHandler : IRequestHandler> + RemoveItemsFromCollectionHandler : MediatR.IRequestHandler> { + private readonly ChannelWriter _channel; private readonly IMediaCollectionRepository _mediaCollectionRepository; public RemoveItemsFromCollectionHandler( - IMediaCollectionRepository mediaCollectionRepository) => + IMediaCollectionRepository mediaCollectionRepository, + ChannelWriter channel) + { _mediaCollectionRepository = mediaCollectionRepository; + _channel = channel; + } - public Task> Handle( + public Task> Handle( RemoveItemsFromCollection request, CancellationToken cancellationToken) => Validate(request) .MapT(collection => ApplyRemoveItemsRequest(request, collection)) .Bind(v => v.ToEitherAsync()); - private async Task ApplyRemoveItemsRequest( + private async Task ApplyRemoveItemsRequest( RemoveItemsFromCollection request, Collection collection) { @@ -36,13 +41,16 @@ namespace ErsatzTV.Application.MediaCollections.Commands itemsToRemove.ForEach(m => collection.MediaItems.Remove(m)); - var result = new CollectionUpdateResult(); if (itemsToRemove.Any() && await _mediaCollectionRepository.Update(collection)) { - result.ModifiedPlayoutIds = await _mediaCollectionRepository.PlayoutIdsUsingCollection(collection.Id); + // rebuild all playouts that use this collection + foreach (int playoutId in await _mediaCollectionRepository.PlayoutIdsUsingCollection(collection.Id)) + { + await _channel.WriteAsync(new BuildPlayout(playoutId, true)); + } } - return result; + return Unit.Default; } private Task> Validate( diff --git a/ErsatzTV/Pages/CollectionItems.razor b/ErsatzTV/Pages/CollectionItems.razor index 766584d5b..aca84e664 100644 --- a/ErsatzTV/Pages/CollectionItems.razor +++ b/ErsatzTV/Pages/CollectionItems.razor @@ -1,9 +1,7 @@ @page "/media/collections/{Id:int}" @using ErsatzTV.Application.MediaCards @using ErsatzTV.Application.MediaCards.Queries -@using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands -@using ErsatzTV.Application.Playouts.Commands @inject NavigationManager NavigationManager @inject IMediator Mediator @inject ILogger Logger @@ -164,16 +162,7 @@ DialogResult result = await dialog.Result; if (!result.Cancelled) { - Either removeResult = await Mediator.Send(request); - await removeResult.Match( - async collectionUpdateResult => - { - foreach (int playoutId in collectionUpdateResult.ModifiedPlayoutIds) - { - await Channel.WriteAsync(new BuildPlayout(playoutId, true)); - } - }, - _ => Task.CompletedTask); + await Mediator.Send(request); await RefreshData(); } } diff --git a/ErsatzTV/Pages/MovieList.razor b/ErsatzTV/Pages/MovieList.razor index ea294287f..c3cd5e405 100644 --- a/ErsatzTV/Pages/MovieList.razor +++ b/ErsatzTV/Pages/MovieList.razor @@ -4,7 +4,7 @@ @using ErsatzTV.Application.MediaCards.Queries @using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands -@using ErsatzTV.Application.Playouts.Commands +@using Unit = LanguageExt.Unit @inject ILogger Logger @inject ISnackbar Snackbar @inject IMediator Mediator @@ -74,22 +74,14 @@ if (!result.Cancelled && result.Data is MediaCollectionViewModel collection) { var request = new AddMovieToCollection(collection.Id, movie.MovieId); - Either addResult = await Mediator.Send(request); - await addResult.Match( + Either addResult = await Mediator.Send(request); + addResult.Match( Left: error => { Snackbar.Add($"Unexpected error adding movie to collection: {error.Value}"); Logger.LogError("Unexpected error adding movie to collection: {Error}", error.Value); - return Task.CompletedTask; }, - Right: async collectionUpdateResult => - { - foreach (int playoutId in collectionUpdateResult.ModifiedPlayoutIds) - { - await Channel.WriteAsync(new BuildPlayout(playoutId, true)); - } - Snackbar.Add($"Added {movie.Title} to collection {collection.Name}", Severity.Success); - }); + Right: _ => Snackbar.Add($"Added {movie.Title} to collection {collection.Name}", Severity.Success)); } } } diff --git a/ErsatzTV/Pages/Search.razor b/ErsatzTV/Pages/Search.razor index 3d14582ec..f17c338d8 100644 --- a/ErsatzTV/Pages/Search.razor +++ b/ErsatzTV/Pages/Search.razor @@ -3,9 +3,9 @@ @using ErsatzTV.Application.MediaCards.Queries @using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands -@using ErsatzTV.Application.Playouts.Commands @using Microsoft.AspNetCore.WebUtilities @using Microsoft.Extensions.Primitives +@using Unit = LanguageExt.Unit @inject NavigationManager NavigationManager @inject IMediator Mediator @inject ILogger Logger @@ -75,21 +75,14 @@ if (!result.Cancelled && result.Data is MediaCollectionViewModel collection) { var request = new AddMovieToCollection(collection.Id, movie.MovieId); - Either addResult = await Mediator.Send(request); + Either addResult = await Mediator.Send(request); addResult.Match( Left: error => { Snackbar.Add($"Unexpected error adding movie to collection: {error.Value}"); Logger.LogError("Unexpected error adding movie to collection: {Error}", error.Value); }, - Right: async collectionUpdateResult => - { - foreach (int playoutId in collectionUpdateResult.ModifiedPlayoutIds) - { - await Channel.WriteAsync(new BuildPlayout(playoutId, true)); - } - Snackbar.Add($"Added {movie.Title} to collection {collection.Name}", Severity.Success); - }); + Right: _ => Snackbar.Add($"Added {movie.Title} to collection {collection.Name}", Severity.Success)); } } @@ -103,21 +96,14 @@ if (!result.Cancelled && result.Data is MediaCollectionViewModel collection) { var request = new AddShowToCollection(collection.Id, show.TelevisionShowId); - Either addResult = await Mediator.Send(request); + Either addResult = await Mediator.Send(request); addResult.Match( Left: error => { Snackbar.Add($"Unexpected error adding show to collection: {error.Value}"); Logger.LogError("Unexpected error adding show to collection: {Error}", error.Value); }, - Right: async collectionUpdateResult => - { - foreach (int playoutId in collectionUpdateResult.ModifiedPlayoutIds) - { - await Channel.WriteAsync(new BuildPlayout(playoutId, true)); - } - Snackbar.Add($"Added {show.Title} to collection {collection.Name}", Severity.Success); - }); + Right: _ => Snackbar.Add($"Added {show.Title} to collection {collection.Name}", Severity.Success)); } } } diff --git a/ErsatzTV/Pages/TelevisionEpisodeList.razor b/ErsatzTV/Pages/TelevisionEpisodeList.razor index e79016a11..f1f93102e 100644 --- a/ErsatzTV/Pages/TelevisionEpisodeList.razor +++ b/ErsatzTV/Pages/TelevisionEpisodeList.razor @@ -5,9 +5,9 @@ @using ErsatzTV.Application.MediaCards.Queries @using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands -@using ErsatzTV.Application.Playouts.Commands @using ErsatzTV.Application.ProgramSchedules @using ErsatzTV.Application.ProgramSchedules.Commands +@using Unit = LanguageExt.Unit @inject IMediator Mediator @inject ILogger Logger @inject ISnackbar Snackbar @@ -136,21 +136,14 @@ if (!result.Cancelled && result.Data is MediaCollectionViewModel collection) { var request = new AddEpisodeToCollection(collection.Id, episode.EpisodeId); - Either addResult = await Mediator.Send(request); + Either addResult = await Mediator.Send(request); addResult.Match( Left: error => { Snackbar.Add($"Unexpected error adding episode to collection: {error.Value}"); Logger.LogError("Unexpected error adding episode to collection: {Error}", error.Value); }, - Right: async collectionUpdateResult => - { - foreach (int playoutId in collectionUpdateResult.ModifiedPlayoutIds) - { - await Channel.WriteAsync(new BuildPlayout(playoutId, true)); - } - Snackbar.Add($"Added {episode.Title} to collection {collection.Name}", Severity.Success); - }); + Right: _ => Snackbar.Add($"Added {episode.Title} to collection {collection.Name}", Severity.Success)); } } } diff --git a/ErsatzTV/Pages/TelevisionSeasonList.razor b/ErsatzTV/Pages/TelevisionSeasonList.razor index a8ea317b0..f6442b66e 100644 --- a/ErsatzTV/Pages/TelevisionSeasonList.razor +++ b/ErsatzTV/Pages/TelevisionSeasonList.razor @@ -5,9 +5,9 @@ @using ErsatzTV.Application.MediaCards.Queries @using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands -@using ErsatzTV.Application.Playouts.Commands @using ErsatzTV.Application.ProgramSchedules @using ErsatzTV.Application.ProgramSchedules.Commands +@using Unit = LanguageExt.Unit @inject IMediator Mediator @inject ILogger Logger @inject ISnackbar Snackbar @@ -130,21 +130,14 @@ if (!result.Cancelled && result.Data is MediaCollectionViewModel collection) { var request = new AddSeasonToCollection(collection.Id, season.TelevisionSeasonId); - Either addResult = await Mediator.Send(request); + Either addResult = await Mediator.Send(request); addResult.Match( Left: error => { Snackbar.Add($"Unexpected error adding season to collection: {error.Value}"); Logger.LogError("Unexpected error adding season to collection: {Error}", error.Value); }, - Right: async collectionUpdateResult => - { - foreach (int playoutId in collectionUpdateResult.ModifiedPlayoutIds) - { - await Channel.WriteAsync(new BuildPlayout(playoutId, true)); - } - Snackbar.Add($"Added {season.Title} to collection {collection.Name}", Severity.Success); - }); + Right: _ => Snackbar.Add($"Added {season.Title} to collection {collection.Name}", Severity.Success)); } } } diff --git a/ErsatzTV/Pages/TelevisionShowList.razor b/ErsatzTV/Pages/TelevisionShowList.razor index 15d774c23..a6845766a 100644 --- a/ErsatzTV/Pages/TelevisionShowList.razor +++ b/ErsatzTV/Pages/TelevisionShowList.razor @@ -3,7 +3,7 @@ @using ErsatzTV.Application.MediaCards.Queries @using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands -@using ErsatzTV.Application.Playouts.Commands +@using Unit = LanguageExt.Unit @inject ILogger Logger @inject ISnackbar Snackbar @inject IMediator Mediator @@ -70,21 +70,14 @@ if (!result.Cancelled && result.Data is MediaCollectionViewModel collection) { var request = new AddShowToCollection(collection.Id, show.TelevisionShowId); - Either addResult = await Mediator.Send(request); + Either addResult = await Mediator.Send(request); addResult.Match( Left: error => { Snackbar.Add($"Unexpected error adding show to collection: {error.Value}"); Logger.LogError("Unexpected error adding show to collection: {Error}", error.Value); }, - Right: async collectionUpdateResult => - { - foreach (int playoutId in collectionUpdateResult.ModifiedPlayoutIds) - { - await Channel.WriteAsync(new BuildPlayout(playoutId, true)); - } - Snackbar.Add($"Added {show.Title} to collection {collection.Name}", Severity.Success); - }); + Right: _ => Snackbar.Add($"Added {show.Title} to collection {collection.Name}", Severity.Success)); } } }