52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using Manager.App.Components.Dialogs;
|
|
using Manager.App.Models.Library;
|
|
using Manager.Data.Entities.LibraryContext;
|
|
using Microsoft.AspNetCore.Components;
|
|
using MudBlazor;
|
|
|
|
namespace Manager.App.Components.Pages;
|
|
|
|
public partial class Channels : ComponentBase
|
|
{
|
|
private readonly DialogOptions _dialogOptions = new() { BackdropClick = false, CloseButton = true, FullWidth = true, MaxWidth = MaxWidth.ExtraLarge };
|
|
private MudTable<ChannelEntity>? _table;
|
|
|
|
private async Task<TableData<ChannelEntity>> ServerReload(TableState state, CancellationToken token)
|
|
{
|
|
var results = await LibraryService.GetChannelsAsync(state.PageSize, state.Page * state.PageSize, token);
|
|
return !results.IsSuccess ? new TableData<ChannelEntity>() : new TableData<ChannelEntity> { Items = results.Value, TotalItems = results.Total };
|
|
}
|
|
|
|
private async Task OnAddAccountDialogAsync()
|
|
{
|
|
var libSettings = LibraryOptions.Value;
|
|
var parameters = new DialogParameters<AccountDialog> { { x => x.DefaultUserAgent, libSettings.DefaultUserAgent } };
|
|
var dialog = await DialogService.ShowAsync<AccountDialog>("Add account", parameters, _dialogOptions);
|
|
var result = await dialog.Result;
|
|
|
|
if (result == null || result.Canceled || result.Data == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var clientPrep = (ClientChannel)result.Data;
|
|
if (clientPrep?.YouTubeClient == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var savedResult = await ClientService.SaveClientAsync(clientPrep.YouTubeClient, clientPrep.Channel);
|
|
if (!savedResult.IsSuccess)
|
|
{
|
|
Snackbar.Add($"Failed to store client: {savedResult.Error?.Description ?? "Unknown!"}", Severity.Error);
|
|
}
|
|
else
|
|
{
|
|
if (_table != null)
|
|
{
|
|
await _table.ReloadServerData();
|
|
}
|
|
Snackbar.Add($"Client {clientPrep.Channel?.Handle ?? clientPrep.YouTubeClient.Id} saved!", Severity.Success);
|
|
}
|
|
}
|
|
} |