ComponentUpdateService improvements; UnreadMessages improvements; fixes, etc...
This commit is contained in:
parent
9fc4cee752
commit
a19ba4c86d
|
|
@ -1,13 +1,12 @@
|
||||||
using TIAMWebApp.Shared.Application.Interfaces;
|
using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
namespace TIAMMobileApp.Services
|
namespace TIAMMobileApp.Services
|
||||||
{
|
{
|
||||||
public class ComponentUpdateServiceMobile : IComponentUpdateService
|
public class ComponentUpdateServiceMobile : ComponentUpdateServiceBase
|
||||||
{
|
{
|
||||||
public event Action RefreshRequested;
|
public override void CallRequestRefreshAll()
|
||||||
|
|
||||||
public void CallRequestRefresh()
|
|
||||||
{
|
{
|
||||||
RefreshRequested?.Invoke();
|
base.CallRequestRefreshAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -124,18 +124,19 @@
|
||||||
|
|
||||||
if (isSuccess)
|
if (isSuccess)
|
||||||
{
|
{
|
||||||
|
await SaveToSessionInfo(user);
|
||||||
|
_logger.Info($"Saved user in db is: {user.DisplayName}, setting autenthicated state");
|
||||||
|
|
||||||
_adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage =>
|
_adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage =>
|
||||||
{
|
{
|
||||||
_siteViewModel.Initialize(signalResponseMessage.ResponseData!);
|
_siteViewModel.Initialize(signalResponseMessage.ResponseData!);
|
||||||
_logger.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}");
|
_logger.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}");
|
||||||
|
|
||||||
|
ComponentUpdateService.CallRequestRefreshAll();
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}, user.UserId).Forget();
|
}, user.UserId).Forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
await SaveToSessionInfo(user);
|
|
||||||
_logger.Info($"Saved user in db is: {user.DisplayName}, setting autenthicated state");
|
|
||||||
|
|
||||||
//NavManager.NavigateTo("/");
|
//NavManager.NavigateTo("/");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -143,8 +144,8 @@
|
||||||
_logger.Info("No token stored yet");
|
_logger.Info("No token stored yet");
|
||||||
//NavManager.NavigateTo("/");
|
//NavManager.NavigateTo("/");
|
||||||
}
|
}
|
||||||
ComponentUpdateService.CallRequestRefresh();
|
|
||||||
|
|
||||||
|
//ComponentUpdateService.CallRequestRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task SaveToSessionInfo(UserSessionModel user)
|
protected async Task SaveToSessionInfo(UserSessionModel user)
|
||||||
|
|
@ -153,7 +154,7 @@
|
||||||
sessionService.IsAuthenticated = true;
|
sessionService.IsAuthenticated = true;
|
||||||
sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0;
|
sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0;
|
||||||
_logger.Debug($"Checking driver for: {user.UserModelDto.UserProductMappings.Count} mapping");
|
_logger.Debug($"Checking driver for: {user.UserModelDto.UserProductMappings.Count} mapping");
|
||||||
sessionService.IsDriver = await CheckIfDriver(user.UserModelDto.UserProductMappings);
|
sessionService.IsDriver = CheckIfDriver(user.UserModelDto.UserProductMappings);
|
||||||
if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1])
|
if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1])
|
||||||
{
|
{
|
||||||
sessionService.IsDevAdmin = true;
|
sessionService.IsDevAdmin = true;
|
||||||
|
|
@ -168,22 +169,23 @@
|
||||||
_logger.Debug($"Saved to session: IsAuthenticated: {sessionService.IsAuthenticated}, HasCompany: {sessionService.HasCompany}, IsDriver: {sessionService.IsDriver}, IsDevAdmin: {sessionService.IsDevAdmin}, IsSysAdmin: {sessionService.IsSysAdmin}");
|
_logger.Debug($"Saved to session: IsAuthenticated: {sessionService.IsAuthenticated}, HasCompany: {sessionService.HasCompany}, IsDriver: {sessionService.IsDriver}, IsDevAdmin: {sessionService.IsDevAdmin}, IsSysAdmin: {sessionService.IsSysAdmin}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> CheckIfDriver(List<UserProductMapping> Permissions)
|
public bool CheckIfDriver(List<UserProductMapping> permissions)
|
||||||
{
|
{
|
||||||
bool _isDriver = false;
|
bool isDriver = false;
|
||||||
|
|
||||||
foreach (UserProductMapping Permission in Permissions)
|
foreach (UserProductMapping permission in permissions)
|
||||||
{
|
{
|
||||||
//var permissionToCheck = await ServiceProviderDataService.GetUserProductMappingByIdAsync(Permission.Id);
|
//var permissionToCheck = await ServiceProviderDataService.GetUserProductMappingByIdAsync(Permission.Id);
|
||||||
_logger.Debug($"calling IsPowerOf with values: {Permission.Id}, {Permission.Permissions}, {1}");
|
_logger.Debug($"calling IsPowerOf with values: {permission.Id}, {permission.Permissions}, {1}");
|
||||||
var driverPermissionResult = IsBitSet(Permission.Permissions, 1);
|
var driverPermissionResult = IsBitSet(permission.Permissions, 1);
|
||||||
if (driverPermissionResult)
|
if (driverPermissionResult)
|
||||||
{
|
{
|
||||||
_isDriver = true;
|
isDriver = true;
|
||||||
sessionService.DriverPersmissionId = Permission.Id;
|
sessionService.DriverPersmissionId = permission.Id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _isDriver;
|
|
||||||
|
return isDriver;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsBitSet(int number, int power)
|
public bool IsBitSet(int number, int power)
|
||||||
|
|
@ -221,7 +223,7 @@
|
||||||
get => CultureInfo.CurrentCulture;
|
get => CultureInfo.CurrentCulture;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (CultureInfo.CurrentCulture != value)
|
if (!Equals(CultureInfo.CurrentCulture, value))
|
||||||
{
|
{
|
||||||
Thread.CurrentThread.CurrentCulture = value;
|
Thread.CurrentThread.CurrentCulture = value;
|
||||||
Thread.CurrentThread.CurrentUICulture = value;
|
Thread.CurrentThread.CurrentUICulture = value;
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ namespace TIAMSharedUI.Pages.Components
|
||||||
//Something is cancelled
|
//Something is cancelled
|
||||||
//args.Cancel = true;
|
//args.Cancel = true;
|
||||||
//}
|
//}
|
||||||
componentUpdateService.CallRequestRefresh();
|
componentUpdateService.CallRequestRefresh<Navbar>();
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
|
|
||||||
//throw new NotImplementedException();
|
//throw new NotImplementedException();
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ namespace TIAMSharedUI.Pages.Components
|
||||||
{
|
{
|
||||||
|
|
||||||
secureStorageHandler?.SaveToSecureStorageAsync(nameof(Setting.Locale), SelectedCulture.Name);
|
secureStorageHandler?.SaveToSecureStorageAsync(nameof(Setting.Locale), SelectedCulture.Name);
|
||||||
componentUpdateService.CallRequestRefresh();
|
componentUpdateService.CallRequestRefreshAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ namespace TIAMSharedUI.Pages
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public AuthenticationStateProvider AuthStateProvider { get; set; }
|
public AuthenticationStateProvider AuthStateProvider { get; set; }
|
||||||
|
[Inject] public IComponentUpdateService componentUpdateService { get; set; }
|
||||||
//fill loginmodel with fake but valid data
|
//fill loginmodel with fake but valid data
|
||||||
|
|
||||||
//LoginModel loginModel = new();
|
//LoginModel loginModel = new();
|
||||||
|
|
@ -126,11 +126,11 @@ namespace TIAMSharedUI.Pages
|
||||||
_siteViewModel.Initialize(signalResponseMessage.ResponseData!);
|
_siteViewModel.Initialize(signalResponseMessage.ResponseData!);
|
||||||
BrowserConsoleLogWriter.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}");
|
BrowserConsoleLogWriter.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}");
|
||||||
|
|
||||||
|
componentUpdateService.CallRequestRefreshAll();
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}, user.UserId).Forget();
|
}, user.UserId).Forget();
|
||||||
|
|
||||||
SaveToSessionInfo(user).Forget();
|
SaveToSessionInfo(user).Forget();
|
||||||
|
|
||||||
navManager.NavigateTo("/");
|
navManager.NavigateTo("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,13 @@
|
||||||
@using TIAM.Entities.Emails
|
@using TIAM.Entities.Emails
|
||||||
@using AyCode.Blazor.Components.Services
|
@using AyCode.Blazor.Components.Services
|
||||||
@using AyCode.Core.Extensions
|
@using AyCode.Core.Extensions
|
||||||
|
@using TIAM.Models
|
||||||
@using TIAM.Services
|
@using TIAM.Services
|
||||||
@inherits UserBasePageComponent
|
@inherits UserBasePageComponent
|
||||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
@inject AdminSignalRClient AdminSignalRClient;
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
|
@inject SiteViewModel SiteViewModel;
|
||||||
|
@inject IComponentUpdateService ComponentUpdateService
|
||||||
|
|
||||||
<MessageDetailGrid CssClass="my-grid" @ref="_messageGrid"
|
<MessageDetailGrid CssClass="my-grid" @ref="_messageGrid"
|
||||||
Logger="_logger"
|
Logger="_logger"
|
||||||
|
|
@ -138,6 +140,9 @@
|
||||||
emailMessage.IsReaded = true;
|
emailMessage.IsReaded = true;
|
||||||
|
|
||||||
_messageGrid.UpdateDataItemAsync(emailMessage).Forget();
|
_messageGrid.UpdateDataItemAsync(emailMessage).Forget();
|
||||||
|
|
||||||
|
SiteViewModel.UnreadMessages.RemoveAll(x => x.Id == emailMessage.Id);
|
||||||
|
ComponentUpdateService.CallRequestRefreshAll();
|
||||||
//InvokeAsync(StateHasChanged).ContinueWith(x => _messageGrid.UpdateDataItemAsync(emailMessage).Forget());
|
//InvokeAsync(StateHasChanged).ContinueWith(x => _messageGrid.UpdateDataItemAsync(emailMessage).Forget());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
@{
|
@{
|
||||||
string url3 = $"user/messages/{userId}";
|
string url3 = $"user/messages/{userId}";
|
||||||
<NavLink class="nav-link" href="@url3">
|
<NavLink class="nav-link" href="@url3">
|
||||||
<i class="fa-solid fa-envelope"></i>
|
<i class="fa-solid fa-envelope">@(" (" + SiteViewModel.UnreadMessages.Count + ")")</i>
|
||||||
</NavLink>
|
</NavLink>
|
||||||
}
|
}
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@ namespace TIAMSharedUI.Shared.Components
|
||||||
base.OnAfterRender(firstRender);
|
base.OnAfterRender(firstRender);
|
||||||
|
|
||||||
if (firstRender)
|
if (firstRender)
|
||||||
componentUpdateService.RefreshRequested += RefreshMe;
|
componentUpdateService.GetOrAddComponent<Navbar>().RefreshRequested += RefreshMe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
using TIAMWebApp.Shared.Application.Interfaces;
|
using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
namespace TIAMWebApp.Client.Services
|
namespace TIAMWebApp.Client.Services
|
||||||
{
|
{
|
||||||
public class ComponentUpdateServiceWeb : IComponentUpdateService
|
public class ComponentUpdateServiceWeb : ComponentUpdateServiceBase
|
||||||
{
|
{
|
||||||
public event Action? RefreshRequested;
|
public override void CallRequestRefreshAll()
|
||||||
|
|
||||||
public void CallRequestRefresh()
|
|
||||||
{
|
{
|
||||||
RefreshRequested?.Invoke();
|
base.CallRequestRefreshAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,58 @@
|
||||||
namespace TIAMWebApp.Shared.Application.Interfaces
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
|
namespace TIAMWebApp.Shared.Application.Interfaces
|
||||||
{
|
{
|
||||||
public interface IComponentUpdateService
|
public abstract class ComponentUpdateServiceBase : IComponentUpdateService
|
||||||
{
|
{
|
||||||
event Action RefreshRequested;
|
protected Dictionary<Type, IComponentUpdateItem> ComponentsByType = [];
|
||||||
|
|
||||||
|
public virtual void CallRequestRefreshAll()
|
||||||
|
{
|
||||||
|
foreach (var component in ComponentsByType.Values)
|
||||||
|
component.CallRequestRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CallRequestRefresh<T>() where T : class, IComponent
|
||||||
|
{
|
||||||
|
if (ComponentsByType.TryGetValue(typeof(T), out var componentUpdateItem))
|
||||||
|
componentUpdateItem.CallRequestRefresh();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public IComponentUpdateItem GetOrAddComponent<T>() where T : class, IComponent
|
||||||
|
{
|
||||||
|
var componentType = typeof(T);
|
||||||
|
|
||||||
|
if (ComponentsByType.TryGetValue(componentType, out var componentUpdateItem))
|
||||||
|
return componentUpdateItem;
|
||||||
|
|
||||||
|
componentUpdateItem = new ComponentUpdateItem();
|
||||||
|
ComponentsByType.Add(componentType, componentUpdateItem);
|
||||||
|
|
||||||
|
return componentUpdateItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ComponentUpdateItem : IComponentUpdateItem
|
||||||
|
{
|
||||||
|
public event Action? RefreshRequested;
|
||||||
|
public virtual void CallRequestRefresh()
|
||||||
|
{
|
||||||
|
RefreshRequested?.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IComponentUpdateItem
|
||||||
|
{
|
||||||
|
event Action? RefreshRequested;
|
||||||
void CallRequestRefresh();
|
void CallRequestRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface IComponentUpdateService
|
||||||
|
{
|
||||||
|
void CallRequestRefreshAll();
|
||||||
|
void CallRequestRefresh<T>() where T : class, IComponent;
|
||||||
|
|
||||||
|
IComponentUpdateItem GetOrAddComponent<T>() where T : class, IComponent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue