PWA Fundvelo der Caritas.
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

PermissionsProvider.cs 1.6KB

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