| 123456789101112131415161718192021222324252627282930313233343536373839 |
- using Microsoft.JSInterop;
- using System.Collections.Generic;
-
- namespace cwebplusApp.Shared.Services {
-
- public class OnlineStatusProvider {
-
- public bool Online { get => online; }
-
- public delegate void OnlineStatusChangeCallBack(bool online);
- public IJSRuntime JSRuntime { get; set; }
-
- private bool online;
- private HashSet<OnlineStatusChangeCallBack> OnlineStatusChangeCallBacks;
-
- public OnlineStatusProvider(IJSRuntime jSRuntime) {
- this.JSRuntime = jSRuntime;
- OnlineStatusChangeCallBacks = new();
- var dotNetObjRef = DotNetObjectReference.Create(this);
- JSRuntime.InvokeVoidAsync("registerOnlineStatusHandler", dotNetObjRef);
- }
-
- [JSInvokable]
- public void SetOnlineStatus(bool isOnline) {
- this.online = isOnline;
- foreach (OnlineStatusChangeCallBack OnlineStatusCallBack in OnlineStatusChangeCallBacks) {
- OnlineStatusCallBack?.Invoke(isOnline);
- }
- }
-
- public void AddOnlineStatusChangeCallBack(OnlineStatusChangeCallBack listener) {
- OnlineStatusChangeCallBacks.Add(listener);
- }
-
- public void RemoveOnlineStatusChangeCallBack(OnlineStatusChangeCallBack listener) {
- OnlineStatusChangeCallBacks.Remove(listener);
- }
- }
- }
|