Store Filter between pages

This commit is contained in:
Andre Beging
2025-04-02 07:47:33 +02:00
parent 6d6d79f55a
commit b7ba95b716
10 changed files with 103 additions and 11 deletions

View File

@@ -5,9 +5,18 @@ namespace FoodsharingSiegen.Contracts
/// </summary>
public static class StorageKeys
{
#region Constants
/// <summary>
/// The token key
/// Represents the storage key used for prospect filtering preferences.
/// </summary>
public const string ProspectFilter = "ProspectFilter";
/// <summary>
/// The token key
/// </summary>
public const string TokenKey = "_token";
#endregion
}
}

View File

@@ -3,6 +3,7 @@ using FoodsharingSiegen.Contracts.Entity;
using FoodsharingSiegen.Contracts.Model;
using FoodsharingSiegen.Server.Auth;
using FoodsharingSiegen.Server.Data.Service;
using FoodsharingSiegen.Server.Service;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
@@ -31,6 +32,12 @@ namespace FoodsharingSiegen.Server.BaseClasses
[Inject]
protected AuthService AuthService { get; set; } = null!;
/// <summary>
/// Gets or sets the service that interacts with the browser's local storage.
/// </summary>
[Inject]
protected LocalStorageService LocalStorageService { get; set; } = null!;
/// <summary>
/// Gets or sets the modal service for handling modals within the application
/// </summary>

View File

@@ -26,7 +26,7 @@
}
<hr/>
<ProspectFilterControl @bind-Filter="Filter" StateFilter="ProspectStateFilter.OnBoarding"></ProspectFilterControl>
<ProspectFilterControl Filter="Filter" FilterChanged="FilterChangedAsync" StateFilter="ProspectStateFilter.OnBoarding"></ProspectFilterControl>
<hr />
<ProspectGrid
Prospects="filterList"

View File

@@ -1,8 +1,10 @@
using FoodsharingSiegen.Contracts;
using FoodsharingSiegen.Contracts.Entity;
using FoodsharingSiegen.Contracts.Enums;
using FoodsharingSiegen.Contracts.Model;
using FoodsharingSiegen.Server.Data.Service;
using FoodsharingSiegen.Server.Dialogs;
using FoodsharingSiegen.Server.Service;
using Microsoft.AspNetCore.Components;
namespace FoodsharingSiegen.Server.Pages
@@ -14,17 +16,14 @@ namespace FoodsharingSiegen.Server.Pages
{
#region Dependencies
/// <summary>
/// Gets or sets the value of the prospect service (ab)
/// </summary>
[Inject]
public ProspectService ProspectService { get; set; } = null!;
private ProspectService ProspectService { get; set; } = null!;
/// <summary>
/// Gets or sets the value of the user service (ab)
/// </summary>
[Inject]
public UserService UserService { get; set; } = null!;
private UserService UserService { get; set; } = null!;
#endregion
@@ -44,6 +43,9 @@ namespace FoodsharingSiegen.Server.Pages
/// <inheritdoc />
protected override async Task InitializeDataAsync()
{
var filter = await LocalStorageService.GetItem<ProspectFilter>(StorageKeys.ProspectFilter);
if (filter != null) Filter = filter;
// Load prospects
await LoadProspects();
}
@@ -63,6 +65,21 @@ namespace FoodsharingSiegen.Server.Pages
#endregion
#region Private Method FilterChangedAsync
/// <summary>
/// Updates the current filter with the specified ProspectFilter object.
/// </summary>
/// <param name="arg">The ProspectFilter object containing the updated filter criteria.</param>
/// <returns>A task that represents the asynchronous operation.</returns>
private async Task FilterChangedAsync(ProspectFilter arg)
{
Filter = arg;
await LocalStorageService.SetItem(StorageKeys.ProspectFilter, Filter);
}
#endregion
#region Private Method LoadProspects
/// <summary>

View File

@@ -17,7 +17,7 @@
}
<hr/>
<ProspectFilterControl @bind-Filter="Filter" StateFilter="ProspectStateFilter.All"></ProspectFilterControl>
<ProspectFilterControl Filter="Filter" FilterChanged="FilterChangedAsync" StateFilter="ProspectStateFilter.All"></ProspectFilterControl>
<hr />
<ProspectGrid
Prospects="filterList"

View File

@@ -1,3 +1,4 @@
using FoodsharingSiegen.Contracts;
using FoodsharingSiegen.Contracts.Entity;
using FoodsharingSiegen.Contracts.Helper;
using FoodsharingSiegen.Contracts.Model;
@@ -46,12 +47,31 @@ namespace FoodsharingSiegen.Server.Pages
{
if(!CurrentUser.IsAdmin()) NavigationManager.NavigateTo("/");
// Load Filter
var filter = await LocalStorageService.GetItem<ProspectFilter>(StorageKeys.ProspectFilter);
if (filter != null) Filter = filter;
// Load prospects
await LoadProspects();
}
#endregion
#region Private Method FilterChangedAsync
/// <summary>
/// Updates the current filter with the specified ProspectFilter object.
/// </summary>
/// <param name="arg">The ProspectFilter object containing the updated filter criteria.</param>
/// <returns>A task that represents the asynchronous operation.</returns>
private async Task FilterChangedAsync(ProspectFilter arg)
{
Filter = arg;
await LocalStorageService.SetItem(StorageKeys.ProspectFilter, Filter);
}
#endregion
#region Private Method LoadProspects
/// <summary>

View File

@@ -17,7 +17,7 @@
}
<hr />
<ProspectFilterControl @bind-Filter="Filter" StateFilter="ProspectStateFilter.Completed"></ProspectFilterControl>
<ProspectFilterControl Filter="Filter" FilterChanged="FilterChangedAsync" StateFilter="ProspectStateFilter.Completed"></ProspectFilterControl>
<hr />
<ProspectGrid
Prospects="filterList"

View File

@@ -1,3 +1,4 @@
using FoodsharingSiegen.Contracts;
using FoodsharingSiegen.Contracts.Entity;
using FoodsharingSiegen.Contracts.Enums;
using FoodsharingSiegen.Contracts.Model;
@@ -37,11 +38,30 @@ namespace FoodsharingSiegen.Server.Pages
/// <inheritdoc />
protected override async Task InitializeDataAsync()
{
// Load Filter
var filter = await LocalStorageService.GetItem<ProspectFilter>(StorageKeys.ProspectFilter);
if (filter != null) Filter = filter;
await LoadProspects();
}
#endregion
#region Private Method FilterChangedAsync
/// <summary>
/// Updates the current filter with the specified ProspectFilter object.
/// </summary>
/// <param name="arg">The ProspectFilter object containing the updated filter criteria.</param>
/// <returns>A task that represents the asynchronous operation.</returns>
private async Task FilterChangedAsync(ProspectFilter arg)
{
Filter = arg;
await LocalStorageService.SetItem(StorageKeys.ProspectFilter, Filter);
}
#endregion
#region Private Method LoadProspects
/// <summary>

View File

@@ -17,7 +17,7 @@
}
<hr/>
<ProspectFilterControl @bind-Filter="Filter" StateFilter="ProspectStateFilter.Verification"></ProspectFilterControl>
<ProspectFilterControl Filter="Filter" FilterChanged="FilterChangedAsync" StateFilter="ProspectStateFilter.Verification"></ProspectFilterControl>
<hr />
<ProspectGrid
Prospects="filterList"

View File

@@ -1,8 +1,8 @@
using FoodsharingSiegen.Contracts;
using FoodsharingSiegen.Contracts.Entity;
using FoodsharingSiegen.Contracts.Enums;
using FoodsharingSiegen.Contracts.Model;
using FoodsharingSiegen.Server.Data.Service;
using FoodsharingSiegen.Server.Dialogs;
using Microsoft.AspNetCore.Components;
namespace FoodsharingSiegen.Server.Pages
@@ -44,12 +44,31 @@ namespace FoodsharingSiegen.Server.Pages
/// <inheritdoc />
protected override async Task InitializeDataAsync()
{
// Load Filter
var filter = await LocalStorageService.GetItem<ProspectFilter>(StorageKeys.ProspectFilter);
if (filter != null) Filter = filter;
// Load prospects
await LoadProspects();
}
#endregion
#region Private Method FilterChangedAsync
/// <summary>
/// Updates the current filter with the specified ProspectFilter object.
/// </summary>
/// <param name="arg">The ProspectFilter object containing the updated filter criteria.</param>
/// <returns>A task that represents the asynchronous operation.</returns>
private async Task FilterChangedAsync(ProspectFilter arg)
{
Filter = arg;
await LocalStorageService.SetItem(StorageKeys.ProspectFilter, Filter);
}
#endregion
#region Private Method LoadProspects
/// <summary>