diff --git a/WatchIt.Website/WatchIt.Website.Services/WatchIt.Website.Services.WebAPI/WatchIt.Website.Services.WebAPI.Media/MediaWebAPIService.cs b/WatchIt.Website/WatchIt.Website.Services/WatchIt.Website.Services.WebAPI/WatchIt.Website.Services.WebAPI.Media/MediaWebAPIService.cs index 79de26a..6124439 100644 --- a/WatchIt.Website/WatchIt.Website.Services/WatchIt.Website.Services.WebAPI/WatchIt.Website.Services.WebAPI.Media/MediaWebAPIService.cs +++ b/WatchIt.Website/WatchIt.Website.Services/WatchIt.Website.Services.WebAPI/WatchIt.Website.Services.WebAPI.Media/MediaWebAPIService.cs @@ -66,7 +66,7 @@ public class MediaWebAPIService(IHttpClientService httpClientService, IConfigura { string url = GetUrl(EndpointsConfiguration.Media.PutPoster, mediaId); - HttpRequest request = new HttpRequest(HttpMethodType.Get, url) + HttpRequest request = new HttpRequest(HttpMethodType.Put, url) { Body = data }; diff --git a/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor b/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor index 9bc96b9..231d622 100644 --- a/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor +++ b/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor @@ -1,11 +1,24 @@ 
-
- poster +
+ poster
- + + @if (_posterChanged) { - +
+
+ + +
+
+ } + else + { + if (!string.IsNullOrWhiteSpace(_actualPosterBase64)) + { + + } }
@@ -61,7 +74,7 @@
\ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor.cs b/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor.cs index ec22e4e..2adcd76 100644 --- a/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor.cs +++ b/WatchIt.Website/WatchIt.Website/Components/MediaForm.razor.cs @@ -1,12 +1,23 @@ using System.Diagnostics; +using System.Text; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using WatchIt.Common.Model.Media; +using WatchIt.Website.Services.WebAPI.Media; namespace WatchIt.Website.Components; public partial class MediaForm : ComponentBase { + #region SERVICES + + [Inject] public NavigationManager NavigationManager { get; set; } = default!; + [Inject] public IMediaWebAPIService MediaWebAPIService { get; set; } = default!; + + #endregion + + + #region PROPERTIES [Parameter] public Media Data { get; set; } @@ -33,6 +44,21 @@ public partial class MediaForm : ComponentBase #region PRIVATE METHODS + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await MediaWebAPIService.GetPoster(Id.Value, (data) => + { + _actualPosterBase64 = Encoding.UTF8.GetString(data.Image); + _actualPosterMediaType = data.MimeType; + _posterBase64 = _actualPosterBase64; + _posterMediaType = _actualPosterMediaType; + }); + StateHasChanged(); + } + } + private async Task LoadPoster(InputFileChangeEventArgs args) { if (args.File.ContentType.StartsWith("image")) @@ -53,7 +79,41 @@ public partial class MediaForm : ComponentBase private async Task SavePoster() { - throw new NotImplementedException(); + void SuccessAction() + { + _actualPosterBase64 = _posterBase64; + _actualPosterMediaType = _posterMediaType; + _posterChanged = false; + } + + MediaPosterRequest data = new MediaPosterRequest + { + Image = Encoding.UTF8.GetBytes(_posterBase64), + MimeType = _posterMediaType + }; + + await MediaWebAPIService.PutPoster(Id.Value, data, SuccessAction); + } + + private async Task DeletePoster() + { + void SuccessAction() + { + _actualPosterBase64 = null; + _actualPosterMediaType = null; + _posterChanged = false; + _posterBase64 = null; + _posterMediaType = null; + } + + await MediaWebAPIService.DeletePoster(Id.Value, SuccessAction); + } + + private void CancelPoster() + { + _posterBase64 = _actualPosterBase64; + _posterMediaType = _actualPosterMediaType; + _posterChanged = false; } #endregion diff --git a/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor b/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor index 950e02d..a39f9ab 100644 --- a/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor +++ b/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor @@ -48,8 +48,18 @@