API Test
This commit is contained in:
@@ -1,55 +1,19 @@
|
||||
namespace Web.Services;
|
||||
|
||||
using Microsoft.JSInterop;
|
||||
|
||||
namespace Web.Services;
|
||||
|
||||
public class NetworkStatusService : IAsyncDisposable, IDisposable
|
||||
{
|
||||
private readonly IJSRuntime _jsRuntime;
|
||||
private DotNetObjectReference<NetworkStatusService>? _dotNetRef;
|
||||
private bool _isOnline = true;
|
||||
private bool _initialized;
|
||||
|
||||
public event Action<bool>? StatusChanged;
|
||||
|
||||
public bool IsOnline => _isOnline;
|
||||
|
||||
public NetworkStatusService(IJSRuntime jsRuntime)
|
||||
{
|
||||
_jsRuntime = jsRuntime;
|
||||
}
|
||||
|
||||
public async Task InitializeAsync()
|
||||
{
|
||||
if (_initialized) return;
|
||||
_initialized = true;
|
||||
|
||||
try
|
||||
{
|
||||
_dotNetRef = DotNetObjectReference.Create(this);
|
||||
_isOnline = await _jsRuntime.InvokeAsync<bool>("networkStatus.initialize", _dotNetRef);
|
||||
StatusChanged?.Invoke(_isOnline);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[NetworkStatusService] Failed to initialize: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[JSInvokable]
|
||||
public void SetOnlineStatus(bool isOnline)
|
||||
{
|
||||
if (_isOnline != isOnline)
|
||||
{
|
||||
_isOnline = isOnline;
|
||||
StatusChanged?.Invoke(_isOnline);
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_dotNetRef?.Dispose();
|
||||
_dotNetRef = null;
|
||||
}
|
||||
public bool IsOnline { get; private set; } = true;
|
||||
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
@@ -63,7 +27,43 @@ public class NetworkStatusService : IAsyncDisposable, IDisposable
|
||||
{
|
||||
// Ignore disposal errors
|
||||
}
|
||||
|
||||
_dotNetRef.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_dotNetRef?.Dispose();
|
||||
_dotNetRef = null;
|
||||
}
|
||||
|
||||
public event Action<bool>? StatusChanged;
|
||||
|
||||
public async Task InitializeAsync()
|
||||
{
|
||||
if (_initialized) return;
|
||||
_initialized = true;
|
||||
|
||||
try
|
||||
{
|
||||
_dotNetRef = DotNetObjectReference.Create(this);
|
||||
IsOnline = await _jsRuntime.InvokeAsync<bool>("networkStatus.initialize", _dotNetRef);
|
||||
StatusChanged?.Invoke(IsOnline);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[NetworkStatusService] Failed to initialize: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[JSInvokable]
|
||||
public void SetOnlineStatus(bool isOnline)
|
||||
{
|
||||
if (IsOnline != isOnline)
|
||||
{
|
||||
IsOnline = isOnline;
|
||||
StatusChanged?.Invoke(IsOnline);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user