PWA Fundvelo der Caritas.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

OnlineStatusProvider.cs 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Microsoft.JSInterop;
  2. using System.Collections.Generic;
  3. namespace cwebplusApp.Shared.Services {
  4. public class OnlineStatusProvider {
  5. public bool Online { get => online; }
  6. public delegate void OnlineStatusChangeCallBack(bool online);
  7. public IJSRuntime JSRuntime { get; set; }
  8. private bool online;
  9. private HashSet<OnlineStatusChangeCallBack> OnlineStatusChangeCallBacks;
  10. public OnlineStatusProvider(IJSRuntime jSRuntime) {
  11. this.JSRuntime = jSRuntime;
  12. OnlineStatusChangeCallBacks = new();
  13. var dotNetObjRef = DotNetObjectReference.Create(this);
  14. JSRuntime.InvokeVoidAsync("registerOnlineStatusHandler", dotNetObjRef);
  15. }
  16. [JSInvokable]
  17. public void SetOnlineStatus(bool isOnline) {
  18. this.online = isOnline;
  19. foreach (OnlineStatusChangeCallBack OnlineStatusCallBack in OnlineStatusChangeCallBacks) {
  20. OnlineStatusCallBack?.Invoke(isOnline);
  21. }
  22. }
  23. public void AddOnlineStatusChangeCallBack(OnlineStatusChangeCallBack listener) {
  24. OnlineStatusChangeCallBacks.Add(listener);
  25. }
  26. public void RemoveOnlineStatusChangeCallBack(OnlineStatusChangeCallBack listener) {
  27. OnlineStatusChangeCallBacks.Remove(listener);
  28. }
  29. }
  30. }