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
|
|
|
|
|
|
}
|