diff --git a/WatchIt.Website/WatchIt.Website/Components/ListPage/ListComponent.razor b/WatchIt.Website/WatchIt.Website/Components/ListPage/ListComponent.razor new file mode 100644 index 0000000..e69de29 diff --git a/WatchIt.Website/WatchIt.Website/Components/ListPage/ListComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/ListPage/ListComponent.razor.cs new file mode 100644 index 0000000..7233ffe --- /dev/null +++ b/WatchIt.Website/WatchIt.Website/Components/ListPage/ListComponent.razor.cs @@ -0,0 +1,7 @@ +using Microsoft.AspNetCore.Components; + +namespace WatchIt.Website.Components.ListPage; + +public partial class ListComponent : ComponentBase +{ +} \ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Components/ListPage/ListComponent.razor.css b/WatchIt.Website/WatchIt.Website/Components/ListPage/ListComponent.razor.css new file mode 100644 index 0000000..e69de29 diff --git a/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor b/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor index 929a974..a448ee8 100644 --- a/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor +++ b/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor @@ -51,7 +51,7 @@ else { - Saving... + Loading... } diff --git a/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor b/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor index ca49395..d1c94b7 100644 --- a/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor +++ b/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor @@ -32,7 +32,13 @@ } else { - + + Lists + + Movies + TV Series + + } diff --git a/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor b/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor new file mode 100644 index 0000000..9a185eb --- /dev/null +++ b/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor @@ -0,0 +1,88 @@ +@layout MainLayout + +@page "/lists/movies" +@using WatchIt.Common.Model.Movies + +
+ @if (_loaded) + { + if (string.IsNullOrWhiteSpace(_error)) + { +
+
+
+
+
+
+

Movies database

+
+
+ +
+
+ +
+
+
+
+
+
+ foreach (MovieResponse item in _items) + { +
+ +
+ } + if (!_allItemsLoaded) + { +
+
+
+
+ @if (!_itemsLoading) + { + Load more + } + else + { + + Load more + } +
+
+
+
+ } + } + else + { +
+
+ +
+
+ } + } + else + { +
+
+
+ +
+
+
+ } +
+ + \ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor.cs b/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor.cs new file mode 100644 index 0000000..e97ea7a --- /dev/null +++ b/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor.cs @@ -0,0 +1,96 @@ +using Microsoft.AspNetCore.Components; +using WatchIt.Common.Model.Movies; +using WatchIt.Website.Services.WebAPI.Media; +using WatchIt.Website.Services.WebAPI.Movies; + +namespace WatchIt.Website.Pages; + +public partial class ListPage : ComponentBase +{ + #region SERVICES + + [Inject] private IMoviesWebAPIService MoviesWebAPIService { get; set; } = default!; + [Inject] private IMediaWebAPIService MediaWebAPIService { get; set; } = default!; + + #endregion + + + + #region PARAMETERS + + + + #endregion + + + + #region FIELDS + + private bool _loaded; + private string? _error; + + private MovieQueryParameters _query = new MovieQueryParameters { OrderBy = "rating.average" }; + private List _items = new List(); + private bool _allItemsLoaded; + private bool _itemsLoading; + + #endregion + + + + #region PUBLIC METHODS + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // INIT + _query.First = 5; + + List endTasks = new List(); + + // STEP 0 + endTasks.AddRange( + [ + MoviesWebAPIService.GetAllMovies(_query, data => + { + _items.AddRange(data); + if (data.Count() < 5) + { + _allItemsLoaded = true; + } + else + { + _query.After = 5; + } + }) + ]); + + // END + await Task.WhenAll(endTasks); + + _loaded = true; + StateHasChanged(); + } + } + + private async Task DownloadItems() + { + _itemsLoading = true; + await MoviesWebAPIService.GetAllMovies(_query, data => + { + _items.AddRange(data); + if (data.Count() < 5) + { + _allItemsLoaded = true; + } + else + { + _query.After += 5; + } + _itemsLoading = false; + }); + } + + #endregion +} \ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor.css b/WatchIt.Website/WatchIt.Website/Pages/ListPage.razor.css new file mode 100644 index 0000000..e69de29 diff --git a/WatchIt.Website/WatchIt.Website/Pages/MediaEditPage.razor b/WatchIt.Website/WatchIt.Website/Pages/MediaEditPage.razor index 386c33f..68b0d51 100644 --- a/WatchIt.Website/WatchIt.Website/Pages/MediaEditPage.razor +++ b/WatchIt.Website/WatchIt.Website/Pages/MediaEditPage.razor @@ -50,7 +50,7 @@
-

@(_media is not null ? "Edit" : "Create new") @(_movieRequest is not null ? "movie" : "series")@(_media is not null ? $" \"{_media.Title}\"" : string.Empty)

+

@(_media is not null ? "Edit" : "Create new") @(_movieRequest is not null ? "movie" : "series")@(_media is not null ? $" \"{_media.Title}\"" : string.Empty)