Skip to content

Commit

Permalink
NextTrainの取得が失敗した際にクラッシュしないようにした
Browse files Browse the repository at this point in the history
暫定対応。本当はLoaderJSON側で何とかすべき。
TetsuOtter committed Aug 28, 2024
1 parent 1cdbf56 commit 50c0ad6
Showing 1 changed file with 34 additions and 5 deletions.
39 changes: 34 additions & 5 deletions TRViS/DTAC/TimetableParts/NextTrainButton.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using Microsoft.AppCenter.Crashes;
using TRViS.IO.Models;
using TRViS.ValueConverters.DTAC;

namespace TRViS.DTAC.TimetableParts;

public class NextTrainButton : Grid
{
private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
readonly Button _NextTrainButton = new()
{
FontFamily = DTACElementStyles.DefaultFontFamily,
@@ -36,10 +37,23 @@ public string NextTrainId
get => _NextTrainId;
set
{
if (_NextTrainId == value)
TrainData? nextTrainData;
try
{
nextTrainData = InstanceManager.AppViewModel.Loader?.GetTrainData(value);
}
catch (Exception ex)
{
this.IsVisible = false;
string msg = "Cannot get the timetable of the next train.\n"
+ $"WorkGroupID: {InstanceManager.AppViewModel.SelectedWorkGroup?.Id}\n"
+ $"WorkID: {InstanceManager.AppViewModel.SelectedWork?.Id}\n"
+ $"TrainID: {InstanceManager.AppViewModel.SelectedTrainData?.Id}\n"
+ $"CurrentNextTrainID: {_NextTrainId}\n"
+ $"GivenNextTrainID: {value}";
logger.Error(ex, msg);
return;

TrainData? nextTrainData = InstanceManager.AppViewModel.Loader?.GetTrainData(value);
}
if (nextTrainData is null)
{
throw new KeyNotFoundException($"Next TrainData not found (id: {value})");
@@ -50,6 +64,7 @@ public string NextTrainId
}

_NextTrainId = value;
this.IsVisible = true;

string trainNumberToShow = Utils.InsertCharBetweenCharAndMakeWide(nextTrainData.TrainNumber, Utils.THIN_SPACE);
_NextTrainButton.Text = $"{trainNumberToShow}の時刻表へ";
@@ -61,6 +76,20 @@ private void NextTrainButton_Click(object? _, EventArgs e)
if (string.IsNullOrEmpty(_NextTrainId))
return;

InstanceManager.AppViewModel.SelectedTrainData = InstanceManager.AppViewModel.Loader?.GetTrainData(_NextTrainId);
try
{
InstanceManager.AppViewModel.SelectedTrainData = InstanceManager.AppViewModel.Loader?.GetTrainData(_NextTrainId);
}
catch (Exception ex)
{
string msg = "次の列車の時刻表を取得できませんでした。\n"
+ $"WorkGroupID: {InstanceManager.AppViewModel.SelectedWorkGroup?.Id}\n"
+ $"WorkID: {InstanceManager.AppViewModel.SelectedWork?.Id}\n"
+ $"TrainID: {InstanceManager.AppViewModel.SelectedTrainData?.Id}\n"
+ $"NextTrainID: {_NextTrainId}";
logger.Error(ex, "Unknown Exception: " + msg);
Crashes.TrackError(ex);
Utils.DisplayAlert("エラー", msg, "OK");
}
}
}

0 comments on commit 50c0ad6

Please sign in to comment.