Skip to content

Commit 7f88eee

Browse files
Web downloads most likely work now
1 parent 4c87269 commit 7f88eee

5 files changed

Lines changed: 67 additions & 9 deletions

File tree

source/Reloaded.Mod.Launcher.Lib/Commands/Mod/EditModCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ public EditModCommand(PathTuple<ModConfig>? modTuple, object? parent)
2323
public bool CanExecute(object? parameter) => _modTuple != null;
2424

2525
/// <inheritdoc />
26-
public void Execute(object? parameter) => Actions.EditModDialog(new EditModDialogViewModel(_modTuple!, IoC.Get<ApplicationConfigService>(), IoC.Get<ModConfigService>()), _parent);
26+
public void Execute(object? parameter) => Actions.EditModDialog(new EditModDialogViewModel(_modTuple!, IoC.Get<ApplicationConfigService>().Items, IoC.Get<ModConfigService>().Items), _parent);
2727
}

source/Reloaded.Mod.Launcher.Lib/Models/ViewModel/Dialog/EditModDialogViewModel.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,30 +67,28 @@ public class EditModDialogViewModel : ObservableObject, IDisposable
6767
/// </summary>
6868
public ObservableCollection<ResolverFactoryConfiguration> Updates { get; set; } = new ObservableCollection<ResolverFactoryConfiguration>();
6969

70-
private readonly ApplicationConfigService _applicationConfigService;
7170
private SetModImageCommand _setModImageCommand;
7271
private Action? _close;
7372

7473
/// <inheritdoc />
75-
public EditModDialogViewModel(PathTuple<ModConfig> modTuple, ApplicationConfigService applicationConfigService, ModConfigService modConfigService)
74+
public EditModDialogViewModel(PathTuple<ModConfig> modTuple, ObservableCollection<PathTuple<ApplicationConfig>> appItems, ObservableCollection<PathTuple<ModConfig>> modsItems)
7675
{
77-
_applicationConfigService = applicationConfigService;
7876
ConfigTuple = modTuple;
7977
Config = modTuple.Config;
8078

8179
// Add Tags
8280
Tags.AddRange(Config.Tags);
8381

8482
// Add Known Apps
85-
var apps = applicationConfigService.Items;
83+
var apps = appItems;
8684
foreach (var app in apps)
8785
{
8886
bool isAppEnabled = modTuple.Config.SupportedAppId.Contains(app.Config.AppId, StringComparer.OrdinalIgnoreCase);
8987
Applications.Add(new BooleanGenericTuple<IApplicationConfig>(isAppEnabled, app.Config));
9088
}
9189

9290
// Build Dependencies
93-
var mods = modConfigService.Items; // In case collection changes during window open.
91+
var mods = modsItems; // In case collection changes during window open.
9492
foreach (var mod in mods)
9593
{
9694
bool isModEnabled = modTuple.Config.ModDependencies.Contains(mod.Config.ModId, StringComparer.OrdinalIgnoreCase);

source/Reloaded.Mod.Launcher.Lib/Startup.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,17 @@ private static void LaunchApplicationAndExit(string applicationToLaunch, bool fo
110110
[MethodImpl(MethodImplOptions.NoInlining)]
111111
private static void DownloadModAndExit(string downloadUrl)
112112
{
113+
var loaderConfig = IoC.Get<LoaderConfig>();
114+
var modConfigDir = loaderConfig.GetModConfigDirectory();
115+
var modConfig = ModConfig.GetAllMods(modConfigDir);
116+
var allAppsList = ApplicationConfig.GetAllApplications(loaderConfig.GetApplicationConfigDirectory());
117+
var allApps = new ObservableCollection<PathTuple<ApplicationConfig>>(allAppsList);
118+
var oldItemsById = modConfig.ToDictionary(
119+
x => x.Config.ModId,
120+
x => x,
121+
StringComparer.OrdinalIgnoreCase
122+
);
123+
113124
if (downloadUrl.StartsWith($"{Constants.ReloadedProtocol}:", StringComparison.InvariantCultureIgnoreCase))
114125
downloadUrl = downloadUrl.Substring(Constants.ReloadedProtocol.Length + 1);
115126

@@ -119,6 +130,55 @@ private static void DownloadModAndExit(string downloadUrl)
119130

120131
Actions.ShowFetchPackageDialog(viewModel);
121132
Update.ResolveMissingPackages();
133+
134+
modConfig = ModConfig.GetAllMods(modConfigDir);
135+
var itemsById = modConfig.ToDictionary(x => x.Config.ModId, x => x, StringComparer.OrdinalIgnoreCase);
136+
var items = new ObservableCollection<PathTuple<ModConfig>>(modConfig);
137+
foreach (var item in itemsById.ToArray())
138+
{
139+
if (!oldItemsById.ContainsKey(item.Key))
140+
{
141+
if (item.Value.Config.IsUniversalMod || item.Value.Config.SupportedAppId.Length > 0)
142+
{
143+
var match = IoC.Get<ApplicationConfigService>().Items.FirstOrDefault(app => item.Value.Config.SupportedAppId.Contains(app.Config.AppId));
144+
if (match == null)
145+
{
146+
bool loadAppPage = Actions.DisplayMessagebox(
147+
Resources.NoCompatibleAppsInConfigTitle.Get(),
148+
$"{Resources.NoCompatibleAppsInConfigDescription.Get()}\n{Resources.AppSelectionQuestion.Get()}",
149+
new Actions.DisplayMessageBoxParams
150+
{
151+
Type = Actions.MessageBoxType.OkCancel,
152+
StartupLocation = Actions.WindowStartupLocation.CenterScreen
153+
});
154+
if (loadAppPage)
155+
{
156+
var viewmodel = new EditModDialogViewModel(item.Value, allApps, items);
157+
viewmodel.Page = EditModPage.Special;
158+
var createModDialog = Actions.EditModDialog(viewmodel, null);
159+
}
160+
}
161+
}
162+
else
163+
{
164+
bool loadAppPage = Actions.DisplayMessagebox(
165+
Resources.NoAppsInConfigTitle.Get(),
166+
$"{Resources.NoAppsInConfigDescription.Get()}\n{Resources.AppSelectionQuestion.Get()}",
167+
new Actions.DisplayMessageBoxParams
168+
{
169+
Type = Actions.MessageBoxType.OkCancel
170+
});
171+
if (loadAppPage)
172+
{
173+
var viewmodel = new EditModDialogViewModel(item.Value, allApps, items);
174+
viewmodel.Page = EditModPage.Special;
175+
var createModDialog = Actions.EditModDialog(viewmodel, null);
176+
}
177+
}
178+
}
179+
180+
}
181+
122182
Actions.DisplayMessagebox(Resources.PackageDownloaderDownloadCompleteTitle.Get(), Resources.PackageDownloaderDownloadCompleteDescription.Get(), new Actions.DisplayMessageBoxParams()
123183
{
124184
Type = Actions.MessageBoxType.Ok,

source/Reloaded.Mod.Launcher/MainWindow.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ private async void InstallMod_Drop(object sender, DragEventArgs e)
149149
});
150150
if (loadAppPage)
151151
{
152-
var createModDialog = new EditModDialog(new EditModDialogViewModel(item.Value, Lib.IoC.Get<ApplicationConfigService>(), modConfigService));
152+
var createModDialog = new EditModDialog(new EditModDialogViewModel(item.Value, Lib.IoC.Get<ApplicationConfigService>().Items, modConfigService.Items));
153153
createModDialog.Owner = System.Windows.Window.GetWindow(this);
154154
createModDialog.RealViewModel.Page = EditModPage.Special;
155155
createModDialog.ShowDialog();
@@ -167,7 +167,7 @@ private async void InstallMod_Drop(object sender, DragEventArgs e)
167167
});
168168
if (loadAppPage)
169169
{
170-
var createModDialog = new EditModDialog(new EditModDialogViewModel(item.Value, Lib.IoC.Get<ApplicationConfigService>(), modConfigService));
170+
var createModDialog = new EditModDialog(new EditModDialogViewModel(item.Value, Lib.IoC.Get<ApplicationConfigService>().Items, modConfigService.Items));
171171
createModDialog.Owner = System.Windows.Window.GetWindow(this);
172172
createModDialog.RealViewModel.Page = EditModPage.Special;
173173
createModDialog.ShowDialog();

source/Reloaded.Mod.Launcher/Pages/BaseSubpages/Dialogs/CreateModDialog.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public async Task Save()
2626
var mod = await ActionWrappers.TryGetValueAsync(() => modConfigService.ItemsById[createdMod.Config.ModId], 5000, 32);
2727
if (mod != null)
2828
{
29-
var createModDialog = new EditModDialog(new EditModDialogViewModel(mod, Lib.IoC.Get<ApplicationConfigService>(), modConfigService));
29+
var createModDialog = new EditModDialog(new EditModDialogViewModel(mod, Lib.IoC.Get<ApplicationConfigService>().Items, modConfigService.Items));
3030
createModDialog.Owner = Window.GetWindow(this);
3131
createModDialog.ShowDialog();
3232
}

0 commit comments

Comments
 (0)