diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Panels/UsersSearchResultPanelComponent.razor b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Panels/UsersSearchResultPanelComponent.razor
new file mode 100644
index 0000000..cb5dd8e
--- /dev/null
+++ b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Panels/UsersSearchResultPanelComponent.razor
@@ -0,0 +1,77 @@
+@using Blazorise.Extensions
+@using WatchIt.Website.Components.Pages.SearchPage.Subcomponents
+
+
+
+
+
+
+ @if (_loaded)
+ {
+ if (!_items.IsNullOrEmpty())
+ {
+ for (int i = 0; i < _items.Count; i++)
+ {
+ if (i > 0)
+ {
+
+ }
+
+
+ @{
+ int iCopy = i;
+ }
+
+
+
+ }
+ if (!_allItemsLoaded)
+ {
+
+
+
+
+
+
+
+ }
+ }
+ else
+ {
+
+ }
+ }
+ else
+ {
+
+ }
+
+
\ No newline at end of file
diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Panels/UsersSearchResultPanelComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Panels/UsersSearchResultPanelComponent.razor.cs
new file mode 100644
index 0000000..42b7197
--- /dev/null
+++ b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Panels/UsersSearchResultPanelComponent.razor.cs
@@ -0,0 +1,97 @@
+using Microsoft.AspNetCore.Components;
+using WatchIt.Common.Model.Accounts;
+using WatchIt.Website.Services.Client.Accounts;
+
+namespace WatchIt.Website.Components.Pages.SearchPage.Panels;
+
+public partial class UsersSearchResultPanelComponent : ComponentBase
+{
+ #region SERVICES
+
+ [Inject] private IAccountsClientService AccountsClientService { get; set; } = default!;
+
+ #endregion
+
+
+
+ #region PARAMETERS
+
+ [Parameter] public required string Query { get; set; }
+
+ #endregion
+
+
+
+ #region FIELDS
+
+ private bool _loaded;
+
+ private AccountQueryParameters _query = new AccountQueryParameters
+ {
+ First = 5
+ };
+
+ private List _items = [];
+ private bool _allItemsLoaded;
+ private bool _itemsLoading;
+
+ #endregion
+
+
+
+ #region PRIVATE METHODS
+
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ if (firstRender)
+ {
+ // INIT
+ _query.Username = Query;
+
+ List endTasks = new List();
+
+ // STEP 0
+ endTasks.AddRange(
+ [
+ AccountsClientService.GetAccounts(_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 AccountsClientService.GetAccounts(_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/Components/Pages/SearchPage/Subcomponents/UserSearchResultItemComponent.razor b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Subcomponents/UserSearchResultItemComponent.razor
new file mode 100644
index 0000000..dc936c9
--- /dev/null
+++ b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Subcomponents/UserSearchResultItemComponent.razor
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Subcomponents/UserSearchResultItemComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Subcomponents/UserSearchResultItemComponent.razor.cs
new file mode 100644
index 0000000..b81a075
--- /dev/null
+++ b/WatchIt.Website/WatchIt.Website/Components/Pages/SearchPage/Subcomponents/UserSearchResultItemComponent.razor.cs
@@ -0,0 +1,13 @@
+using Microsoft.AspNetCore.Components;
+using WatchIt.Common.Model.Accounts;
+
+namespace WatchIt.Website.Components.Pages.SearchPage.Subcomponents;
+
+public partial class UserSearchResultItemComponent : ComponentBase
+{
+ #region PROPERTIES
+
+ [Parameter] public required AccountResponse Item { get; set; }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor.cs b/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor.cs
index 76d3d6c..d0df615 100644
--- a/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor.cs
+++ b/WatchIt.Website/WatchIt.Website/Layout/MainLayout.razor.cs
@@ -121,7 +121,7 @@ public partial class MainLayout : LayoutComponentBase
if (!string.IsNullOrWhiteSpace(_searchbarText))
{
string query = WebUtility.UrlEncode(_searchbarText);
- NavigationManager.NavigateTo($"/search/{query}");
+ NavigationManager.NavigateTo($"/search/{query}", true);
}
}
diff --git a/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor b/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor
index 7e30b8f..afcbd75 100644
--- a/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor
+++ b/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor
@@ -1,3 +1,4 @@
+@using System.Net
@using WatchIt.Common.Model.Movies
@using WatchIt.Common.Model.Persons
@using WatchIt.Common.Model.Series
@@ -15,7 +16,7 @@
- Search results for phrase: "@(DecodedQuery)"
+ Search results for phrase: "@(WebUtility.UrlDecode(Query))"
@@ -27,7 +28,7 @@
NameSource="@(item => item.Title)"
AdditionalNameInfoSource="@(item => item.ReleaseDate.HasValue ? $" ({item.ReleaseDate.Value.Year})" : null)"
RatingSource="@(item => item.Rating)"
- Query="@(new MovieQueryParameters { Title = DecodedQuery, OrderBy = "rating.count" })"
+ Query="@(new MovieQueryParameters { Title = WebUtility.UrlDecode(Query), OrderBy = "rating.count" })"
ItemDownloadingTask="@(MoviesClientService.GetAllMovies)"
PictureDownloadingTask="@((id, action) => MediaClientService.GetMediaPoster(id, action))"
PosterPlaceholder="/assets/media_poster.png"
@@ -43,7 +44,7 @@
NameSource="@(item => item.Title)"
AdditionalNameInfoSource="@(item => item.ReleaseDate.HasValue ? $" ({item.ReleaseDate.Value.Year})" : null)"
RatingSource="@(item => item.Rating)"
- Query="@(new SeriesQueryParameters { Title = DecodedQuery, OrderBy = "rating.count" })"
+ Query="@(new SeriesQueryParameters { Title = WebUtility.UrlDecode(Query), OrderBy = "rating.count" })"
ItemDownloadingTask="@(SeriesClientService.GetAllSeries)"
PictureDownloadingTask="@((id, action) => MediaClientService.GetMediaPoster(id, action))"
PosterPlaceholder="/assets/media_poster.png"
@@ -58,9 +59,10 @@
IdSource="@(item => item.Id)"
NameSource="@(item => item.Name)"
RatingSource="@(item => item.Rating)"
- Query="@(new PersonQueryParameters { Name = DecodedQuery, OrderBy = "rating.count" })"
+ Query="@(new PersonQueryParameters { Name = WebUtility.UrlDecode(Query), OrderBy = "rating.count" })"
ItemDownloadingTask="@(PersonsClientService.GetAllPersons)"
PictureDownloadingTask="@((id, action) => PersonsClientService.GetPersonPhoto(id, action))"
PosterPlaceholder="/assets/person_poster.png"
GetGlobalRatingMethod="@((id, action) => PersonsClientService.GetPersonGlobalRating(id, action))"/>
+
\ No newline at end of file