refactor namespaces and imports (#670)
* re-namespace * optimize usings * more usings * more of the same * more implicit/global usings * cleanup all usings * minor fixes
This commit is contained in:
@@ -1,16 +1,10 @@
|
||||
@page "/media/music/artists/{ArtistId:int}"
|
||||
@using ErsatzTV.Application.Artists
|
||||
@using ErsatzTV.Application.Artists.Queries
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCards.Queries
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using ErsatzTV.Application.ProgramSchedules.Commands
|
||||
@using System.Globalization
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Artists
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using System.Globalization
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject IDialogService _dialog
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
@page "/media/music/artists"
|
||||
@page "/media/music/artists/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using Microsoft.AspNetCore.WebUtilities
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<MusicVideoList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -2,18 +2,13 @@
|
||||
@page "/channels/add"
|
||||
@using static LanguageExt.Prelude
|
||||
@using ErsatzTV.Application.FFmpegProfiles
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Queries
|
||||
@using ErsatzTV.Application.Images.Commands
|
||||
@using ErsatzTV.Application.MediaItems.Queries
|
||||
@using System.Globalization
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Channels
|
||||
@using ErsatzTV.Application.Channels.Queries
|
||||
@using ErsatzTV.Application.Filler
|
||||
@using ErsatzTV.Application.Filler.Queries
|
||||
@using ErsatzTV.Application.Images
|
||||
@using ErsatzTV.Application.MediaItems
|
||||
@using ErsatzTV.Application.Watermarks
|
||||
@using ErsatzTV.Application.Watermarks.Queries
|
||||
@using System.Globalization
|
||||
@using ErsatzTV.Core.Domain.Filler
|
||||
@using ErsatzTV.Application.Channels
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<ChannelEditor> _logger
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
@page "/channels"
|
||||
@using ErsatzTV.Application.Channels
|
||||
@using ErsatzTV.Application.Channels.Commands
|
||||
@using ErsatzTV.Application.Channels.Queries
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@using ErsatzTV.Application.FFmpegProfiles
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Queries
|
||||
@using System.Globalization
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/media/collections/{Id:int}/edit"
|
||||
@page "/media/collections/add"
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.MediaCollections.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<CollectionEditor> _logger
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
@page "/media/collections/{Id:int}"
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCards.Queries
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@inherits MultiSelectBase<CollectionItems>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
@page "/media/collections"
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.MediaCollections.Queries
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using ErsatzTV.Extensions
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/sources/emby/{Id:int}/libraries"
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Emby.Commands
|
||||
@using ErsatzTV.Application.Emby.Queries
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@using ErsatzTV.Application.Emby
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject ChannelWriter<IEmbyBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/media/sources/emby/edit"
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Core.Emby
|
||||
@using ErsatzTV.Application.Emby.Queries
|
||||
@using ErsatzTV.Application.Emby.Commands
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Emby
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject NavigationManager _navigationManager
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
@page "/media/sources/emby"
|
||||
@using ErsatzTV.Core.Interfaces.Emby
|
||||
@using ErsatzTV.Application.Emby.Commands
|
||||
@using ErsatzTV.Application.Emby.Queries
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Emby
|
||||
@implements IDisposable
|
||||
@inject IEmbySecretStore _embySecretStore
|
||||
@inject ChannelWriter<IEmbyBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/sources/emby/{Id:int}/paths"
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@using ErsatzTV.Application.Emby.Queries
|
||||
@using ErsatzTV.Application.Emby
|
||||
@using ErsatzTV.Application.Emby.Commands
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<ScheduleItemsEditor> _logger
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
@page "/media/tv/episodes"
|
||||
@page "/media/tv/episodes/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using Microsoft.AspNetCore.WebUtilities
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<EpisodeList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
@page "/ffmpeg"
|
||||
@using ErsatzTV.Application.FFmpegProfiles
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Commands
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
@page "/ffmpeg/{Id:int}"
|
||||
@page "/ffmpeg/add"
|
||||
@using ErsatzTV.Application.Resolutions
|
||||
@using ErsatzTV.Application.Resolutions.Queries
|
||||
@using ErsatzTV.Application.FFmpegProfiles
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Commands
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Queries
|
||||
@using ErsatzTV.Core.FFmpeg
|
||||
@using Microsoft.AspNetCore.Components
|
||||
@using Microsoft.Extensions.Caching.Memory
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Resolutions
|
||||
@using ErsatzTV.Core.FFmpeg
|
||||
@using ErsatzTV.Application.FFmpegProfiles
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<FFmpegEditor> _logger
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
@page "/media/filler/presets/{Id:int}/edit"
|
||||
@page "/media/filler/presets/add"
|
||||
@using ErsatzTV.Application.Filler
|
||||
@using ErsatzTV.Application.Filler.Queries
|
||||
@using ErsatzTV.Application.Television.Queries
|
||||
@using ErsatzTV.Application.Artists.Queries
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Queries
|
||||
@using ErsatzTV.Application.MediaItems
|
||||
@using ErsatzTV.Application.Television
|
||||
@using ErsatzTV.Core.Domain.Filler
|
||||
@using Microsoft.AspNetCore.Components
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Artists
|
||||
@using ErsatzTV.Application.Filler
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<FillerPresetEditor> _logger
|
||||
@@ -220,7 +216,7 @@
|
||||
_messageStore.Clear();
|
||||
if (_editContext.Validate())
|
||||
{
|
||||
IRequest<Either<BaseError, LanguageExt.Unit>> request = IsEdit ? _model.ToEdit() : _model.ToUpdate();
|
||||
IRequest<Either<BaseError, Unit>> request = IsEdit ? _model.ToEdit() : _model.ToUpdate();
|
||||
|
||||
Seq<BaseError> errorMessage = await _mediator.Send(request, _cts.Token)
|
||||
.Map(result => result.LeftToSeq());
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
@page "/media/filler/presets"
|
||||
@using ErsatzTV.Application.Filler
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using ErsatzTV.Application.Filler.Commands
|
||||
@using ErsatzTV.Application.Filler.Queries
|
||||
@using ErsatzTV.Core.Domain.Filler
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,53 +1,36 @@
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using ErsatzTV.Extensions;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Routing;
|
||||
using Microsoft.JSInterop;
|
||||
|
||||
namespace ErsatzTV.Pages
|
||||
namespace ErsatzTV.Pages;
|
||||
|
||||
public class FragmentNavigationBase : ComponentBase, IDisposable
|
||||
{
|
||||
public class FragmentNavigationBase : ComponentBase, IDisposable
|
||||
{
|
||||
private readonly CancellationTokenSource _cts = new();
|
||||
private readonly CancellationTokenSource _cts = new();
|
||||
|
||||
protected CancellationToken CancellationToken => _cts.Token;
|
||||
protected CancellationToken CancellationToken => _cts.Token;
|
||||
|
||||
[Inject]
|
||||
private NavigationManager NavManager { get; set; }
|
||||
[Inject]
|
||||
private NavigationManager NavManager { get; set; }
|
||||
|
||||
[Inject]
|
||||
private IJSRuntime JsRuntime { get; set; }
|
||||
[Inject]
|
||||
private IJSRuntime JsRuntime { get; set; }
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
NavManager.LocationChanged -= TryFragmentNavigation;
|
||||
public void Dispose()
|
||||
{
|
||||
NavManager.LocationChanged -= TryFragmentNavigation;
|
||||
|
||||
_cts?.Cancel();
|
||||
_cts?.Dispose();
|
||||
}
|
||||
_cts?.Cancel();
|
||||
_cts?.Dispose();
|
||||
}
|
||||
|
||||
protected override void OnInitialized() => NavManager.LocationChanged += TryFragmentNavigation;
|
||||
protected override void OnInitialized() => NavManager.LocationChanged += TryFragmentNavigation;
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
try
|
||||
{
|
||||
await NavManager.NavigateToFragmentAsync(JsRuntime);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage("ReSharper", "VSTHRD100")]
|
||||
private async void TryFragmentNavigation(object sender, LocationChangedEventArgs args)
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -59,4 +42,17 @@ namespace ErsatzTV.Pages
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage("ReSharper", "VSTHRD100")]
|
||||
private async void TryFragmentNavigation(object sender, LocationChangedEventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
await NavManager.NavigateToFragmentAsync(JsRuntime);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
@page "/"
|
||||
@using Microsoft.Extensions.Caching.Memory
|
||||
@using System.Reflection
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Health.Queries
|
||||
@using ErsatzTV.Core.Health
|
||||
@using ErsatzTV.Core.Interfaces.GitHub
|
||||
@using ErsatzTV.Core.Health
|
||||
@using ErsatzTV.Application.Health
|
||||
@implements IDisposable
|
||||
@inject IGitHubApiClient _gitHubApiClient
|
||||
@inject IMemoryCache _memoryCache
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/sources/jellyfin/{Id:int}/libraries"
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Jellyfin.Commands
|
||||
@using ErsatzTV.Application.Jellyfin.Queries
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@using ErsatzTV.Application.Jellyfin
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject ChannelWriter<IJellyfinBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/media/sources/jellyfin/edit"
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Core.Jellyfin
|
||||
@using ErsatzTV.Application.Jellyfin.Queries
|
||||
@using ErsatzTV.Application.Jellyfin.Commands
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Jellyfin
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject NavigationManager _navigationManager
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
@page "/media/sources/jellyfin"
|
||||
@using ErsatzTV.Core.Interfaces.Jellyfin
|
||||
@using ErsatzTV.Application.Jellyfin.Commands
|
||||
@using ErsatzTV.Application.Jellyfin.Queries
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Jellyfin
|
||||
@implements IDisposable
|
||||
@inject IJellyfinSecretStore _jellyfinSecretStore
|
||||
@inject ChannelWriter<IJellyfinBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/sources/jellyfin/{Id:int}/paths"
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@using ErsatzTV.Application.Jellyfin.Queries
|
||||
@using ErsatzTV.Application.Jellyfin
|
||||
@using ErsatzTV.Application.Jellyfin.Commands
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<ScheduleItemsEditor> _logger
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
@page "/media/libraries"
|
||||
@using MediatR.Courier
|
||||
@using ErsatzTV.Application.Libraries
|
||||
@using ErsatzTV.Application.Libraries.Queries
|
||||
@using ErsatzTV.Application.MediaSources.Commands
|
||||
@using ErsatzTV.Application.Plex.Commands
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@using ErsatzTV.Application.Plex
|
||||
@using ErsatzTV.Core.Metadata
|
||||
@using System.Threading
|
||||
@using PlexLibraryViewModel = ErsatzTV.Application.Libraries.PlexLibraryViewModel
|
||||
@using ErsatzTV.Application.Jellyfin
|
||||
@using ErsatzTV.Application.Jellyfin.Commands
|
||||
@using ErsatzTV.Application.Emby
|
||||
@using ErsatzTV.Application.Emby.Commands
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject IEntityLocker _locker
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
@page "/media/sources/local"
|
||||
@using ErsatzTV.Application.Libraries
|
||||
@using ErsatzTV.Application.Libraries.Commands
|
||||
@using ErsatzTV.Application.Libraries.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/sources/local/{Id:int}/edit"
|
||||
@page "/media/sources/local/add"
|
||||
@using ErsatzTV.Application.Libraries
|
||||
@using ErsatzTV.Application.Libraries.Commands
|
||||
@using ErsatzTV.Application.Libraries.Queries
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IEntityLocker _locker
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/media/libraries/local/{Id:int}/add"
|
||||
@using ErsatzTV.Application.Libraries
|
||||
@using ErsatzTV.Application.Libraries.Commands
|
||||
@using ErsatzTV.Application.Libraries.Queries
|
||||
@using ErsatzTV.Application.MediaSources.Commands
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<LocalLibraryPathEditor> _logger
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/system/logs"
|
||||
@using ErsatzTV.Application.Logs
|
||||
@using ErsatzTV.Application.Logs.Queries
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
@page "/media/movies/{MovieId:int}"
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.Movies
|
||||
@using ErsatzTV.Application.Movies.Queries
|
||||
@using System.Globalization
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Extensions
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject IDialogService _dialog
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
@page "/media/movies"
|
||||
@page "/media/movies/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<MovieList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/media/multi-collections/{Id:int}/edit"
|
||||
@page "/media/multi-collections/add"
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.MediaCollections.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject NavigationManager _navigationManager
|
||||
|
||||
+151
-162
@@ -1,185 +1,174 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using ErsatzTV.Application.MediaCards;
|
||||
using ErsatzTV.Application.MediaCards;
|
||||
using ErsatzTV.Application.MediaCollections;
|
||||
using ErsatzTV.Application.MediaCollections.Commands;
|
||||
using ErsatzTV.Core;
|
||||
using ErsatzTV.Shared;
|
||||
using LanguageExt;
|
||||
using LanguageExt.UnsafeValueAccess;
|
||||
using MediatR;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Web;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MudBlazor;
|
||||
using static LanguageExt.Prelude;
|
||||
using Unit = LanguageExt.Unit;
|
||||
|
||||
namespace ErsatzTV.Pages
|
||||
namespace ErsatzTV.Pages;
|
||||
|
||||
public class MultiSelectBase<T> : FragmentNavigationBase
|
||||
{
|
||||
public class MultiSelectBase<T> : FragmentNavigationBase
|
||||
private readonly System.Collections.Generic.HashSet<MediaCardViewModel> _selectedItems;
|
||||
private Option<MediaCardViewModel> _recentlySelected;
|
||||
|
||||
public MultiSelectBase()
|
||||
{
|
||||
private readonly System.Collections.Generic.HashSet<MediaCardViewModel> _selectedItems;
|
||||
private Option<MediaCardViewModel> _recentlySelected;
|
||||
_recentlySelected = None;
|
||||
_selectedItems = new System.Collections.Generic.HashSet<MediaCardViewModel>();
|
||||
}
|
||||
|
||||
public MultiSelectBase()
|
||||
[Inject]
|
||||
protected IDialogService Dialog { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected ISnackbar Snackbar { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected ILogger<T> Logger { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected IMediator Mediator { get; set; }
|
||||
|
||||
protected System.Collections.Generic.HashSet<MediaCardViewModel> SelectedItems => _selectedItems;
|
||||
|
||||
protected bool IsSelected(MediaCardViewModel card) =>
|
||||
_selectedItems.Contains(card);
|
||||
|
||||
protected bool IsSelectMode() =>
|
||||
_selectedItems.Any();
|
||||
|
||||
protected string SelectionLabel() =>
|
||||
$"{_selectedItems.Count} {(_selectedItems.Count == 1 ? "Item" : "Items")} Selected";
|
||||
|
||||
protected void ClearSelection()
|
||||
{
|
||||
_selectedItems.Clear();
|
||||
_recentlySelected = None;
|
||||
}
|
||||
|
||||
protected virtual Task RefreshData() => Task.CompletedTask;
|
||||
|
||||
protected void SelectClicked(
|
||||
Func<List<MediaCardViewModel>> getSortedItems,
|
||||
MediaCardViewModel card,
|
||||
MouseEventArgs e)
|
||||
{
|
||||
if (_selectedItems.Contains(card))
|
||||
{
|
||||
_recentlySelected = None;
|
||||
_selectedItems = new System.Collections.Generic.HashSet<MediaCardViewModel>();
|
||||
_selectedItems.Remove(card);
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected IDialogService Dialog { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected ISnackbar Snackbar { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected ILogger<T> Logger { get; set; }
|
||||
|
||||
[Inject]
|
||||
protected IMediator Mediator { get; set; }
|
||||
|
||||
protected System.Collections.Generic.HashSet<MediaCardViewModel> SelectedItems => _selectedItems;
|
||||
|
||||
protected bool IsSelected(MediaCardViewModel card) =>
|
||||
_selectedItems.Contains(card);
|
||||
|
||||
protected bool IsSelectMode() =>
|
||||
_selectedItems.Any();
|
||||
|
||||
protected string SelectionLabel() =>
|
||||
$"{_selectedItems.Count} {(_selectedItems.Count == 1 ? "Item" : "Items")} Selected";
|
||||
|
||||
protected void ClearSelection()
|
||||
else
|
||||
{
|
||||
_selectedItems.Clear();
|
||||
_recentlySelected = None;
|
||||
}
|
||||
|
||||
protected virtual Task RefreshData() => Task.CompletedTask;
|
||||
|
||||
protected void SelectClicked(
|
||||
Func<List<MediaCardViewModel>> getSortedItems,
|
||||
MediaCardViewModel card,
|
||||
MouseEventArgs e)
|
||||
{
|
||||
if (_selectedItems.Contains(card))
|
||||
if (e.ShiftKey && _recentlySelected.IsSome)
|
||||
{
|
||||
_selectedItems.Remove(card);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (e.ShiftKey && _recentlySelected.IsSome)
|
||||
List<MediaCardViewModel> sorted = getSortedItems();
|
||||
|
||||
int start = sorted.IndexOf(_recentlySelected.ValueUnsafe());
|
||||
int finish = sorted.IndexOf(card);
|
||||
if (start > finish)
|
||||
{
|
||||
List<MediaCardViewModel> sorted = getSortedItems();
|
||||
|
||||
int start = sorted.IndexOf(_recentlySelected.ValueUnsafe());
|
||||
int finish = sorted.IndexOf(card);
|
||||
if (start > finish)
|
||||
{
|
||||
(start, finish) = (finish, start);
|
||||
}
|
||||
|
||||
for (int i = start; i < finish; i++)
|
||||
{
|
||||
_selectedItems.Add(sorted[i]);
|
||||
}
|
||||
(start, finish) = (finish, start);
|
||||
}
|
||||
|
||||
_recentlySelected = card;
|
||||
_selectedItems.Add(card);
|
||||
for (int i = start; i < finish; i++)
|
||||
{
|
||||
_selectedItems.Add(sorted[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected Task AddSelectionToCollection() => AddItemsToCollection(
|
||||
_selectedItems.OfType<MovieCardViewModel>().Map(m => m.MovieId).ToList(),
|
||||
_selectedItems.OfType<TelevisionShowCardViewModel>().Map(s => s.TelevisionShowId).ToList(),
|
||||
_selectedItems.OfType<TelevisionSeasonCardViewModel>().Map(s => s.TelevisionSeasonId).ToList(),
|
||||
_selectedItems.OfType<TelevisionEpisodeCardViewModel>().Map(e => e.EpisodeId).ToList(),
|
||||
_selectedItems.OfType<ArtistCardViewModel>().Map(a => a.ArtistId).ToList(),
|
||||
_selectedItems.OfType<MusicVideoCardViewModel>().Map(mv => mv.MusicVideoId).ToList(),
|
||||
_selectedItems.OfType<OtherVideoCardViewModel>().Map(ov => ov.OtherVideoId).ToList(),
|
||||
_selectedItems.OfType<SongCardViewModel>().Map(s => s.SongId).ToList());
|
||||
|
||||
protected async Task AddItemsToCollection(
|
||||
List<int> movieIds,
|
||||
List<int> showIds,
|
||||
List<int> seasonIds,
|
||||
List<int> episodeIds,
|
||||
List<int> artistIds,
|
||||
List<int> musicVideoIds,
|
||||
List<int> otherVideoIds,
|
||||
List<int> songIds,
|
||||
string entityName = "selected items")
|
||||
{
|
||||
int count = movieIds.Count + showIds.Count + seasonIds.Count + episodeIds.Count + artistIds.Count +
|
||||
musicVideoIds.Count + otherVideoIds.Count + songIds.Count;
|
||||
|
||||
var parameters = new DialogParameters
|
||||
{ { "EntityType", count.ToString() }, { "EntityName", entityName } };
|
||||
var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall };
|
||||
|
||||
IDialogReference dialog = Dialog.Show<AddToCollectionDialog>("Add To Collection", parameters, options);
|
||||
DialogResult result = await dialog.Result;
|
||||
if (!result.Cancelled && result.Data is MediaCollectionViewModel collection)
|
||||
{
|
||||
var request = new AddItemsToCollection(
|
||||
collection.Id,
|
||||
movieIds,
|
||||
showIds,
|
||||
seasonIds,
|
||||
episodeIds,
|
||||
artistIds,
|
||||
musicVideoIds,
|
||||
otherVideoIds,
|
||||
songIds);
|
||||
|
||||
Either<BaseError, Unit> addResult = await Mediator.Send(request, CancellationToken);
|
||||
addResult.Match(
|
||||
Left: error =>
|
||||
{
|
||||
Snackbar.Add($"Unexpected error adding items to collection: {error.Value}");
|
||||
Logger.LogError("Unexpected error adding items to collection: {Error}", error.Value);
|
||||
},
|
||||
Right: _ =>
|
||||
{
|
||||
Snackbar.Add(
|
||||
$"Added {count} items to collection {collection.Name}",
|
||||
Severity.Success);
|
||||
ClearSelection();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task RemoveSelectionFromCollection(int collectionId)
|
||||
{
|
||||
var parameters = new DialogParameters
|
||||
{ { "EntityType", _selectedItems.Count.ToString() }, { "EntityName", "selected items" } };
|
||||
var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall };
|
||||
|
||||
IDialogReference dialog = Dialog.Show<RemoveFromCollectionDialog>(
|
||||
"Remove From Collection",
|
||||
parameters,
|
||||
options);
|
||||
DialogResult result = await dialog.Result;
|
||||
if (!result.Cancelled)
|
||||
{
|
||||
var itemIds = _selectedItems.Map(vm => vm.MediaItemId).ToList();
|
||||
|
||||
await Mediator.Send(
|
||||
new RemoveItemsFromCollection(collectionId)
|
||||
{
|
||||
MediaItemIds = itemIds
|
||||
},
|
||||
CancellationToken);
|
||||
|
||||
await RefreshData();
|
||||
ClearSelection();
|
||||
}
|
||||
_recentlySelected = card;
|
||||
_selectedItems.Add(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected Task AddSelectionToCollection() => AddItemsToCollection(
|
||||
_selectedItems.OfType<MovieCardViewModel>().Map(m => m.MovieId).ToList(),
|
||||
_selectedItems.OfType<TelevisionShowCardViewModel>().Map(s => s.TelevisionShowId).ToList(),
|
||||
_selectedItems.OfType<TelevisionSeasonCardViewModel>().Map(s => s.TelevisionSeasonId).ToList(),
|
||||
_selectedItems.OfType<TelevisionEpisodeCardViewModel>().Map(e => e.EpisodeId).ToList(),
|
||||
_selectedItems.OfType<ArtistCardViewModel>().Map(a => a.ArtistId).ToList(),
|
||||
_selectedItems.OfType<MusicVideoCardViewModel>().Map(mv => mv.MusicVideoId).ToList(),
|
||||
_selectedItems.OfType<OtherVideoCardViewModel>().Map(ov => ov.OtherVideoId).ToList(),
|
||||
_selectedItems.OfType<SongCardViewModel>().Map(s => s.SongId).ToList());
|
||||
|
||||
protected async Task AddItemsToCollection(
|
||||
List<int> movieIds,
|
||||
List<int> showIds,
|
||||
List<int> seasonIds,
|
||||
List<int> episodeIds,
|
||||
List<int> artistIds,
|
||||
List<int> musicVideoIds,
|
||||
List<int> otherVideoIds,
|
||||
List<int> songIds,
|
||||
string entityName = "selected items")
|
||||
{
|
||||
int count = movieIds.Count + showIds.Count + seasonIds.Count + episodeIds.Count + artistIds.Count +
|
||||
musicVideoIds.Count + otherVideoIds.Count + songIds.Count;
|
||||
|
||||
var parameters = new DialogParameters
|
||||
{ { "EntityType", count.ToString() }, { "EntityName", entityName } };
|
||||
var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall };
|
||||
|
||||
IDialogReference dialog = Dialog.Show<AddToCollectionDialog>("Add To Collection", parameters, options);
|
||||
DialogResult result = await dialog.Result;
|
||||
if (!result.Cancelled && result.Data is MediaCollectionViewModel collection)
|
||||
{
|
||||
var request = new AddItemsToCollection(
|
||||
collection.Id,
|
||||
movieIds,
|
||||
showIds,
|
||||
seasonIds,
|
||||
episodeIds,
|
||||
artistIds,
|
||||
musicVideoIds,
|
||||
otherVideoIds,
|
||||
songIds);
|
||||
|
||||
Either<BaseError, Unit> addResult = await Mediator.Send(request, CancellationToken);
|
||||
addResult.Match(
|
||||
Left: error =>
|
||||
{
|
||||
Snackbar.Add($"Unexpected error adding items to collection: {error.Value}");
|
||||
Logger.LogError("Unexpected error adding items to collection: {Error}", error.Value);
|
||||
},
|
||||
Right: _ =>
|
||||
{
|
||||
Snackbar.Add(
|
||||
$"Added {count} items to collection {collection.Name}",
|
||||
Severity.Success);
|
||||
ClearSelection();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task RemoveSelectionFromCollection(int collectionId)
|
||||
{
|
||||
var parameters = new DialogParameters
|
||||
{ { "EntityType", _selectedItems.Count.ToString() }, { "EntityName", "selected items" } };
|
||||
var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall };
|
||||
|
||||
IDialogReference dialog = Dialog.Show<RemoveFromCollectionDialog>(
|
||||
"Remove From Collection",
|
||||
parameters,
|
||||
options);
|
||||
DialogResult result = await dialog.Result;
|
||||
if (!result.Cancelled)
|
||||
{
|
||||
var itemIds = _selectedItems.Map(vm => vm.MediaItemId).ToList();
|
||||
|
||||
await Mediator.Send(
|
||||
new RemoveItemsFromCollection(collectionId)
|
||||
{
|
||||
MediaItemIds = itemIds
|
||||
},
|
||||
CancellationToken);
|
||||
|
||||
await RefreshData();
|
||||
ClearSelection();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,10 @@
|
||||
@page "/media/music/videos"
|
||||
@page "/media/music/videos/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using Microsoft.AspNetCore.WebUtilities
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<MusicVideoList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
@page "/media/other/videos"
|
||||
@page "/media/other/videos/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<OtherVideoList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/playouts/add"
|
||||
@using ErsatzTV.Application.Channels
|
||||
@using ErsatzTV.Application.Channels.Queries
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using ErsatzTV.Application.ProgramSchedules.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<PlayoutEditor> _logger
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/playouts"
|
||||
@using ErsatzTV.Application.Playouts
|
||||
@using ErsatzTV.Application.Playouts.Commands
|
||||
@using ErsatzTV.Application.Playouts.Queries
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/sources/plex/{Id:int}/libraries"
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Plex.Commands
|
||||
@using ErsatzTV.Application.Plex.Queries
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@using ErsatzTV.Application.Plex
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject ChannelWriter<IPlexBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@page "/media/sources/plex"
|
||||
@using ErsatzTV.Core.Interfaces.Plex
|
||||
@using ErsatzTV.Application.Plex
|
||||
@using ErsatzTV.Application.Plex.Commands
|
||||
@using ErsatzTV.Application.Plex.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/sources/plex/{Id:int}/paths"
|
||||
@using ErsatzTV.Application.MediaSources
|
||||
@using ErsatzTV.Application.Plex
|
||||
@using ErsatzTV.Application.Plex.Commands
|
||||
@using ErsatzTV.Application.Plex.Queries
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<ScheduleItemsEditor> _logger
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
@page "/schedules/{Id:int}"
|
||||
@page "/schedules/add"
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using ErsatzTV.Application.ProgramSchedules.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<ScheduleEditor> _logger
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
@page "/schedules/{Id:int}/items"
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Queries
|
||||
@using ErsatzTV.Application.MediaItems
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using ErsatzTV.Application.ProgramSchedules.Commands
|
||||
@using ErsatzTV.Application.ProgramSchedules.Queries
|
||||
@using ErsatzTV.Application.Television.Queries
|
||||
@using ErsatzTV.Application.Artists.Queries
|
||||
@using ErsatzTV.Application.Television
|
||||
@using ErsatzTV.Application.Filler
|
||||
@using ErsatzTV.Application.Filler.Queries
|
||||
@using ErsatzTV.Core.Domain.Filler
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Artists
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<ScheduleItemsEditor> _logger
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
@page "/schedules"
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using ErsatzTV.Application.ProgramSchedules.Commands
|
||||
@using ErsatzTV.Application.ProgramSchedules.Queries
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@using NaturalSort.Extension
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
@page "/search"
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@inherits MultiSelectBase<Search>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
@page "/settings"
|
||||
@using ErsatzTV.Application.FFmpegProfiles
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Commands
|
||||
@using ErsatzTV.Application.FFmpegProfiles.Queries
|
||||
@using ErsatzTV.Application.HDHR.Commands
|
||||
@using ErsatzTV.Application.HDHR.Queries
|
||||
@using ErsatzTV.Application.MediaItems.Queries
|
||||
@using System.Globalization
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using ErsatzTV.Application.Filler
|
||||
@using ErsatzTV.Application.Filler.Queries
|
||||
@using ErsatzTV.Application.HDHR
|
||||
@using ErsatzTV.Application.MediaItems
|
||||
@using ErsatzTV.Application.Watermarks
|
||||
@using ErsatzTV.Application.Watermarks.Queries
|
||||
@using System.Globalization
|
||||
@using ErsatzTV.Core.Domain.Filler
|
||||
@using ErsatzTV.Core.FFmpeg
|
||||
@using Microsoft.AspNetCore.Components
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject ISnackbar _snackbar
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
@page "/media/music/songs"
|
||||
@page "/media/music/songs/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<SongList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
@page "/media/tv/seasons/{SeasonId:int}"
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.Television
|
||||
@using ErsatzTV.Application.Television.Queries
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCards.Queries
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using ErsatzTV.Application.ProgramSchedules.Commands
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject ILogger<TelevisionEpisodeList> _logger
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
@page "/media/tv/shows/{ShowId:int}"
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.Television
|
||||
@using ErsatzTV.Application.Television.Queries
|
||||
@using System.Globalization
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCards.Queries
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.ProgramSchedules
|
||||
@using ErsatzTV.Application.ProgramSchedules.Commands
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IMediator _mediator
|
||||
@inject ILogger<TelevisionSeasonList> _logger
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
@page "/media/tv/seasons"
|
||||
@page "/media/tv/seasons/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<TelevisionShowList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
@page "/media/tv/shows"
|
||||
@page "/media/tv/shows/page/{PageNumber:int}"
|
||||
@using LanguageExt.UnsafeValueAccess
|
||||
@using ErsatzTV.Extensions
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Search
|
||||
@inherits MultiSelectBase<TelevisionShowList>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
@page "/media/trakt/lists"
|
||||
@using ErsatzTV.Application.MediaCollections
|
||||
@using ErsatzTV.Application.MediaCollections.Queries
|
||||
@using ErsatzTV.Application.Configuration.Queries
|
||||
@using ErsatzTV.Application.Configuration.Commands
|
||||
@using ErsatzTV.Application.MediaCollections.Commands
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Configuration
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
@page "/media/trash"
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.Search.Queries
|
||||
@using ErsatzTV.Extensions
|
||||
@using Unit = LanguageExt.Unit
|
||||
@using ErsatzTV.Application.Maintenance.Commands
|
||||
@using ErsatzTV.Application.MediaCards
|
||||
@using ErsatzTV.Application.Search
|
||||
@using ErsatzTV.Application.Maintenance
|
||||
@inherits MultiSelectBase<Search>
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ChannelWriter<IBackgroundServiceRequest> _channel
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
@page "/watermarks/{Id:int}"
|
||||
@page "/watermarks/add"
|
||||
@using ErsatzTV.Application.Images.Commands
|
||||
@using ErsatzTV.Application.Watermarks
|
||||
@using ErsatzTV.Application.Watermarks.Queries
|
||||
@using ErsatzTV.FFmpeg.State
|
||||
@using System.Threading
|
||||
@using ErsatzTV.Application.Watermarks
|
||||
@using ErsatzTV.Application.Images
|
||||
@implements IDisposable
|
||||
@inject NavigationManager _navigationManager
|
||||
@inject ILogger<WatermarkEditor> _logger
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
@page "/watermarks"
|
||||
@using ErsatzTV.Application.Watermarks
|
||||
@using ErsatzTV.Application.Watermarks.Commands
|
||||
@using ErsatzTV.Application.Watermarks.Queries
|
||||
@using System.Threading
|
||||
@implements IDisposable
|
||||
@inject IDialogService _dialog
|
||||
@inject IMediator _mediator
|
||||
|
||||
Reference in New Issue
Block a user