Files
WatchIt/WatchIt.Website/WatchIt.Website/Pages/MediaDataPage.razor.cs

92 lines
2.6 KiB
C#
Raw Normal View History

2024-09-19 13:36:01 +02:00
using Microsoft.AspNetCore.Components;
2024-09-19 22:58:39 +02:00
using WatchIt.Common.Model.Genres;
2024-09-19 13:36:01 +02:00
using WatchIt.Common.Model.Media;
2024-09-19 22:58:39 +02:00
using WatchIt.Common.Model.Movies;
2024-09-19 13:36:01 +02:00
using WatchIt.Website.Services.Utility.Authentication;
using WatchIt.Website.Services.WebAPI.Media;
using WatchIt.Website.Services.WebAPI.Movies;
namespace WatchIt.Website.Pages;
public partial class MediaDataPage : ComponentBase
{
#region SERVICES
[Inject] public NavigationManager NavigationManager { get; set; } = default!;
[Inject] public IAuthenticationService AuthenticationService { get; set; } = default!;
[Inject] public IMoviesWebAPIService MoviesWebAPIService { get; set; } = default!;
[Inject] public IMediaWebAPIService MediaWebAPIService { get; set; } = default!;
#endregion
#region PARAMETERS
[Parameter]
public long Id { get; set; }
#endregion
#region FIELDS
private bool _loaded = false;
private string? _error;
private MediaResponse? _media;
2024-09-19 22:58:39 +02:00
private MovieResponse? _movie;
private IEnumerable<GenreResponse> _genres;
private MediaPhotoResponse? _background;
2024-09-19 13:36:01 +02:00
private MediaPosterResponse? _poster;
private User? _user;
#endregion
#region PRIVATE METHODS
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await MediaWebAPIService.Get(Id, data => _media = data, () => _error = $"Media with id {Id} was not found");
if (_error is null)
{
2024-09-19 22:58:39 +02:00
Task backgroundTask = MediaWebAPIService.GetPhotoMediaRandomBackground(Id, data => _background = data);
2024-09-19 13:36:01 +02:00
Task posterTask = MediaWebAPIService.GetPoster(Id, data => _poster = data);
2024-09-19 22:58:39 +02:00
Task<User?> userTask = AuthenticationService.GetUserAsync();
Task genresTask = MediaWebAPIService.GetGenres(Id, data => _genres = data);
Task specificMediaTask;
if (_media.Type == MediaType.Movie)
{
specificMediaTask = MoviesWebAPIService.Get(Id, data => _movie = data);
}
else
{
// TODO: download tv series info
specificMediaTask = null;
}
2024-09-19 13:36:01 +02:00
await Task.WhenAll(
[
2024-09-19 22:58:39 +02:00
userTask,
specificMediaTask,
genresTask,
backgroundTask,
posterTask,
2024-09-19 13:36:01 +02:00
]);
_user = await userTask;
}
_loaded = true;
StateHasChanged();
}
}
#endregion
}