Skip to content
This repository has been archived by the owner on Apr 12, 2023. It is now read-only.

接触結果を確認で画面が開かないことがある件の対応 #1100

Merged
3 commits merged into from
Aug 3, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,15 @@ private async Task<V1ExposureRiskCalculationConfiguration> 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)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
using Covid19Radar.Services;
using Chino;
using System;
using Covid19Radar.Model;
using Covid19Radar.Views;
using Xamarin.CommunityToolkit.ObjectModel;

namespace Covid19Radar.ViewModels
{
Expand All @@ -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
Expand All @@ -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;
}
Expand All @@ -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<V1ExposureRiskCalculationConfiguration>(ContactedNotifyPage.ExposureRiskCalculationConfigurationKey);

var userExposureInformationList = _exposureDataRepository.GetExposureInformationList(AppConstants.TermOfExposureRecordValidityInDays);

Expand All @@ -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));
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -74,7 +73,6 @@ public ExposureCheckPageViewModel(
ILocalPathService localPathService,
IExposureDataExportService exposureDataExportService,
IUserDataRepository userDataRepository,
IExposureRiskCalculationConfigurationRepository exposureRiskCalculationConfigurationRepository,
IDateTimeUtility dateTimeUtility
) : base(navigationService)
{
Expand All @@ -84,7 +82,6 @@ IDateTimeUtility dateTimeUtility
_localPathService = localPathService;
_exposureDataExportService = exposureDataExportService;
_userDataRepository = userDataRepository;
_exposureRiskCalculationConfigurationRepository = exposureRiskCalculationConfigurationRepository;
_dateTimeUtility = dateTimeUtility;

ExposureCheckScores = new ObservableCollection<ExposureCheckScoreModel>();
Expand All @@ -94,7 +91,7 @@ IDateTimeUtility dateTimeUtility
);
}

public override async void Initialize(INavigationParameters parameters)
public override void Initialize(INavigationParameters parameters)
{
base.Initialize(parameters);

Expand All @@ -103,12 +100,6 @@ public override async void Initialize(INavigationParameters parameters)
_exposureRiskCalculationConfiguration
= parameters.GetValue<V1ExposureRiskCalculationConfiguration>(ExposureCheckPage.ExposureRiskCalculationConfigurationKey);

if (_exposureRiskCalculationConfiguration is null)
{
_exposureRiskCalculationConfiguration
= await _exposureRiskCalculationConfigurationRepository.GetExposureRiskCalculationConfigurationAsync(preferCache: true);
}

_loggerService.Info(_exposureRiskCalculationConfiguration.ToString());

ShowExposureRiskCalculationConfiguration();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<ExposureSummary> Exposures { get; set; }

private string _utcDescription;
Expand All @@ -40,15 +43,13 @@ public string UtcDescription
public ExposuresPageViewModel(
INavigationService navigationService,
IExposureDataRepository exposureDataRepository,
IExposureRiskCalculationConfigurationRepository exposureRiskCalculationConfigurationRepository,
IExposureRiskCalculationService exposureRiskCalculationService,
ILocalPathService localPathService,
IExposureDataExportService exposureDataExportService,
ILoggerService loggerService
) : base(navigationService)
{
_exposureDataRepository = exposureDataRepository;
_exposureRiskCalculationConfigurationRepository = exposureRiskCalculationConfigurationRepository;
_exposureRiskCalculationService = exposureRiskCalculationService;
_localPathService = localPathService;
_exposureDataExportService = exposureDataExportService;
Expand All @@ -62,14 +63,26 @@ ILoggerService loggerService
);
}

public override void Initialize(INavigationParameters parameters)
{
base.Initialize(parameters);
_loggerService.StartMethod();

try
{
_exposureRiskCalculationConfiguration =
parameters.GetValue<V1ExposureRiskCalculationConfiguration>(ExposuresPage.ExposureRiskCalculationConfigurationKey);
}
finally
{
_loggerService.EndMethod();
}
}

public async Task InitExposures()
{
var exposures = new ObservableCollection<ExposureSummary>();

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());
Expand All @@ -95,7 +108,7 @@ var userExposureInformationList
RiskLevel riskLevel = _exposureRiskCalculationService.CalcRiskLevel(
dailySummary,
ew.ToList(),
exposureRiskCalculationConfiguration
_exposureRiskCalculationConfiguration
);
if (riskLevel < RiskLevel.High)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,6 @@ await UserDialogs.Instance.AlertAsync(

// Load necessary files asynchronous
_ = exposureConfigurationRepository.GetExposureConfigurationAsync();
_ = exposureRiskCalculationConfigurationRepository
.GetExposureRiskCalculationConfigurationAsync(preferCache: false);

await localNotificationService.PrepareAsync();

Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
Expand Down Expand Up @@ -66,7 +66,7 @@
</Label>
<Button
AutomationProperties.IsInAccessibleTree="True"
Command="{prism:NavigateTo 'ExposuresPage'}"
Command="{Binding Path=OnExposureList}"
Style="{StaticResource DefaultButton}"
Text="{x:Static resources:AppResources.ContactedNotifyPageButton1}" />
<StackLayout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

using Covid19Radar.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Essentials;
using Covid19Radar.Model;
using Prism.Navigation;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

Expand All @@ -17,10 +12,25 @@ namespace Covid19Radar.Views
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ContactedNotifyPage : ContentPage
{
public const string ExposureRiskCalculationConfigurationKey = "contacted_notify_page.exposure_risk_calculation_configuration";

public static INavigationParameters BuildNavigationParams(
V1ExposureRiskCalculationConfiguration exposureRiskCalculationConfiguration,
INavigationParameters? baseParam = null
)
{
var param = new NavigationParameters();
param.CopyFrom(baseParam);

param.Add(ExposureRiskCalculationConfigurationKey, exposureRiskCalculationConfiguration);

return param;
}

public ContactedNotifyPage()
{
InitializeComponent();
}

}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.

using Covid19Radar.Model;
using Prism.Navigation;
using Xamarin.Forms;
Expand All @@ -11,7 +12,7 @@ namespace Covid19Radar.Views
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ExposureCheckPage : ContentPage
{
public const string ExposureRiskCalculationConfigurationKey = "exposure_risk_calculation_configuration";
public const string ExposureRiskCalculationConfigurationKey = "exposure_check_page.exposure_risk_calculation_configuration";

public static INavigationParameters BuildNavigationParams(
V1ExposureRiskCalculationConfiguration exposureRiskCalculationConfiguration,
Expand Down
25 changes: 18 additions & 7 deletions Covid19Radar/Covid19Radar/Views/HomePage/ExposuresPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Covid19Radar.Model;
using Prism.Navigation;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

Expand All @@ -16,9 +12,24 @@ namespace Covid19Radar.Views
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ExposuresPage : ContentPage
{
public const string ExposureRiskCalculationConfigurationKey = "exposures_page.exposure_risk_calculation_configuration";

public static INavigationParameters BuildNavigationParams(
V1ExposureRiskCalculationConfiguration exposureRiskCalculationConfiguration,
INavigationParameters? baseParam = null
)
{
var param = new NavigationParameters();
param.CopyFrom(baseParam);

param.Add(ExposureRiskCalculationConfigurationKey, exposureRiskCalculationConfiguration);

return param;
}

public ExposuresPage()
{
InitializeComponent();
}
}
}
}
Loading