Store Filter between pages
This commit is contained in:
@@ -5,9 +5,18 @@ namespace FoodsharingSiegen.Contracts
|
||||
/// </summary>
|
||||
public static class StorageKeys
|
||||
{
|
||||
#region Constants
|
||||
|
||||
/// <summary>
|
||||
/// 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
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user