From d760bf4ad233f89b1285fb910719288ca806d2f1 Mon Sep 17 00:00:00 2001 From: cocoa-dev004 <66989461+cocoa-dev004@users.noreply.github.com> Date: Mon, 1 Aug 2022 14:43:30 +0900 Subject: [PATCH 1/3] Fixed get exposure risk calculation configuration --- ...eRiskCalculationConfigurationRepository.cs | 9 +++++ .../HomePage/ContactedNotifyPageViewModel.cs | 28 ++++++++++----- .../HomePage/ExposureCheckPageViewModel.cs | 11 +----- .../HomePage/ExposuresPageViewModel.cs | 29 +++++++++++----- .../ViewModels/HomePage/HomePageViewModel.cs | 6 ++-- .../Views/HomePage/ContactedNotifyPage.xaml | 4 +-- .../HomePage/ContactedNotifyPage.xaml.cs | 26 +++++++++----- .../Views/HomePage/ExposureCheckPage.xaml.cs | 3 +- .../Views/HomePage/ExposuresPage.xaml.cs | 25 ++++++++++---- .../ContactedNotifyPageViewModelTests.cs | 34 +------------------ .../ExposureCheckPageViewModelTests.cs | 3 -- .../HomePage/ExposuresPageViewModelTests.cs | 15 -------- .../HomePage/HomePageViewModelTests.cs | 2 +- 13 files changed, 96 insertions(+), 99 deletions(-) diff --git a/Covid19Radar/Covid19Radar/Repository/ExposureRiskCalculationConfigurationRepository.cs b/Covid19Radar/Covid19Radar/Repository/ExposureRiskCalculationConfigurationRepository.cs index 274cf03b3..765ca132a 100644 --- a/Covid19Radar/Covid19Radar/Repository/ExposureRiskCalculationConfigurationRepository.cs +++ b/Covid19Radar/Covid19Radar/Repository/ExposureRiskCalculationConfigurationRepository.cs @@ -147,6 +147,15 @@ private async Task GetExposureRiskCalcul { _loggerService.Exception("HttpRequestException.", exception); } + catch (TaskCanceledException exception) + { + _loggerService.Exception("TaskCanceledException.", exception); + } + catch (Exception exception) + { + // Catch android timeout (Java.IO.IOException) + _loggerService.Exception("Exception.", exception); + } if (newExposureRiskCalculationConfiguration is null) { diff --git a/Covid19Radar/Covid19Radar/ViewModels/HomePage/ContactedNotifyPageViewModel.cs b/Covid19Radar/Covid19Radar/ViewModels/HomePage/ContactedNotifyPageViewModel.cs index 443bf90c7..30d4753f8 100644 --- a/Covid19Radar/Covid19Radar/ViewModels/HomePage/ContactedNotifyPageViewModel.cs +++ b/Covid19Radar/Covid19Radar/ViewModels/HomePage/ContactedNotifyPageViewModel.cs @@ -13,6 +13,9 @@ using Covid19Radar.Services; using Chino; using System; +using Covid19Radar.Model; +using Covid19Radar.Views; +using Xamarin.CommunityToolkit.ObjectModel; namespace Covid19Radar.ViewModels { @@ -22,7 +25,7 @@ public class ContactedNotifyPageViewModel : ViewModelBase private readonly IExposureDataRepository _exposureDataRepository; private readonly IExposureRiskCalculationService _exposureRiskCalculationService; - private readonly IExposureRiskCalculationConfigurationRepository _exposureRiskCalculationConfigurationRepository; + private V1ExposureRiskCalculationConfiguration _exposureRiskCalculationConfiguration; private string _exposureDurationInMinutes = ""; public string ExposureDurationInMinutes @@ -42,13 +45,12 @@ public ContactedNotifyPageViewModel( INavigationService navigationService, ILoggerService loggerService, IExposureDataRepository exposureDataRepository, - IExposureRiskCalculationService exposureRiskCalculationService, - IExposureRiskCalculationConfigurationRepository exposureRiskCalculationConfigurationRepository) : base(navigationService) + IExposureRiskCalculationService exposureRiskCalculationService + ) : base(navigationService) { this.loggerService = loggerService; _exposureDataRepository = exposureDataRepository; _exposureRiskCalculationService = exposureRiskCalculationService; - _exposureRiskCalculationConfigurationRepository = exposureRiskCalculationConfigurationRepository; Title = AppResources.TitileUserStatusSettings; } @@ -61,9 +63,8 @@ public override async void Initialize(INavigationParameters parameters) { loggerService.StartMethod(); - var exposureRiskCalculationConfiguration - = await _exposureRiskCalculationConfigurationRepository.GetExposureRiskCalculationConfigurationAsync(preferCache: true); - loggerService.Info(exposureRiskCalculationConfiguration.ToString()); + _exposureRiskCalculationConfiguration = + parameters.GetValue(ContactedNotifyPage.ExposureRiskCalculationConfigurationKey); var userExposureInformationList = _exposureDataRepository.GetExposureInformationList(AppConstants.TermOfExposureRecordValidityInDays); @@ -89,7 +90,7 @@ var exposureRiskCalculationConfiguration var dailySummary = dailySummaryMap[ew.Key]; - RiskLevel riskLevel = _exposureRiskCalculationService.CalcRiskLevel(dailySummary, ew.ToList(), exposureRiskCalculationConfiguration); + RiskLevel riskLevel = _exposureRiskCalculationService.CalcRiskLevel(dailySummary, ew.ToList(), _exposureRiskCalculationConfiguration); if (riskLevel >= RiskLevel.High) { exposureDurationInSec += ew.Sum(e => e.ScanInstances.Sum(s => s.SecondsSinceLastScan)); @@ -138,6 +139,17 @@ var exposureRiskCalculationConfiguration } } + public IAsyncCommand OnExposureList => new AsyncCommand(async () => + { + loggerService.StartMethod(); + + INavigationParameters navigaitonParameters + = ExposuresPage.BuildNavigationParams(_exposureRiskCalculationConfiguration); + await NavigationService.NavigateAsync(nameof(ExposuresPage), navigaitonParameters); + + loggerService.EndMethod(); + }); + public Command OnClickByForm => new Command(async () => { loggerService.StartMethod(); diff --git a/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposureCheckPageViewModel.cs b/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposureCheckPageViewModel.cs index 27f95961b..be4fbc57d 100644 --- a/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposureCheckPageViewModel.cs +++ b/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposureCheckPageViewModel.cs @@ -27,7 +27,6 @@ public class ExposureCheckPageViewModel : ViewModelBase { private readonly ILoggerService _loggerService; private readonly IExposureDataRepository _exposureDataRepository; - private readonly IExposureRiskCalculationConfigurationRepository _exposureRiskCalculationConfigurationRepository; private readonly IExposureRiskCalculationService _exposureRiskCalculationService; private readonly ILocalPathService _localPathService; private readonly IExposureDataExportService _exposureDataExportService; @@ -74,7 +73,6 @@ public ExposureCheckPageViewModel( ILocalPathService localPathService, IExposureDataExportService exposureDataExportService, IUserDataRepository userDataRepository, - IExposureRiskCalculationConfigurationRepository exposureRiskCalculationConfigurationRepository, IDateTimeUtility dateTimeUtility ) : base(navigationService) { @@ -84,7 +82,6 @@ IDateTimeUtility dateTimeUtility _localPathService = localPathService; _exposureDataExportService = exposureDataExportService; _userDataRepository = userDataRepository; - _exposureRiskCalculationConfigurationRepository = exposureRiskCalculationConfigurationRepository; _dateTimeUtility = dateTimeUtility; ExposureCheckScores = new ObservableCollection(); @@ -94,7 +91,7 @@ IDateTimeUtility dateTimeUtility ); } - public override async void Initialize(INavigationParameters parameters) + public override void Initialize(INavigationParameters parameters) { base.Initialize(parameters); @@ -103,12 +100,6 @@ public override async void Initialize(INavigationParameters parameters) _exposureRiskCalculationConfiguration = parameters.GetValue(ExposureCheckPage.ExposureRiskCalculationConfigurationKey); - if (_exposureRiskCalculationConfiguration is null) - { - _exposureRiskCalculationConfiguration - = await _exposureRiskCalculationConfigurationRepository.GetExposureRiskCalculationConfigurationAsync(preferCache: true); - } - _loggerService.Info(_exposureRiskCalculationConfiguration.ToString()); ShowExposureRiskCalculationConfiguration(); diff --git a/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposuresPageViewModel.cs b/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposuresPageViewModel.cs index 3190073f9..162b16c95 100644 --- a/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposuresPageViewModel.cs +++ b/Covid19Radar/Covid19Radar/ViewModels/HomePage/ExposuresPageViewModel.cs @@ -4,10 +4,12 @@ using Chino; using Covid19Radar.Common; +using Covid19Radar.Model; using Covid19Radar.Repository; using Covid19Radar.Resources; using Covid19Radar.Services; using Covid19Radar.Services.Logs; +using Covid19Radar.Views; using Prism.Navigation; using System; using System.Collections.ObjectModel; @@ -21,13 +23,14 @@ namespace Covid19Radar.ViewModels public class ExposuresPageViewModel : ViewModelBase { private readonly IExposureDataRepository _exposureDataRepository; - private readonly IExposureRiskCalculationConfigurationRepository _exposureRiskCalculationConfigurationRepository; private readonly IExposureRiskCalculationService _exposureRiskCalculationService; private readonly ILoggerService _loggerService; private readonly ILocalPathService _localPathService; private readonly IExposureDataExportService _exposureDataExportService; + private V1ExposureRiskCalculationConfiguration _exposureRiskCalculationConfiguration; + public ObservableCollection Exposures { get; set; } private string _utcDescription; @@ -40,7 +43,6 @@ public string UtcDescription public ExposuresPageViewModel( INavigationService navigationService, IExposureDataRepository exposureDataRepository, - IExposureRiskCalculationConfigurationRepository exposureRiskCalculationConfigurationRepository, IExposureRiskCalculationService exposureRiskCalculationService, ILocalPathService localPathService, IExposureDataExportService exposureDataExportService, @@ -48,7 +50,6 @@ ILoggerService loggerService ) : base(navigationService) { _exposureDataRepository = exposureDataRepository; - _exposureRiskCalculationConfigurationRepository = exposureRiskCalculationConfigurationRepository; _exposureRiskCalculationService = exposureRiskCalculationService; _localPathService = localPathService; _exposureDataExportService = exposureDataExportService; @@ -62,14 +63,26 @@ ILoggerService loggerService ); } + public override void Initialize(INavigationParameters parameters) + { + base.Initialize(parameters); + _loggerService.StartMethod(); + + try + { + _exposureRiskCalculationConfiguration = + parameters.GetValue(ExposuresPage.ExposureRiskCalculationConfigurationKey); + } + finally + { + _loggerService.EndMethod(); + } + } + public async Task InitExposures() { var exposures = new ObservableCollection(); - var exposureRiskCalculationConfiguration - = await _exposureRiskCalculationConfigurationRepository.GetExposureRiskCalculationConfigurationAsync(preferCache: false); - _loggerService.Info(exposureRiskCalculationConfiguration.ToString()); - var dailySummaryList = await _exposureDataRepository.GetDailySummariesAsync(AppConstants.TermOfExposureRecordValidityInDays); var dailySummaryMap = dailySummaryList.ToDictionary(ds => ds.GetDateTime()); @@ -95,7 +108,7 @@ var userExposureInformationList RiskLevel riskLevel = _exposureRiskCalculationService.CalcRiskLevel( dailySummary, ew.ToList(), - exposureRiskCalculationConfiguration + _exposureRiskCalculationConfiguration ); if (riskLevel < RiskLevel.High) { diff --git a/Covid19Radar/Covid19Radar/ViewModels/HomePage/HomePageViewModel.cs b/Covid19Radar/Covid19Radar/ViewModels/HomePage/HomePageViewModel.cs index a3e178a45..ff3a4e5d5 100644 --- a/Covid19Radar/Covid19Radar/ViewModels/HomePage/HomePageViewModel.cs +++ b/Covid19Radar/Covid19Radar/ViewModels/HomePage/HomePageViewModel.cs @@ -172,8 +172,6 @@ await UserDialogs.Instance.AlertAsync( // Load necessary files asynchronous _ = exposureConfigurationRepository.GetExposureConfigurationAsync(); - _ = exposureRiskCalculationConfigurationRepository - .GetExposureRiskCalculationConfigurationAsync(preferCache: false); await localNotificationService.PrepareAsync(); @@ -284,7 +282,9 @@ private void ExposureDetectionAsync() if (hasHighRiskExposure) { - await NavigationService.NavigateAsync(nameof(ContactedNotifyPage)); + INavigationParameters navigaitonParameters + = ContactedNotifyPage.BuildNavigationParams(exposureRiskCalculationConfiguration); + await NavigationService.NavigateAsync(nameof(ContactedNotifyPage), navigaitonParameters); return; } else diff --git a/Covid19Radar/Covid19Radar/Views/HomePage/ContactedNotifyPage.xaml b/Covid19Radar/Covid19Radar/Views/HomePage/ContactedNotifyPage.xaml index 1c40e263e..b5922a12e 100644 --- a/Covid19Radar/Covid19Radar/Views/HomePage/ContactedNotifyPage.xaml +++ b/Covid19Radar/Covid19Radar/Views/HomePage/ContactedNotifyPage.xaml @@ -1,4 +1,4 @@ - + @@ -66,7 +66,7 @@