Save
This commit is contained in:
		@@ -1,5 +1,179 @@
 | 
			
		||||
<h3>CascadingState</h3>
 | 
			
		||||
@if (PublicCacheData != null)
 | 
			
		||||
{
 | 
			
		||||
	if (PublicCacheData.ThemeIsDarkMode)
 | 
			
		||||
	{
 | 
			
		||||
		<Meta Content="@($"hsl({PublicCacheData.ThemeIndexColour},16%,12%)")" Name="theme-color"/>
 | 
			
		||||
		<Meta Content="@($"hsl({PublicCacheData.ThemeIndexColour},16%,12%)")" Name="background-color"/>
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		<Meta Content="@($"hsl({PublicCacheData.ThemeIndexColour},84%,88%)")" Name="theme-color"/>
 | 
			
		||||
		<Meta Content="@($"hsl({PublicCacheData.ThemeIndexColour},84%,88%)")" Name="background-color"/>
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
<style>
 | 
			
		||||
	:root {
 | 
			
		||||
	@if (PublicCacheData != null)
 | 
			
		||||
	{@if (PublicCacheData.ThemeIsDarkMode)
 | 
			
		||||
	{
 | 
			
		||||
		@($@"--background: hsl({PublicCacheData.ThemeIndexColour},16%,12%); 
 | 
			
		||||
--text-color: hsl({PublicCacheData.ThemeIndexColour},16%,73.6%); 
 | 
			
		||||
--placeholder-text-color: hsla({PublicCacheData.ThemeIndexColour},84%,52.8%,.3); 
 | 
			
		||||
--primary-color: hsl({PublicCacheData.ThemeIndexColour},16%,12%); 
 | 
			
		||||
--primary-color-light: hsl({PublicCacheData.ThemeIndexColour},84%,100%); 
 | 
			
		||||
--primary-color-dark: hsl({PublicCacheData.ThemeIndexColour},16%,33%); 
 | 
			
		||||
--primary-gradiend-light: hsl({PublicCacheData.ThemeIndexColour},16%,16%); 
 | 
			
		||||
--primary-gradiend-dark: hsl({PublicCacheData.ThemeIndexColour},16%,8%); 
 | 
			
		||||
--primary-gradiend-lighter: hsl({PublicCacheData.ThemeIndexColour},16%,20%); 
 | 
			
		||||
--primary-gradiend-darker: hsl({PublicCacheData.ThemeIndexColour},16%,4%); 
 | 
			
		||||
--light-shadow: hsla({PublicCacheData.ThemeIndexColour},84%,66%,.1); 
 | 
			
		||||
--dark-shadow: hsla({PublicCacheData.ThemeIndexColour},16%,1%,.5);")
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		@($@"--background: hsl({PublicCacheData.ThemeIndexColour},84%,88%); 
 | 
			
		||||
--text-color: hsl({PublicCacheData.ThemeIndexColour},84%,26.4%); 
 | 
			
		||||
--placeholder-text-color: hsla({PublicCacheData.ThemeIndexColour},84%,26.4%,.3); 
 | 
			
		||||
--primary-color: hsl({PublicCacheData.ThemeIndexColour},84%,88%); 
 | 
			
		||||
--primary-color-light: hsl({PublicCacheData.ThemeIndexColour},84%,100%); 
 | 
			
		||||
--primary-color-dark: hsl({PublicCacheData.ThemeIndexColour},84%,66%); 
 | 
			
		||||
--primary-gradiend-light: hsl({PublicCacheData.ThemeIndexColour},84%,92%); 
 | 
			
		||||
--primary-gradiend-dark: hsl({PublicCacheData.ThemeIndexColour},84%,84%); 
 | 
			
		||||
--primary-gradiend-lighter: hsl({PublicCacheData.ThemeIndexColour},84%,96%); 
 | 
			
		||||
--primary-gradiend-darker: hsl({PublicCacheData.ThemeIndexColour},84%,80%); 
 | 
			
		||||
--light-shadow: hsla({PublicCacheData.ThemeIndexColour},84%,100%,.5); 
 | 
			
		||||
--dark-shadow: hsla({PublicCacheData.ThemeIndexColour},84%,66%,.5);")
 | 
			
		||||
	}
 | 
			
		||||
	}
 | 
			
		||||
	}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<CascadingValue IsFixed=false Value=this>
 | 
			
		||||
	@ChildContent
 | 
			
		||||
</CascadingValue>
 | 
			
		||||
 | 
			
		||||
@code {
 | 
			
		||||
	
 | 
			
		||||
	[Parameter] public RenderFragment ChildContent { get; set; }
 | 
			
		||||
	[Inject] public IStringLocalizer<AllStrings> Localizer { get; set; }
 | 
			
		||||
	[Inject] IStorage DbStorage { get; set; }
 | 
			
		||||
	[Inject] ILocalStorageService Storage { get; set; }
 | 
			
		||||
	[Inject] IJSRuntime JS { get; set; }
 | 
			
		||||
	// [Inject] DataService DataService { get; set; }
 | 
			
		||||
	[Inject] public AppStatusService Status { get; set; }
 | 
			
		||||
	[Inject] ILogger<CascadingState> Logger { get; set; }
 | 
			
		||||
 | 
			
		||||
	public bool IsOnline { get; set; } = true;
 | 
			
		||||
	Timer IsOnlineTimer { get; set; }
 | 
			
		||||
	public PublicCacheData PublicCacheData { get; set; }
 | 
			
		||||
	public User User { get; set; }
 | 
			
		||||
 | 
			
		||||
	DotNetObjectReference<CascadingState> cascadingStateReference;
 | 
			
		||||
 | 
			
		||||
	protected override async Task OnInitializedAsync()
 | 
			
		||||
	{
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			IsOnlineTimer = new Timer(async _ => await UpdateIsOnline(), new AutoResetEvent(false), 0, 10000);
 | 
			
		||||
			cascadingStateReference = DotNetObjectReference.Create(this);
 | 
			
		||||
			await JS.InvokeVoidAsync("cascadingStateInstanceReference", cascadingStateReference);
 | 
			
		||||
			PublicCacheData = await Storage.GetItemAsync<PublicCacheData>(nameof(PublicCacheData));
 | 
			
		||||
			if (PublicCacheData == null)
 | 
			
		||||
			{
 | 
			
		||||
				PublicCacheData = new();
 | 
			
		||||
				await UpdatePublicCache(PublicCacheData);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			User = new();
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception ex)
 | 
			
		||||
		{
 | 
			
		||||
			Logger.LogError(ex, $"{nameof(CascadingState)}.{nameof(OnInitializedAsync)}");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public async ValueTask UpdatePublicCache(PublicCacheData publicCacheData)
 | 
			
		||||
	{
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			PublicCacheData = publicCacheData;
 | 
			
		||||
			await Storage.SetItemAsync(nameof(PublicCacheData), PublicCacheData);
 | 
			
		||||
			StateHasChanged();
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception ex)
 | 
			
		||||
		{
 | 
			
		||||
			Console.WriteLine($"{nameof(CascadingState)}.{nameof(UpdatePublicCache)}");
 | 
			
		||||
			Console.WriteLine(ex.ToString());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	[JSInvokable]
 | 
			
		||||
	public async Task LogFromJs(string message, string where)
 | 
			
		||||
	{
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			await ProcessError(new(message), where);
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception ex)
 | 
			
		||||
		{
 | 
			
		||||
			Logger.LogError(ex, $"{nameof(CascadingState)}.{nameof(LogFromJs)}");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	async Task UpdateIsOnline()
 | 
			
		||||
	{
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			var latestOnlineState = await Status.IsOnline();
 | 
			
		||||
 | 
			
		||||
	//var latestOnlineState = Random.Shared.Next() % 2 == 0;
 | 
			
		||||
			if (latestOnlineState != IsOnline)
 | 
			
		||||
			{
 | 
			
		||||
				IsOnline = latestOnlineState;
 | 
			
		||||
				StateHasChanged();
 | 
			
		||||
			}
 | 
			
		||||
	// else
 | 
			
		||||
	// {
 | 
			
		||||
	// 	var pingIsOnline = await DataService.Ping();
 | 
			
		||||
	// 	if (pingIsOnline != IsOnline)
 | 
			
		||||
	// 	{
 | 
			
		||||
	// 		IsOnline = pingIsOnline;
 | 
			
		||||
	// 		StateHasChanged();
 | 
			
		||||
	// 	}
 | 
			
		||||
	// }
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception ex)
 | 
			
		||||
		{
 | 
			
		||||
			Logger.LogError(ex, $"{nameof(CascadingState)}.{nameof(UpdateIsOnline)}");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public async ValueTask ProcessError(Exception ex, string where)
 | 
			
		||||
	{
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			await DbStorage.AddLog(ex, where);
 | 
			
		||||
			Logger.LogError(ex, where);
 | 
			
		||||
			await Task.Run(() => {
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception exception)
 | 
			
		||||
		{
 | 
			
		||||
			Logger.LogError(exception, $"{nameof(CascadingState)}.{nameof(ProcessError)}");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public async ValueTask ProcessWarning(string message, string where)
 | 
			
		||||
	{
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			await DbStorage.AddLog(message, where);
 | 
			
		||||
			Logger.LogWarning("{where} - {message}", where, message);
 | 
			
		||||
			await Task.Run(() => {
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception exception)
 | 
			
		||||
		{
 | 
			
		||||
			Logger.LogError(exception, $"{nameof(CascadingState)}.{nameof(ProcessWarning)}");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								LayerComponents/PagesBase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								LayerComponents/PagesBase.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
using Microsoft.AspNetCore.Components;
 | 
			
		||||
 | 
			
		||||
namespace decePubClient.LayerComponents
 | 
			
		||||
{
 | 
			
		||||
	public class PagesBase : ComponentBase
 | 
			
		||||
	{
 | 
			
		||||
		public bool IsLoading { get; set; } = true;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user