Skip to content

Commit

Permalink
Further refactoring and notes for future refactorings. Still working …
Browse files Browse the repository at this point in the history
…towards defining the main functions in the program more clearly.
  • Loading branch information
Delubear committed Oct 17, 2024
1 parent 3da2cfc commit 17bd243
Show file tree
Hide file tree
Showing 26 changed files with 84 additions and 67 deletions.
1 change: 1 addition & 0 deletions GlucoseTray.Domain/DisplayResults/AlertService.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.GlucoseSettings;

namespace GlucoseTray.Domain.DisplayResults;

Expand Down
1 change: 1 addition & 0 deletions GlucoseTray.Domain/FetchResults/Dexcom/DexcomService.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GlucoseTray.Domain.DisplayResults;
using GlucoseTray.Domain.GlucoseSettings;
using Microsoft.Extensions.Logging;
using System.Text.Json;

Expand Down
1 change: 1 addition & 0 deletions GlucoseTray.Domain/FetchResults/GlucoseFetchService.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.FetchResults.Dexcom;
using GlucoseTray.Domain.FetchResults.Nightscout;
using GlucoseTray.Domain.GlucoseSettings;
using Microsoft.Extensions.Logging;

namespace GlucoseTray.Domain.FetchResults;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using GlucoseTray.Domain.DisplayResults;
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.GlucoseSettings;
using Microsoft.Extensions.Logging;
using System.Text.Json;

Expand Down
1 change: 1 addition & 0 deletions GlucoseTray.Domain/FetchResults/UrlAssembler.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.GlucoseSettings;

namespace GlucoseTray.Domain.FetchResults;

Expand Down
1 change: 1 addition & 0 deletions GlucoseTray.Domain/GlucoseResult.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.GlucoseSettings;

namespace GlucoseTray.Domain;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System.ComponentModel;
using System.Text.Json.Serialization;

namespace GlucoseTray.GlucoseSettings;
namespace GlucoseTray.Domain.GlucoseSettings;

public class GlucoseTraySettings : INotifyPropertyChanged
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using GlucoseTray.Domain.Enums;

namespace GlucoseTray.Domain
namespace GlucoseTray.Domain.GlucoseSettings
{
public interface ISettingsProxy
{
Expand Down
15 changes: 15 additions & 0 deletions GlucoseTray.Domain/GlucoseSettings/ISettingsWindowService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using GlucoseTray.Domain.Enums;

namespace GlucoseTray.Domain.GlucoseSettings;

public interface ISettingsWindowService
{
GlucoseTraySettings GetDefaultSettings();
IEnumerable<string> GetDexComServerLocationDescriptions();
GlucoseTraySettings? GetSettingsFromFile();
void UpdateValuesFromMMoLToMG(GlucoseTraySettings settings);
void UpdateValuesFromMGToMMoL(GlucoseTraySettings _settings);
void UpdateServerDetails(GlucoseTraySettings settings, FetchMethod fetchMethod, GlucoseUnitType unitType, DexcomServerLocation dexcomServerLocation, string dexcomUsername, string dexcomPassword, string nightscoutAccessToken);
(bool IsValid, IEnumerable<string> Errors) IsValid(GlucoseTraySettings settings);
void Save(GlucoseTraySettings settings);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System.Security.Cryptography;
using System.Text;

namespace GlucoseTray.GlucoseSettings;
namespace GlucoseTray.Domain.GlucoseSettings;

/// <summary>
/// Used example from here: https://tekeye.uk/visual_studio/encrypt-decrypt-c-sharp-string
Expand Down
2 changes: 1 addition & 1 deletion GlucoseTray.Domain/GlucoseTray.Domain.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.2" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions GlucoseTray.Infrastructure/ExternalCommunicationAdapter.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GlucoseTray.Domain;
using GlucoseTray.Domain.FetchResults;
using GlucoseTray.Domain.FetchResults;
using GlucoseTray.Domain.GlucoseSettings;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using System.Text;
Expand Down
6 changes: 6 additions & 0 deletions GlucoseTray.Infrastructure/FileService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ public interface IFileService<T> where T : class
{
void WriteModelToJsonFile(T model, string file);
T? ReadModelFromFile(string file);
bool DoesFileExist(string filePath);
}

public class FileService<T> : IFileService<T> where T : class
Expand All @@ -32,4 +33,9 @@ public void WriteModelToJsonFile(T model, string file)

return model;
}

public bool DoesFileExist(string filePath)
{
return File.Exists(filePath);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.1" />
<PackageReference Include="TaskScheduler" Version="2.11.0" />
</ItemGroup>

Expand Down
1 change: 1 addition & 0 deletions GlucoseTray.Tests/AlertServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain;
using GlucoseTray.Domain.DisplayResults;
using GlucoseTray.Domain.GlucoseSettings;

namespace GlucoseTray.Tests;

Expand Down
1 change: 1 addition & 0 deletions GlucoseTray.Tests/GlucoseFetchResultExtensionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.DisplayResults;
using NSubstitute;
using GlucoseTray.Domain.GlucoseSettings;

namespace GlucoseTray.Tests;

Expand Down
1 change: 1 addition & 0 deletions GlucoseTray.Tests/SettingsProxyTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.GlucoseSettings;
using GlucoseTray.GlucoseSettings;
using Microsoft.Extensions.Options;
using NSubstitute;
Expand Down
5 changes: 3 additions & 2 deletions GlucoseTray/AppContext.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using GlucoseTray.Domain;
using GlucoseTray.Domain.GlucoseSettings;
using Microsoft.Extensions.Logging;
using System.Windows.Forms;

Expand All @@ -16,10 +17,10 @@ public AppContext(ILogger<AppContext> logger, IRunner runner, ISettingsProxy opt
_runner = runner;
_options = options;

BeginCycle();
RunUntilFailureAsync();
}

private async void BeginCycle()
private async void RunUntilFailureAsync()
{
_runner.Initialize(new EventHandler(Exit));

Expand Down
6 changes: 3 additions & 3 deletions GlucoseTray/DisplayResults/IconService.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using GlucoseTray.Domain;
using GlucoseTray.Domain.DisplayResults;
using GlucoseTray.Domain.Enums;
using GlucoseTray.Views;
using GlucoseTray.Domain.GlucoseSettings;
using GlucoseTray.Views.Settings;
using Microsoft.Extensions.Logging;
using System.ComponentModel;
Expand All @@ -12,7 +12,7 @@

namespace GlucoseTray.DisplayResults;

public class IconService(ILogger<IconService> logger, ISettingsProxy options, ITaskSchedulerService taskScheduler, ISettingsWindowService settingsWindowService) : IIconService
public class IconService(ILogger<IconService> logger, ISettingsProxy options, ITaskSchedulerService taskScheduler, ISettingsWindowService settingsWindowService, IDialogService dialogService) : IIconService
{
private readonly ILogger<IconService> _logger = logger;
private readonly ISettingsProxy _options = options;
Expand Down Expand Up @@ -97,7 +97,7 @@ private void ChangeSettings(object? sender, EventArgs e)
{
if (!SettingsFormIsOpen)
{
var settingsWindow = new SettingsWindow(_settingsWindowService);
var settingsWindow = new SettingsWindow(_settingsWindowService, dialogService);
SettingsFormIsOpen = true;
settingsWindow.ShowDialog();
SettingsFormIsOpen = false;
Expand Down
4 changes: 2 additions & 2 deletions GlucoseTray/GlucoseSettings/SettingsProxy.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using GlucoseTray.Domain;
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.GlucoseSettings;
using Microsoft.Extensions.Options;

namespace GlucoseTray.GlucoseSettings;
Expand Down
1 change: 1 addition & 0 deletions GlucoseTray/GlucoseSettings/SettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Net.Http.Headers;
using System.Text.Json;
using GlucoseTray.Domain.Enums;
using GlucoseTray.Domain.GlucoseSettings;
using GlucoseTray.Infrastructure;

namespace GlucoseTray.GlucoseSettings;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,13 @@
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows;
using GlucoseTray.Domain.DisplayResults;
using GlucoseTray.Domain.Enums;
using GlucoseTray.GlucoseSettings;
using GlucoseTray.Domain.GlucoseSettings;
using GlucoseTray.Infrastructure;

namespace GlucoseTray.Views;
namespace GlucoseTray.GlucoseSettings;

public interface ISettingsWindowService
{
GlucoseTraySettings GetDefaultSettings();
IEnumerable<string> GetDexComServerLocationDescriptions();
GlucoseTraySettings? GetSettingsFromFile();
void UpdateValuesFromMMoLToMG(GlucoseTraySettings settings);
void UpdateValuesFromMGToMMoL(GlucoseTraySettings _settings);
void UpdateServerDetails(GlucoseTraySettings settings, FetchMethod fetchMethod, GlucoseUnitType unitType, DexcomServerLocation dexcomServerLocation, string dexcomUsername, string dexcomPassword, string nightscoutAccessToken);
(bool IsValid, IEnumerable<string> Errors) IsValid(GlucoseTraySettings settings);
void Save(GlucoseTraySettings settings);
}

public class SettingsWindowService(IFileService<GlucoseTraySettings> fileService, ISettingsService settingsService) : ISettingsWindowService
public class SettingsWindowService(IFileService<GlucoseTraySettings> fileService, ISettingsService settingsService, IDialogService dialogService) : ISettingsWindowService
{
public void Save(GlucoseTraySettings settings)
{
Expand Down Expand Up @@ -91,19 +78,12 @@ public IEnumerable<string> GetDexComServerLocationDescriptions()
public GlucoseTraySettings? GetSettingsFromFile()
{
GlucoseTraySettings? model = null;
if (File.Exists(Program.SettingsFile))
if (fileService.DoesFileExist(Program.SettingsFile))
{
try
{
model = fileService.ReadModelFromFile(Program.SettingsFile);
model = fileService.ReadModelFromFile(Program.SettingsFile);

if (model is null)
MessageBox.Show("Unable to load existing settings due to a bad file.");
}
catch (Exception e) // Catch serialization errors due to a bad file
{
MessageBox.Show("Unable to load existing settings due to a bad file. " + e.Message + e.InnerException?.Message);
}
if (model is null)
dialogService.ShowErrorAlert("Unable to load existing settings due to a bad file.", "Error");
}

return model;
Expand Down
16 changes: 8 additions & 8 deletions GlucoseTray/GlucoseTray.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
<PackageReference Include="System.Drawing.Common" Version="8.0.8" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.1" />
<PackageReference Include="System.Drawing.Common" Version="8.0.10" />
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
<PackageReference Include="System.Text.Json" Version="8.0.4" />
<PackageReference Include="System.Text.Json" Version="8.0.5" />
</ItemGroup>

<ItemGroup>
Expand Down
28 changes: 15 additions & 13 deletions GlucoseTray/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@
using GlucoseTray.Domain;
using GlucoseTray.Domain.DisplayResults;
using GlucoseTray.Domain.FetchResults;
using GlucoseTray.Domain.GlucoseSettings;
using GlucoseTray.GlucoseSettings;
using GlucoseTray.Infrastructure;
using GlucoseTray.Settings;
using GlucoseTray.Views;
using GlucoseTray.Views.Settings;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.IO;
using System.Reflection;
using System.Text.Json;
using System.Threading;
Expand All @@ -20,9 +19,8 @@ namespace GlucoseTray;

public class Program
{
private static IConfiguration? Configuration { get; set; }
public static string SettingsFile { get; set; } = string.Empty;
public static AppSettings AppSettings { get; set; } = new();
public static string SettingsFile { get; set; } = string.Empty; // TODO: This is primarily used in the GlucoseSettings namespace and should be moved there and see if we can remove the static.
public static AppSettings AppSettings { get; set; } = new(); // TODO: This is only accessed from IconService and should be moved closer to there.

[STAThread]
private static void Main(string[] args)
Expand All @@ -40,16 +38,15 @@ private static void Main(string[] args)

var services = host.Services;

AppSettings = GetAppSettings();
AppSettings = GetAppSettings(); // TODO: This doesn't need to be assigned here. It should be moved closer to the IconService.

var app = services.GetRequiredService<AppContext>();
Application.Run(app);
}

private static void ConfigureServices(IConfiguration configuration, IServiceCollection services)
{
Configuration = configuration;
services.Configure<GlucoseTraySettings>(Configuration)
services.Configure<GlucoseTraySettings>(configuration)
.AddHttpClient()
.AddScoped<AppContext, AppContext>()
.AddScoped<IIconService, IconService>()
Expand All @@ -70,16 +67,17 @@ private static AppSettings GetAppSettings()
return container.AppSettings;
}

private static bool LoadApplicationSettings()
private static bool LoadApplicationSettings() // TODO: This should mostly be moved to a service in the GlucoseSettings area.
{
Environment.SetEnvironmentVariable("windir", Environment.GetEnvironmentVariable("SystemRoot"), EnvironmentVariableTarget.User);
SettingsFile = Application.UserAppDataPath + @"\glucose_tray_settings.json";
var fileService = new FileService<GlucoseTraySettings>();
var settingsService = new SettingsService(fileService);
if (!File.Exists(SettingsFile) || settingsService.ValidateSettings().Count != 0)
var dialogService = new DialogService();
if (!fileService.DoesFileExist(SettingsFile) || settingsService.ValidateSettings().Count != 0)
{
var settingsWindowService = new SettingsWindowService(fileService, settingsService);
var settingsWindow = new SettingsWindow(settingsWindowService);
var settingsWindowService = new SettingsWindowService(fileService, settingsService, dialogService);
var settingsWindow = new SettingsWindow(settingsWindowService, dialogService);
if (settingsWindow.ShowDialog() != true) // Did not want to setup application.
{
Application.Exit();
Expand All @@ -89,5 +87,9 @@ private static bool LoadApplicationSettings()
return true;
}

private static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e) => MessageBox.Show(e?.Exception?.Message + " --- " + e?.Exception?.InnerException?.Message, "Fatal Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
private static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
{
var dialogService = new DialogService();
dialogService.ShowCriticalAlert("An unexpected error occurred. Please restart the application. " + e?.Exception?.Message + " --- " + e?.Exception?.InnerException?.Message, "Fatal Error");
}
}
Loading

0 comments on commit 17bd243

Please sign in to comment.