PWA Fundvelo der Caritas.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

PermissionsProvider.cs 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Microsoft.JSInterop;
  2. using System;
  3. using System.Threading.Tasks;
  4. namespace cwebplusApp.Shared.Services {
  5. public class PermissionsProvider {
  6. private bool _isGeoLocationAllowed;
  7. public delegate void GeoLocationPermissionChangeCallBack();
  8. private GeoLocationPermissionChangeCallBack _geoLocationPermissionChangeCallBack;
  9. public IJSRuntime JSRuntime { get; set; }
  10. public bool IsGeoLocationAllowed {
  11. get { return _isGeoLocationAllowed; }
  12. set { _isGeoLocationAllowed = value; }
  13. }
  14. public PermissionsProvider(IJSRuntime _jSRuntime) {
  15. this.JSRuntime = _jSRuntime;
  16. initialize();
  17. }
  18. [JSInvokable]
  19. public void GeoLocationPermissionChanged(string geoLocationStatus) {
  20. IsGeoLocationAllowed = (geoLocationStatus.Equals("granted") || geoLocationStatus.Equals("prompt")) ? true : false;
  21. _geoLocationPermissionChangeCallBack();
  22. }
  23. public void SetGeoLocationPermissionChangeCallBack(GeoLocationPermissionChangeCallBack callback) {
  24. _geoLocationPermissionChangeCallBack = callback;
  25. }
  26. public void RemoveOnlineStatusChangeCallBack() {
  27. _geoLocationPermissionChangeCallBack = null;
  28. }
  29. private async void initialize() {
  30. await GeoLocationAllowed();
  31. }
  32. private async Task<bool> GeoLocationAllowed() {
  33. var dotNetObjRef = DotNetObjectReference.Create(this);
  34. string result = await JSRuntime.InvokeAsync<string>("IsGeoLocationAllowed", dotNetObjRef);
  35. this.IsGeoLocationAllowed = result.Equals("granted") || result.Equals("prompt");
  36. return IsGeoLocationAllowed;
  37. }
  38. }
  39. }