Skip to content

Commit 600ceec

Browse files
committed
providers refactoring
1 parent 7694e35 commit 600ceec

23 files changed

+1618
-1660
lines changed

src/Avalonia/Core/ViewModels/CampaignsViewModel.cs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using CommunityToolkit.Mvvm.ComponentModel;
88
using CommunityToolkit.Mvvm.Input;
99
using Games.Providers;
10+
using Mods.Providers;
1011
using Ports.Ports;
1112
using System.Collections.Immutable;
1213
using System.Diagnostics;
@@ -20,6 +21,8 @@ public sealed partial class CampaignsViewModel : RightPanelViewModel, IPortsButt
2021
private readonly GamesProvider _gamesProvider;
2122
private readonly IConfigProvider _config;
2223
private readonly PlaytimeProvider _playtimeProvider;
24+
private readonly InstalledAddonsProvider _installedAddonsProvider;
25+
private readonly DownloadableAddonsProvider _downloadableAddonsProvider;
2326

2427

2528
[Obsolete($"Don't create directly. Use {nameof(ViewModelsFactory)}.")]
@@ -29,18 +32,22 @@ public CampaignsViewModel(
2932
IConfigProvider config,
3033
PlaytimeProvider playtimeProvider,
3134
ApiInterface apiInterface,
32-
ScoresProvider scoresProvider
35+
ScoresProvider scoresProvider,
36+
InstalledAddonsProviderFactory installedAddonsProviderFactory,
37+
DownloadableAddonsProviderFactory downloadableAddonsProviderFactory
3338
) : base(config, playtimeProvider, apiInterface, scoresProvider)
3439
{
3540
Game = game;
3641

3742
_gamesProvider = gamesProvider;
3843
_config = config;
3944
_playtimeProvider = playtimeProvider;
45+
_installedAddonsProvider = installedAddonsProviderFactory.GetSingleton(game);
46+
_downloadableAddonsProvider = downloadableAddonsProviderFactory.GetSingleton(game);
4047

4148
_gamesProvider.GameChangedEvent += OnGameChanged;
42-
Game.DownloadableAddonsProvider.AddonDownloadedEvent += OnAddonChanged;
43-
Game.InstalledAddonsProvider.AddonsChangedEvent += OnAddonChanged;
49+
_installedAddonsProvider.AddonsChangedEvent += OnAddonChanged;
50+
_downloadableAddonsProvider.AddonDownloadedEvent += OnAddonChanged;
4451
}
4552

4653

@@ -53,7 +60,7 @@ public ImmutableList<IAddon> CampaignsList
5360
{
5461
get
5562
{
56-
var result = Game.GetCampaigns().Select(x => x.Value);
63+
var result = _installedAddonsProvider.GetInstalledCampaigns().Select(static x => x.Value);
5764

5865
if (string.IsNullOrWhiteSpace(SearchBoxText))
5966
{
@@ -110,7 +117,7 @@ public override IAddon? SelectedAddon
110117
/// </summary>
111118
private async Task UpdateAsync(bool createNew)
112119
{
113-
await Game.InstalledAddonsProvider.CreateCache(createNew);
120+
await _installedAddonsProvider.CreateCache(createNew);
114121

115122
OnPropertyChanged(nameof(CampaignsList));
116123
}
@@ -128,7 +135,9 @@ private async Task StartCampaignAsync(object? command)
128135
command.ThrowIfNotType<BasePort>(out var port);
129136
SelectedAddon.ThrowIfNull();
130137

131-
var args = port.GetStartGameArgs(Game, SelectedAddon, _config.SkipIntro, _config.SkipStartup);
138+
var mods = _installedAddonsProvider.GetInstalledMods();
139+
140+
var args = port.GetStartGameArgs(Game, SelectedAddon, mods, _config.SkipIntro, _config.SkipStartup);
132141

133142
await StartPortAsync(SelectedAddon.Id, port.FullPathToExe, args);
134143
}
@@ -166,7 +175,7 @@ private void DeleteCampaign()
166175
{
167176
SelectedAddon.ThrowIfNull();
168177

169-
Game.InstalledAddonsProvider.DeleteAddon(SelectedAddon);
178+
_installedAddonsProvider.DeleteAddon(SelectedAddon);
170179

171180
OnPropertyChanged(nameof(CampaignsList));
172181
}

0 commit comments

Comments
 (0)