From 59127570718d894b2812a79a7dba81fb326a09e3 Mon Sep 17 00:00:00 2001 From: Andrzej Krawczyk Date: Tue, 24 Aug 2021 17:28:35 +0200 Subject: [PATCH] Handled no camera case. --- Fitness/Services/NavigationService.cs | 41 +++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/Fitness/Services/NavigationService.cs b/Fitness/Services/NavigationService.cs index 03d3cbf..1ed12aa 100644 --- a/Fitness/Services/NavigationService.cs +++ b/Fitness/Services/NavigationService.cs @@ -5,6 +5,7 @@ using Fitness.Models; using Fitness.ViewModels; using Fitness.Views; using Tizen.NUI; +using Tizen.NUI.Components; namespace Fitness.Services { @@ -47,12 +48,14 @@ namespace Fitness.Services public async Task NavigateToExercisingView(WorkoutViewModel workoutViewModel) { var result = await PrivilegeService.Instance.CheckCameraPrivilege(); - if (result == Tizen.Security.RequestResult.AllowForever) + if (result == Tizen.Security.RequestResult.AllowForever + && TryCreateCameraDependentView( + () => new ExercisingView() + { + BindingContext = new ExercisingViewModel(workoutViewModel), + }, + out Controls.Page view)) { - var view = new ExercisingView() - { - BindingContext = new ExercisingViewModel(workoutViewModel), - }; navigation.Push(view); } } @@ -65,9 +68,11 @@ namespace Fitness.Services public async Task NavigateToScanningView() { var result = await PrivilegeService.Instance.CheckCameraPrivilege(); - if (result == Tizen.Security.RequestResult.AllowForever) + + if (result == Tizen.Security.RequestResult.AllowForever + && TryCreateCameraDependentView(() => new ScanningView(), out Controls.Page view)) { - navigation.Push(new ScanningView()); + navigation.Push(view); } } @@ -80,5 +85,27 @@ namespace Fitness.Services { navigation.PopToRoot(); } + + private bool TryCreateCameraDependentView(Func constructor, out Controls.Page view) + { + const string Message = "Cannot find the camera."; + + try + { + view = constructor(); + + return true; + } + catch (System.Reflection.TargetInvocationException e) when (e.InnerException is Tizen.Multimedia.CameraDeviceNotFoundException) + { + Notification + .MakeToast(Message, Notification.ToastBottom) + .Post(Notification.ToastLong); + + view = null; + + return false; + } + } } } -- 2.7.4