fix: crash on unavailable source api (#4)
* fix: crash on unavailable source api the screen not updating because of errors * Change temperature format if null Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit was merged in pull request #4.
This commit is contained in:
@@ -18,10 +18,10 @@ public static class ContractExtensions
|
||||
/// A <see cref="WeatherInformation"/> object populated with current weather, aurora probability, and forecast information.
|
||||
/// </returns>
|
||||
public static WeatherInformation ToContract(
|
||||
this WeatherData weather,
|
||||
string locationName,
|
||||
this WeatherData? weather,
|
||||
string? locationName,
|
||||
AuroraForecastApiResponse? auroraForecast,
|
||||
List<Models.Forecast> forecasts)
|
||||
List<Models.Forecast>? forecasts)
|
||||
{
|
||||
return new WeatherInformation
|
||||
{
|
||||
@@ -58,23 +58,23 @@ public static class ContractExtensions
|
||||
},
|
||||
AuroraProbability = new Probability
|
||||
{
|
||||
Date = auroraForecast.Date,
|
||||
Date = auroraForecast?.Date ?? DateTime.Now,
|
||||
Calculated = new CalculatedProbability
|
||||
{
|
||||
Value = auroraForecast.Probability.Calculated.Value,
|
||||
Colour = auroraForecast.Probability.Calculated.Colour,
|
||||
Lat = auroraForecast.Probability.Calculated.Lat,
|
||||
Long = auroraForecast.Probability.Calculated.Long
|
||||
Value = auroraForecast?.Probability.Calculated.Value ?? 0,
|
||||
Colour = auroraForecast?.Probability.Calculated.Colour ?? string.Empty,
|
||||
Lat = auroraForecast?.Probability.Calculated.Lat ?? 0,
|
||||
Long = auroraForecast?.Probability.Calculated.Long ?? 0
|
||||
},
|
||||
Colour = auroraForecast.Probability.Colour,
|
||||
Value = auroraForecast.Probability.Value,
|
||||
Colour = auroraForecast?.Probability.Colour ?? string.Empty,
|
||||
Value = auroraForecast?.Probability.Value.ToString() ?? "No data",
|
||||
HighestProbability = new Highest
|
||||
{
|
||||
Colour = auroraForecast.Probability.Highest.Colour,
|
||||
Lat = auroraForecast.Probability.Highest.Lat,
|
||||
Long = auroraForecast.Probability.Highest.Long,
|
||||
Value = auroraForecast.Probability.Highest.Value,
|
||||
Date = auroraForecast.Probability.Highest.Date
|
||||
Colour = auroraForecast?.Probability.Highest.Colour ?? string.Empty,
|
||||
Lat = auroraForecast?.Probability.Highest.Lat ?? 0,
|
||||
Long = auroraForecast?.Probability.Highest.Long ?? 0,
|
||||
Value = auroraForecast?.Probability.Highest.Value ?? 0,
|
||||
Date = auroraForecast?.Probability.Highest.Date ?? DateTime.Now
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
22
HomeApi/Extensions/MediatorExtensions.cs
Normal file
22
HomeApi/Extensions/MediatorExtensions.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using MediatR;
|
||||
|
||||
namespace HomeApi.Extensions;
|
||||
|
||||
public static class MediatorExtensions
|
||||
{
|
||||
public static async Task<T?> TrySendAsync<T>(
|
||||
this IMediator mediator,
|
||||
IRequest<T> request,
|
||||
CancellationToken cancellationToken) where T : class
|
||||
{
|
||||
try
|
||||
{
|
||||
return await mediator.Send(request, cancellationToken);
|
||||
}
|
||||
catch (OperationCanceledException) { throw; }
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
23
HomeApi/Extensions/ServiceCallExtensions.cs
Normal file
23
HomeApi/Extensions/ServiceCallExtensions.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
namespace HomeApi.Extensions;
|
||||
|
||||
public static class ServiceCallExtensions
|
||||
{
|
||||
public static async Task<TResult?> TryCallAsync<TService, TResult>(
|
||||
this TService service,
|
||||
Func<TService, Task<TResult>> action,
|
||||
ILogger logger,
|
||||
string errorMessage)
|
||||
where TResult : class?
|
||||
{
|
||||
try
|
||||
{
|
||||
return await action(service);
|
||||
}
|
||||
catch (OperationCanceledException) { throw; }
|
||||
catch (Exception exception)
|
||||
{
|
||||
logger.LogError(exception, errorMessage);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user