From 505a2445eb3c6ccbbccb1fed942eb17c7af2266a Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Wed, 19 Mar 2025 12:43:31 +0100 Subject: [PATCH] Reset page back to 1 when search term changes in admin (#705) --- .../Main/Pages/Logging/Auth.razor | 20 ++++++++++++++++++- .../Main/Pages/Logging/General.razor | 8 ++++++++ .../Main/Pages/Users/Users.razor | 8 ++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/AliasVault.Admin/Main/Pages/Logging/Auth.razor b/src/AliasVault.Admin/Main/Pages/Logging/Auth.razor index bc2ebee25..55429b394 100644 --- a/src/AliasVault.Admin/Main/Pages/Logging/Auth.razor +++ b/src/AliasVault.Admin/Main/Pages/Logging/Auth.razor @@ -76,6 +76,7 @@ else private int TotalRecords { get; set; } private string _searchTerm = string.Empty; + private string _lastSearchTerm = string.Empty; private string SearchTerm { get => _searchTerm; @@ -135,7 +136,24 @@ else if (!string.IsNullOrEmpty(SearchTerm)) { - query = query.Where(x => EF.Functions.Like(x.Username.ToLower(), "%" + SearchTerm.ToLower() + "%")); + // Reset page number back to 1 if the search term has changed. + if (SearchTerm != _lastSearchTerm) + { + CurrentPage = 1; + } + _lastSearchTerm = SearchTerm; + + // If the search term starts with "client:", we search for the client header. + if (SearchTerm.StartsWith("client:", StringComparison.OrdinalIgnoreCase)) + { + var clientSearchTerm = SearchTerm.Substring(7).ToLower(); + query = query.Where(x => EF.Functions.Like((x.Client ?? string.Empty).ToLower(), "%" + clientSearchTerm + "%")); + } + else + { + query = query.Where(x => EF.Functions.Like((x.Username ?? string.Empty).ToLower(), "%" + SearchTerm.ToLower() + "%") || + EF.Functions.Like((x.IpAddress ?? string.Empty).ToLower(), "%" + SearchTerm.ToLower() + "%")); + } } if (!string.IsNullOrEmpty(SelectedEventType)) diff --git a/src/AliasVault.Admin/Main/Pages/Logging/General.razor b/src/AliasVault.Admin/Main/Pages/Logging/General.razor index c68b389c3..8e0cb0c84 100644 --- a/src/AliasVault.Admin/Main/Pages/Logging/General.razor +++ b/src/AliasVault.Admin/Main/Pages/Logging/General.razor @@ -91,6 +91,7 @@ else private int TotalRecords { get; set; } private string _searchTerm = string.Empty; + private string _lastSearchTerm = string.Empty; private string SearchTerm { get => _searchTerm; @@ -154,6 +155,13 @@ else if (!string.IsNullOrEmpty(SearchTerm)) { + // Reset page number back to 1 if the search term has changed. + if (SearchTerm != _lastSearchTerm) + { + CurrentPage = 1; + } + _lastSearchTerm = SearchTerm; + query = query.Where(x => EF.Functions.Like(x.Application.ToLower(), "%" + SearchTerm.ToLower() + "%") || EF.Functions.Like(x.Message.ToLower(), "%" + SearchTerm.ToLower() + "%") || EF.Functions.Like(x.Level.ToLower(), "%" + SearchTerm.ToLower() + "%")); diff --git a/src/AliasVault.Admin/Main/Pages/Users/Users.razor b/src/AliasVault.Admin/Main/Pages/Users/Users.razor index ade966cd5..9750f57b5 100644 --- a/src/AliasVault.Admin/Main/Pages/Users/Users.razor +++ b/src/AliasVault.Admin/Main/Pages/Users/Users.razor @@ -72,6 +72,7 @@ else private int TotalRecords { get; set; } private string _searchTerm = string.Empty; + private string _lastSearchTerm = string.Empty; private string SearchTerm { get => _searchTerm; @@ -117,6 +118,13 @@ else if (SearchTerm.Length > 0) { + // Reset page number back to 1 if the search term has changed. + if (SearchTerm != _lastSearchTerm) + { + CurrentPage = 1; + } + _lastSearchTerm = SearchTerm; + query = query.Where(x => EF.Functions.Like(x.UserName!.ToLower(), "%" + SearchTerm.ToLower() + "%")); }