| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- using Microsoft.JSInterop;
- using System.Threading.Tasks;
-
- namespace cwebplusApp.Shared.Services {
-
- public class PermissionsProvider {
-
- private bool _isGeoLocationAllowed;
-
- public delegate void GeoLocationPermissionChangeCallBack();
- private GeoLocationPermissionChangeCallBack _geoLocationPermissionChangeCallBack;
-
- public IJSRuntime JSRuntime { get; set; }
-
- public bool IsGeoLocationAllowed {
- get { return _isGeoLocationAllowed; }
- set { _isGeoLocationAllowed = value; }
- }
-
- public PermissionsProvider(IJSRuntime _jSRuntime) {
- this.JSRuntime = _jSRuntime;
- }
-
- [JSInvokable]
- public void GeoLocationPermissionChanged(string geoLocationStatus) {
- IsGeoLocationAllowed = (geoLocationStatus.Equals("granted") || geoLocationStatus.Equals("prompt")) ? true : false;
- _geoLocationPermissionChangeCallBack();
- }
-
- public void SetGeoLocationPermissionChangeCallBack(GeoLocationPermissionChangeCallBack callback) {
- _geoLocationPermissionChangeCallBack = callback;
- }
-
- public void RemoveOnlineStatusChangeCallBack() {
- _geoLocationPermissionChangeCallBack = null;
- }
-
- public async Task<bool> GeoLocationAllowed() {
- var dotNetObjRef = DotNetObjectReference.Create(this);
- string result = await JSRuntime.InvokeAsync<string>("IsGeoLocationAllowed", dotNetObjRef);
- this.IsGeoLocationAllowed = result.Equals("granted") || result.Equals("prompt");
- return IsGeoLocationAllowed;
- }
-
- }
- }
|