From 3019f440ac16b1ad8538e25936e689c762a5d955 Mon Sep 17 00:00:00 2001 From: Julie Cantin Date: Thu, 17 Sep 2020 15:32:36 -0400 Subject: [PATCH] feat: Add features to the sample --- .../GeolocatorServiceExtensions.cs | 12 +++- .../MainPage.xaml | 8 ++- .../MainPageViewModel.cs | 66 ++++++++++++++++++- 3 files changed, 79 insertions(+), 7 deletions(-) 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"> - +