diff --git a/src/GeolocatorService.Reactive/GeolocatorServiceExtensions.cs b/src/GeolocatorService.Reactive/GeolocatorServiceExtensions.cs index 05f41fd..0f53696 100644 --- a/src/GeolocatorService.Reactive/GeolocatorServiceExtensions.cs +++ b/src/GeolocatorService.Reactive/GeolocatorServiceExtensions.cs @@ -58,11 +58,17 @@ public static IObservable ObserveIsPermissionGranted(this IGeolocatorServi /// /// Gets and observes the location permission. Requests the permission if this was not already done. /// - public static async Task> GetAndObserveIsPermissionGranted(this IGeolocatorService service, CancellationToken ct) + public static IObservable GetAndObserveIsPermissionGranted(this IGeolocatorService service) { - var isPermissionGranted = await service.RequestPermission(ct); + var initialPermission = Observable.Create(service.GetInitialPermission); + + return ObserveIsPermissionGranted(service).Merge(initialPermission); + } - return ObserveIsPermissionGranted(service).StartWith(isPermissionGranted); + private static async Task GetInitialPermission(this IGeolocatorService service, IObserver observer, CancellationToken ct) + { + var isPermissionGranted = await service.RequestPermission(ct); + observer.OnNext(isPermissionGranted); } } } diff --git a/src/GeolocatorService.Samples/GeolocatorService.Samples.Shared/MainPage.xaml b/src/GeolocatorService.Samples/GeolocatorService.Samples.Shared/MainPage.xaml index cfb5a88..58a5111 100644 --- a/src/GeolocatorService.Samples/GeolocatorService.Samples.Shared/MainPage.xaml +++ b/src/GeolocatorService.Samples/GeolocatorService.Samples.Shared/MainPage.xaml @@ -7,12 +7,18 @@ mc:Ignorable="d"> - +