Migliorata sincronizzazione dei dati
This commit is contained in:
@@ -6,7 +6,6 @@
|
||||
@using salesbook.Shared.Components.SingleElements.BottomSheet
|
||||
@using salesbook.Shared.Components.Layout.Spinner
|
||||
@using salesbook.Shared.Components.SingleElements
|
||||
@using salesbook.Shared.Core.Dto.Contact
|
||||
@using salesbook.Shared.Core.Dto.PageState
|
||||
@using salesbook.Shared.Core.Dto.Users
|
||||
@using salesbook.Shared.Core.Entity
|
||||
@@ -15,6 +14,7 @@
|
||||
@inject NewContactService NewContact
|
||||
@inject FilterUserDTO Filter
|
||||
@inject UserListState UserState
|
||||
@implements IDisposable
|
||||
|
||||
<HeaderLayout Title="Contatti"/>
|
||||
|
||||
@@ -71,33 +71,37 @@
|
||||
private bool OpenFilter { get; set; }
|
||||
private string TypeUser { get; set; } = "all";
|
||||
|
||||
protected override void OnInitialized()
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
IsLoading = true;
|
||||
|
||||
if (!UserState.IsLoaded)
|
||||
{
|
||||
UserState.OnUsersLoaded += OnUsersLoaded;
|
||||
}
|
||||
else
|
||||
{
|
||||
await LoadData();
|
||||
LoadFromSession();
|
||||
FilterUsers();
|
||||
}
|
||||
|
||||
NewContact.OnContactCreated += async response => await OnUserCreated(response);
|
||||
}
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
private void OnUsersLoaded()
|
||||
{
|
||||
if (firstRender)
|
||||
InvokeAsync(async () =>
|
||||
{
|
||||
IsLoading = true;
|
||||
StateHasChanged();
|
||||
|
||||
if (UserState.FilteredGroupedUserList == null && UserState.GroupedUserList == null)
|
||||
{
|
||||
await LoadData();
|
||||
SetDataSession();
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadFromSession();
|
||||
}
|
||||
|
||||
await LoadData();
|
||||
LoadFromSession();
|
||||
FilterUsers();
|
||||
});
|
||||
}
|
||||
|
||||
IsLoading = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
void IDisposable.Dispose()
|
||||
{
|
||||
UserState.OnUsersLoaded -= OnUsersLoaded;
|
||||
}
|
||||
|
||||
private void LoadFromSession()
|
||||
@@ -106,12 +110,6 @@
|
||||
FilteredGroupedUserList = UserState.FilteredGroupedUserList!;
|
||||
}
|
||||
|
||||
private void SetDataSession()
|
||||
{
|
||||
UserState.GroupedUserList = GroupedUserList;
|
||||
UserState.FilteredGroupedUserList = FilteredGroupedUserList;
|
||||
}
|
||||
|
||||
private async Task LoadData()
|
||||
{
|
||||
if (!Filter.IsInitialized)
|
||||
@@ -123,37 +121,6 @@
|
||||
|
||||
Filter.IsInitialized = true;
|
||||
}
|
||||
|
||||
var users = await ManageData.GetContact(new WhereCondContact {FlagStato = "A"});
|
||||
|
||||
var sortedUsers = users
|
||||
.Where(u => !string.IsNullOrWhiteSpace(u.RagSoc))
|
||||
.OrderBy(u =>
|
||||
{
|
||||
var firstChar = char.ToUpper(u.RagSoc[0]);
|
||||
return char.IsLetter(firstChar) ? firstChar.ToString() : "ZZZ";
|
||||
})
|
||||
.ThenBy(u => u.RagSoc)
|
||||
.ToList();
|
||||
|
||||
GroupedUserList = [];
|
||||
|
||||
string? lastHeader = null;
|
||||
foreach (var user in sortedUsers)
|
||||
{
|
||||
var firstChar = char.ToUpper(user.RagSoc[0]);
|
||||
var currentLetter = char.IsLetter(firstChar) ? firstChar.ToString() : "#";
|
||||
|
||||
var showHeader = currentLetter != lastHeader;
|
||||
lastHeader = currentLetter;
|
||||
|
||||
GroupedUserList.Add(new UserDisplayItem
|
||||
{
|
||||
User = user,
|
||||
ShowHeader = showHeader,
|
||||
HeaderLetter = currentLetter
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void FilterUsers() => FilterUsers(false);
|
||||
@@ -220,6 +187,9 @@
|
||||
}
|
||||
|
||||
FilteredGroupedUserList = result;
|
||||
|
||||
IsLoading = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async Task OnUserCreated(CRMCreateContactResponseDTO response)
|
||||
|
||||
Reference in New Issue
Block a user