Skip to content

Commit 2d4a37f

Browse files
Merge pull request #34 from mstew20/Windows
Cleaned Program startup and removed unnecessary methods
2 parents 8084030 + 88f9c4e commit 2d4a37f

File tree

7 files changed

+87
-74
lines changed

7 files changed

+87
-74
lines changed

src/HyperMC/HyperMcView.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,27 @@ public partial class HyperMcView : Form, IViewHost
2626
{
2727

2828
private readonly IForgeClient _forgeClient;
29-
private readonly IServiceProvider _provider;
30-
private readonly IFileManager _fileManager;
29+
private readonly IDataAccess _dataAccess;
3130
private readonly IUserSettings _settings;
31+
private readonly SettingView _settingView;
3232

33-
public HyperMcView(IForgeClient forgeClient, IServiceProvider provider, IFileManager fileManager, IUserSettings settings)
33+
public HyperMcView(IForgeClient forgeClient, IDataAccess dataAccess, IUserSettings settings, SettingView settingView)
3434
{
3535
InitializeComponent();
3636

3737
_forgeClient = forgeClient;
38-
_provider = provider;
39-
_fileManager = fileManager;
38+
_dataAccess = dataAccess;
4039
_settings = settings;
40+
_settingView = settingView;
41+
4142
_modpacks = new();
4243
_modpacks.CollectionChanged += ModpacksUpdated;
4344
}
4445

4546
private async void HyperMcView_Load(object sender, EventArgs e)
4647
{
4748
SetView(new ControlView(pnl_MainArea));
48-
var mods = await _fileManager.ReadFile<ModpackData[]>(_settings.ModPacksFile);
49+
var mods = await _dataAccess.LoadData<ModpackData[], int, ModpackData[]>(_settings.ModPacksFile);
4950
if (mods != null)
5051
{
5152
foreach (var mod in mods)
@@ -126,7 +127,7 @@ private async void ModpacksUpdated(object? sender, NotifyCollectionChangedEventA
126127
}
127128

128129
SortModpacks();
129-
await _fileManager.WriteToFile(_modpacks.ToArray(), _settings.ModPacksFile);
130+
await _dataAccess.SaveData(_settings.ModPacksFile, _modpacks.ToArray());
130131
}
131132

132133
private ModpackBox CreateModpackBox(ModpackData data)
@@ -210,7 +211,7 @@ private void Hbtn_Minimize_Click(object sender, EventArgs e)
210211
private void Hbtn_Options_Click(object sender, EventArgs e)
211212
{
212213
//Utils.NotImplAlert("Options Menu");
213-
SetView(_provider.GetRequiredService<SettingView>());
214+
SetView(_settingView);
214215
}
215216

216217
#endregion Minimize Button

src/HyperMC/Program.cs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,14 @@ static class Program
2121
[STAThread]
2222
static async Task Main()
2323
{
24-
var builder = new ConfigurationBuilder();
25-
BuildConfig(builder);
26-
builder.Build();
27-
2824
var host = Host.CreateDefaultBuilder()
25+
.ConfigureAppConfiguration(builder =>
26+
{
27+
builder.SetBasePath(Directory.GetCurrentDirectory())
28+
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
29+
.AddJsonFile($"appsettings.{ Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production" }.json", optional: true)
30+
.AddEnvironmentVariables();
31+
})
2932
.ConfigureServices((context, services) =>
3033
{
3134
ConfigureServices(services);
@@ -40,25 +43,15 @@ static async Task Main()
4043
Application.Run(host.Services.GetRequiredService<HyperMcView>());
4144
}
4245

43-
private static IServiceProvider ConfigureServices(IServiceCollection services)
46+
private static void ConfigureServices(IServiceCollection services)
4447
{
4548
services.AddSingleton<HyperMcView>()
4649
.AddSingleton<IUserSettings, UserSettings>();
4750

4851
services.AddTransient<SettingView>()
49-
.AddTransient<IFileManager, FileManager>();
52+
.AddTransient<IDataAccess, FileDataAccess>();
5053

5154
services.AddForgeClient();
52-
53-
return services.BuildServiceProvider();
54-
}
55-
56-
static void BuildConfig(IConfigurationBuilder builder)
57-
{
58-
builder.SetBasePath(Directory.GetCurrentDirectory())
59-
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
60-
.AddJsonFile($"appsettings.{ Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production" }.json", optional: true)
61-
.AddEnvironmentVariables();
6255
}
6356
}
6457
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Text.Json;
7+
using System.Threading.Tasks;
8+
9+
namespace Hypermc.Services
10+
{
11+
public class FileDataAccess : IDataAccess
12+
{
13+
public async Task<O> LoadData<T, U, O>(string fileOrQuery, U parameters = default(U), string connectionStringName = null)
14+
{
15+
if (File.Exists(fileOrQuery))
16+
{
17+
using var stream = new FileStream(fileOrQuery, FileMode.Open, FileAccess.Read);
18+
var settings = await JsonSerializer.DeserializeAsync<O>(stream);
19+
return settings;
20+
}
21+
22+
return default(O);
23+
}
24+
25+
public async Task SaveData<T>(string fileOrQuery, T parametersOrData, string connectionStringName = null)
26+
{
27+
string settingsToSave = JsonSerializer.Serialize(parametersOrData);
28+
await File.WriteAllTextAsync(fileOrQuery, settingsToSave);
29+
}
30+
}
31+
}

src/HyperMC/Services/FileManager.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace Hypermc.Services
8+
{
9+
public interface IDataAccess
10+
{
11+
/// <summary>
12+
/// Loads data from a file or database
13+
/// </summary>
14+
/// <typeparam name="T">The input type for the data that you want to be loaded</typeparam>
15+
/// <typeparam name="U">The type of the data that is being passed in to be saved</typeparam>
16+
/// <typeparam name="O">The return type</typeparam>
17+
/// <param name="fileOrQuery">The file name or query string to run</param>
18+
/// <param name="parameters">The data to query the database on (can be ignored when using file based data)</param>
19+
/// <param name="connectionStringName">The connection string name for the database (can be ignored when using file based data)</param>
20+
/// <returns></returns>
21+
Task<O> LoadData<T, U, O>(string fileOrQuery, U parameters = default(U), string connectionStringName = null);
22+
23+
/// <summary>
24+
/// Saves data to a file or database
25+
/// </summary>
26+
/// <typeparam name="T">The data type that is being passed in</typeparam>
27+
/// <param name="fileOrQuery">The file name or query string to run</param>
28+
/// <param name="parametersOrData">The data to be saved to the file or database</param>
29+
/// <param name="connectionStringName">The connection string name for the database (can be ignored when using file based data)</param>
30+
/// <returns></returns>
31+
Task SaveData<T>(string fileOrQuery, T parametersOrData = default(T), string connectionStringName = null);
32+
}
33+
}

src/HyperMC/Services/IFileManager.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/HyperMC/Settings/UserSettings.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@ public class UserSettings : IUserSettings
1515
{
1616
private readonly string _appPath;
1717
private readonly string _settingsFile;
18-
private readonly IFileManager _fileManager;
18+
private readonly IDataAccess _dataAccess;
1919

2020
public string MinecraftPath { get; private set; }
2121
public string ModPacksPath { get; private set; }
2222
public string ModPacksFile { get; }
2323

24-
public UserSettings(IFileManager fileManager, IConfiguration config)
24+
public UserSettings(IDataAccess dataAccess, IConfiguration config)
2525
{
2626
var settings = config.GetSection(nameof(ApplicationSettings)).Get<ApplicationSettings>();
2727
_appPath = string.Format(settings.AppPath, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
2828
_settingsFile = string.Format(settings.SettingsFile, _appPath);
2929

30-
_fileManager = fileManager;
30+
_dataAccess = dataAccess;
3131

3232
MinecraftPath = string.Format(settings.DeafultMinecraftPath, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
3333
ModPacksPath = string.Format(settings.DefaultModPacksPath, MinecraftPath);
@@ -46,7 +46,7 @@ public async Task Initialize()
4646
Directory.CreateDirectory(ModPacksPath);
4747
}
4848

49-
var settings = await _fileManager.ReadFile<UserSettings>(_settingsFile);
49+
var settings = await _dataAccess.LoadData<UserSettings, int, UserSettings>(_settingsFile);
5050

5151
if (settings != null)
5252
{
@@ -60,7 +60,7 @@ public async Task UpdateSettings(string mcPath, string modPath)
6060
MinecraftPath = mcPath;
6161
ModPacksPath = modPath;
6262

63-
await _fileManager.WriteToFile(this, _settingsFile);
63+
await _dataAccess.SaveData(_settingsFile, this);
6464
}
6565
}
6666
}

0 commit comments

Comments
 (0)