diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs b/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs index 89a5e7f88..d1c6fd72f 100644 --- a/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs +++ b/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs @@ -33,7 +33,6 @@ public static LoadoutFile.New ToLoadoutFile( LoadoutItem = new LoadoutItem.New(tx, id) { LoadoutId = loadoutId, - IsIsDisabledMarker = false, Name = input.Item.Value.FileName, ParentId = parent, }, diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/DownloadedFile.cs b/src/Abstractions/NexusMods.Abstractions.Library.Models/DownloadedFile.cs new file mode 100644 index 000000000..ee8b4cebc --- /dev/null +++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/DownloadedFile.cs @@ -0,0 +1,27 @@ +using JetBrains.Annotations; +using NexusMods.Abstractions.MnemonicDB.Attributes; +using NexusMods.MnemonicDB.Abstractions.Models; + +namespace NexusMods.Abstractions.Library.Models; + +/// +/// Represents a downloaded file in the file. +/// +[PublicAPI] +[Include] +public partial class DownloadedFile : IModelDefinition +{ + private const string Namespace = "NexusMods.Library.DownloadedFile"; + + /// + /// URI to the download page, not the direct download link. + /// + /// + /// Many direct download links aren't permalinks. Those shouldn't be stored. + /// Instead, this is the link to the page from which the download was initiated. + /// + /// + /// https://www.nexusmods.com/skyrim/mods/3863 + /// + public static readonly UriAttribute DownloadPageUri = new(Namespace, nameof(DownloadPageUri)); +} diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs b/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs index aaa29ee01..566e806dd 100644 --- a/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs +++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs @@ -16,7 +16,7 @@ public partial class LibraryArchive : IModelDefinition /// /// Marker. /// - public static readonly MarkerAttribute IsLibraryArchiveMarker = new(Namespace, nameof(IsLibraryArchiveMarker)); + public static readonly MarkerAttribute Archive = new(Namespace, nameof(Archive)); /// /// Back-reference to all files inside the archive. diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj b/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj index dc631b8d6..1ca3a6f48 100644 --- a/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj +++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj @@ -22,5 +22,8 @@ LibraryArchive.cs + + LibraryItem.cs + diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs b/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs index c0e2a7e83..6a063beca 100644 --- a/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs +++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs @@ -17,6 +17,7 @@ public static IServiceCollection AddLibraryModels(this IServiceCollection servic return serviceCollection .AddLibraryItemModel() .AddLibraryFileModel() + .AddDownloadedFileModel() .AddLocalFileModel() .AddLibraryArchiveModel() .AddLibraryArchiveFileEntryModel(); diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs index 6980a8aed..99aecfea9 100644 --- a/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs +++ b/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs @@ -136,7 +136,7 @@ protected LoadoutOverridesGroupId GetOrCreateOverridesGroup(ITransaction tx, Loa OverridesForId = loadout, LoadoutItemGroup = new LoadoutItemGroup.New(tx, id) { - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, LoadoutItem = new LoadoutItem.New(tx, id) { Name = "Overrides", @@ -225,7 +225,7 @@ public SyncTree BuildSyncTree(DiskStateTree currentState, DiskStateTree previous /// private static bool FileIsEnabled(LoadoutItem.ReadOnly arg) { - return !arg.GetThisAndParents().Any(f => f.Contains(LoadoutItem.IsDisabledMarker)); + return !arg.GetThisAndParents().Any(f => f.Contains(LoadoutItem.Disabled)); } /// @@ -381,7 +381,7 @@ private void WarnOfUnableToExtract(SyncActionGroupings groupings) { var delete = new DeletedFile.New(tx, out var id) { - IsIsDeletedFileMarker = true, + Reason = "Reified delete", LoadoutItemWithTargetPath = new LoadoutItemWithTargetPath.New(tx, id) { TargetPath = item.Path, @@ -800,7 +800,7 @@ private LoadoutGameFilesGroup.New CreateLoadoutGameFilesGroup(LoadoutId loadout, GameMetadataId = installation.GameMetadataId, LoadoutItemGroup = new LoadoutItemGroup.New(tx, id) { - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, LoadoutItem = new LoadoutItem.New(tx, id) { Name = "Game Files", diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs index 992558bb7..b9894fccf 100644 --- a/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs +++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs @@ -14,7 +14,7 @@ public partial class DeletedFile : IModelDefinition private const string Namespace = "NexusMods.Loadouts.DeletedFile"; /// - /// Marker. + /// Reason. /// - public static readonly MarkerAttribute IsDeletedFileMarker = new(Namespace, nameof(IsDeletedFileMarker)); + public static readonly StringAttribute Reason = new(Namespace, nameof(Reason)); } diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs index 80aade46b..738f96440 100644 --- a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs +++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs @@ -14,11 +14,9 @@ public static class LoadoutExtensions { public static IEnumerable GetEnabledGroups(this Loadout.ReadOnly loadout) { - return loadout.Items.OfTypeLoadoutItemGroup().Where(group => !group.AsLoadoutItem().IsIsDisabledMarker); + return loadout.Items.OfTypeLoadoutItemGroup().Where(group => !group.AsLoadoutItem().IsDisabled); } - - private static IEnumerable GetEnabledMods(this Loadout.ReadOnly loadout, bool onlyEnabledMods) { var enumerable = onlyEnabledMods diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs index fb19bd840..85685eda7 100644 --- a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs +++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs @@ -45,6 +45,6 @@ public static class LoadoutItemExtensions /// public static bool IsEnabled(this LoadoutItem.ReadOnly item) { - return !item.GetThisAndParents().Any(i => i.IsIsDisabledMarker); + return !item.GetThisAndParents().Any(i => i.IsDisabled); } } diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs index 72d5bbfea..4fe69b3ec 100644 --- a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs +++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs @@ -26,7 +26,7 @@ public partial class LoadoutItem : IModelDefinition /// /// The exact meaning of a "disabled" loadout item is up to the implementations. /// - public static readonly MarkerAttribute IsDisabledMarker = new(Namespace, nameof(IsDisabledMarker)); + public static readonly MarkerAttribute Disabled = new(Namespace, nameof(Disabled)); /// /// Loadout that contains the item. diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs index 2d3e24f7f..49539fea1 100644 --- a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs +++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs @@ -16,7 +16,7 @@ public partial class LoadoutItemGroup : IModelDefinition /// /// Marker. /// - public static readonly MarkerAttribute IsLoadoutItemGroupMarker = new(Namespace, nameof(IsLoadoutItemGroupMarker)); + public static readonly MarkerAttribute Group = new(Namespace, nameof(Group)); /// /// Children of the group. diff --git a/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs b/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs index cd50405b3..b34fdb0a1 100644 --- a/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs +++ b/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs @@ -6,10 +6,10 @@ namespace NexusMods.Abstractions.NexusModsLibrary; /// -/// Represented a originating from Nexus Mods. +/// Represented a originating from Nexus Mods. /// [PublicAPI] -[Include] +[Include] public partial class NexusModsLibraryFile : IModelDefinition { private const string Namespace = "NexusMods.Library.NexusModsLibraryFile"; diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs index 4b612f96d..82b2b5e4d 100644 --- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs +++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs @@ -119,7 +119,6 @@ public override async ValueTask ExecuteAsync( var loadoutItem = new LoadoutItem.New(tx) { LoadoutId = loadout.Id, - IsIsDisabledMarker = false, Name = infoJson.Name, ParentId = loadoutGroup.Id, }; @@ -127,7 +126,7 @@ public override async ValueTask ExecuteAsync( var groupItem = new LoadoutItemGroup.New(tx, loadoutItem.Id) { LoadoutItem = loadoutItem, - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, }; diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs index 3e36ccb47..bb8cba988 100644 --- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs +++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs @@ -121,7 +121,6 @@ public override ValueTask ExecuteAsync( Name = relativePath.Name, LoadoutId = loadout.Id, ParentId = loadoutGroup.Id, - IsIsDisabledMarker = false, }, }, Hash = file.Item.LibraryFile.Value.Hash, diff --git a/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs b/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs index 74b220ddf..b494cf887 100644 --- a/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs +++ b/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs @@ -77,7 +77,7 @@ private static IEnumerable DiagnoseDisabledDependencies( .Where(kv => { var (loadoutItemId, _) = kv; - return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker; + return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsDisabled; }) .Select(kv => { @@ -87,7 +87,7 @@ private static IEnumerable DiagnoseDisabledDependencies( var disabledDependencies = requiredDependencies .Select(uniqueIdToLoadoutItemId.GetValueOrDefault) .Where(id => id != default(SMAPIModLoadoutItemId)) - .Where(id => !SMAPIModLoadoutItem.Load(loadout.Db, id).AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker) + .Where(id => !SMAPIModLoadoutItem.Load(loadout.Db, id).AsLoadoutItemGroup().AsLoadoutItem().IsDisabled) .ToArray(); return (Id: loadoutItemId, DisabledDependencies: disabledDependencies); @@ -118,7 +118,7 @@ private async Task> DiagnoseMissingDependencies( .Where(kv => { var (loadoutItemId, _) = kv; - return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker; + return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsDisabled; }) .Select(kv => { diff --git a/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs b/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs index 4c6c8e640..318347949 100644 --- a/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs +++ b/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs @@ -21,7 +21,7 @@ public static bool TryGetSMAPI(Loadout.ReadOnly loadout, out SMAPILoadoutItem.Re var foundSMAPI = loadout.Items .OfTypeLoadoutItemGroup() .OfTypeSMAPILoadoutItem() - .TryGetFirst(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker, out smapi); + .TryGetFirst(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsDisabled, out smapi); return foundSMAPI; } @@ -36,7 +36,7 @@ public static bool TryGetSMAPI(Loadout.ReadOnly loadout, out SMAPILoadoutItem.Re var asyncEnumerable = loadout.Items .OfTypeLoadoutItemGroup() .OfTypeSMAPIModLoadoutItem() - .Where(x => !onlyEnabledMods || !x.AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker) + .Where(x => !onlyEnabledMods || !x.AsLoadoutItemGroup().AsLoadoutItem().IsDisabled) .ToAsyncEnumerable() .ConfigureAwait(continueOnCapturedContext: false) .WithCancellation(cancellationToken); diff --git a/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs b/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs index 3a28f6c9a..02500db14 100644 --- a/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs +++ b/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs @@ -33,7 +33,7 @@ public async IAsyncEnumerable Diagnose( yield break; } - var isSMAPIEnabled = smapiLoadoutItems.Any(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker); + var isSMAPIEnabled = smapiLoadoutItems.Any(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsDisabled); if (isSMAPIEnabled) yield break; yield return Diagnostics.CreateSMAPIRequiredButDisabled( diff --git a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs index a2c6dacc7..79ba9f362 100644 --- a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs +++ b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs @@ -349,7 +349,7 @@ public override async ValueTask ExecuteAsync( { _ = new SMAPIModDatabaseLoadoutFile.New(transaction, entityId) { - IsIsModDatabaseFileMarker = true, + IsModDatabaseFile = true, LoadoutFile = loadoutFile, }; diff --git a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs index 6d2b7a44f..e9d28311a 100644 --- a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs +++ b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs @@ -118,7 +118,7 @@ public override async ValueTask ExecuteAsync( var smapiModGroup = new LoadoutItemGroup.New(transaction, out var smapiModEntityId) { - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, LoadoutItem = new LoadoutItem.New(transaction, smapiModEntityId) { Name = manifest.Name, @@ -153,7 +153,7 @@ public override async ValueTask ExecuteAsync( manifestLoadoutItemId = entityId; _ = new SMAPIManifestLoadoutFile.New(transaction, entityId) { - IsIsManifestMarker = true, + IsManifestFile = true, LoadoutFile = loadoutFile, }; } diff --git a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs index 12324088e..4b32fa307 100644 --- a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs +++ b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs @@ -9,5 +9,5 @@ public partial class SMAPIManifestLoadoutFile : IModelDefinition { private const string Namespace = "NexusMods.StardewValley.SMAPIManifestLoadoutFile"; - public static readonly MarkerAttribute IsManifestMarker = new(Namespace, nameof(IsManifestMarker)); + public static readonly MarkerAttribute ManifestFile = new(Namespace, nameof(ManifestFile)); } diff --git a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs index 145495f79..b7f3fc672 100644 --- a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs +++ b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs @@ -9,5 +9,5 @@ public partial class SMAPIModDatabaseLoadoutFile : IModelDefinition { private const string Namespace = "NexusMods.StardewValley.SMAPIModDatabaseLoadoutFile"; - public static readonly MarkerAttribute IsModDatabaseFileMarker = new(Namespace, nameof(IsModDatabaseFileMarker)); + public static readonly MarkerAttribute ModDatabaseFile = new(Namespace, nameof(ModDatabaseFile)); } diff --git a/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs b/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs index d09ca032c..aa7361dcb 100644 --- a/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs +++ b/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs @@ -79,7 +79,7 @@ private static bool TryGetSMAPIMod(RelativePath modDirectoryName, Loadout.ReadOn var manifestFilePath = new GamePath(LocationId.Game, Constants.ModsFolder.Join(modDirectoryName).Join(Constants.ManifestFile)); if (!LoadoutItemWithTargetPath.FindByTargetPath(db, manifestFilePath) - .TryGetFirst(x => x.AsLoadoutItem().LoadoutId == loadout && x.Contains(SMAPIManifestLoadoutFile.IsManifestMarker), out var file)) + .TryGetFirst(x => x.AsLoadoutItem().LoadoutId == loadout && x.Contains(SMAPIManifestLoadoutFile.ManifestFile), out var file)) { mod = default(SMAPIModLoadoutItem.ReadOnly); return false; diff --git a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs index 16f1dc8fa..a6cb20168 100644 --- a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs +++ b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs @@ -18,6 +18,7 @@ namespace NexusMods.Networking.Downloaders.Tasks.State; /// might not need it since it uses another strategy to start a mod download. /// // ReSharper disable once PartialTypeWithSinglePart +[Obsolete("To be replaced by jobs")] public partial class DownloaderState : IModelDefinition { private const string Namespace = "NexusMods.Networking.Downloaders.Tasks.DownloaderState"; diff --git a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs index 70fb5e653..96d894913 100644 --- a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs +++ b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs @@ -8,6 +8,7 @@ namespace NexusMods.Networking.Downloaders.Tasks.State; /// // ReSharper disable once PartialTypeWithSinglePart [Include] +[Obsolete("To be replaced by jobs")] public partial class HttpDownloadState : IModelDefinition { private const string Namespace = "NexusMods.Networking.Downloaders.Tasks.State.HttpDownloadState"; diff --git a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs index 8f174d4e0..484688802 100644 --- a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs +++ b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs @@ -5,6 +5,7 @@ namespace NexusMods.Networking.Downloaders.Tasks.State; +[Obsolete("To be replaced by jobs")] [Include] public partial class NxmDownloadState : IModelDefinition { diff --git a/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs b/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs index 8717da926..088854d36 100644 --- a/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs +++ b/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs @@ -20,8 +20,7 @@ public static bool ShouldShow(LibraryItem.ReadOnly libraryItem) if (!libraryItem.TryGetAsLibraryFile(out var file)) return false; - // TODO: also show downloads - return file.IsLocalFile(); + return file.IsLocalFile() || file.IsDownloadedFile(); } /// diff --git a/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs b/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs index 4c1e3bc42..7ac26823e 100644 --- a/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs +++ b/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs @@ -30,7 +30,7 @@ public ModEnabledViewModel(IConnection conn) this.WhenAnyValue(vm => vm.Row) .Select(groupId => LoadoutItemGroup.Observe(_connection, groupId)) .Switch() - .Select(group => !group.AsLoadoutItem().IsIsDisabledMarker) + .Select(group => !group.AsLoadoutItem().IsDisabled) .BindToVM(this, vm => vm.Enabled) .DisposeWith(d); }); @@ -42,13 +42,13 @@ public ModEnabledViewModel(IConnection conn) tx.Add(Row.Value, static (txInner, db, id) => { var item = LoadoutItem.Load(db, id); - if (item.IsIsDisabledMarker) + if (item.IsDisabled) { - txInner.Retract(item.Id, LoadoutItem.IsDisabledMarker, Null.Instance); + txInner.Retract(item.Id, LoadoutItem.Disabled, Null.Instance); } else { - txInner.Add(item.Id, LoadoutItem.IsDisabledMarker, Null.Instance); + txInner.Add(item.Id, LoadoutItem.Disabled, Null.Instance); } }); @@ -62,6 +62,6 @@ public int Compare(LoadoutItemGroupId a, LoadoutItemGroupId b) var db = _connection.Db; var aEnt = LoadoutItemGroup.Load(db, a); var bEnt = LoadoutItemGroup.Load(db, b); - return aEnt.AsLoadoutItem().IsIsDisabledMarker.CompareTo(bEnt.AsLoadoutItem().IsIsDisabledMarker); + return aEnt.AsLoadoutItem().IsDisabled.CompareTo(bEnt.AsLoadoutItem().IsDisabled); } } diff --git a/src/NexusMods.Library/AddLibraryFileJobWorker.cs b/src/NexusMods.Library/AddLibraryFileJobWorker.cs index 287487168..112c26a5d 100644 --- a/src/NexusMods.Library/AddLibraryFileJobWorker.cs +++ b/src/NexusMods.Library/AddLibraryFileJobWorker.cs @@ -112,7 +112,7 @@ protected override async Task ExecuteAsync(AddLibraryFileJob job, Can job.LibraryArchive = new LibraryArchive.New(job.Transaction, job.EntityId.Value) { LibraryFile = job.LibraryFile.Value, - IsIsLibraryArchiveMarker = true, + IsArchive = true, }; } diff --git a/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs b/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs index a1a6a2781..5a808af16 100644 --- a/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs +++ b/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs @@ -73,7 +73,7 @@ protected override async Task ExecuteAsync(InstallLoadoutItemJob job, var transaction = job.Connection.BeginTransaction(); var loadoutGroup = new LoadoutItemGroup.New(transaction, out var groupId) { - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, LoadoutItem = new LoadoutItem.New(transaction, groupId) { Name = job.LibraryItem.Name, diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs b/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs index 9f7fc2302..742799ce8 100644 --- a/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs @@ -108,7 +108,7 @@ public async Task PathBasedDiagnosticEmittersLookAtTheCorrectPaths(Type diagnost { var dependencyMod = LoadoutItemGroup.Load(Connection.Db, loadout.Items.First(m => m.Name == "DependencyMod").Id); using var tx = Connection.BeginTransaction(); - tx.Add(dependencyMod, LoadoutItem.IsDisabledMarker, Null.Instance); + tx.Add(dependencyMod, LoadoutItem.Disabled, Null.Instance); await tx.Commit(); } diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt index 7b544b726..926b1c7cf 100644 --- a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt @@ -1,12 +1,12 @@ + | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000 + | 0200000000000001 | Name | one_mod.7z | 0200000000000000 + | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000 -+ | 0200000000000001 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000001 | Group | Null | 0200000000000000 + | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000 + | 0200000000000003 | Name | Driver_Shotgun | 0200000000000000 + | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000003 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000003 | Group | Null | 0200000000000000 + | 0200000000000004 | Name | Driver_Shotgun | 0200000000000000 + | 0200000000000004 | Version | 1.0.0 | 0200000000000000 + | 0200000000000004 | Name | info.json | 0200000000000000 diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt index d28b1771e..3062ff48b 100644 --- a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt @@ -1,12 +1,12 @@ + | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000 + | 0200000000000001 | Name | several_red_mods.7z | 0200000000000000 + | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000 -+ | 0200000000000001 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000001 | Group | Null | 0200000000000000 + | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000 + | 0200000000000003 | Name | Maestros of Synth - Body Heat Radio | 0200000000000000 + | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000003 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000003 | Group | Null | 0200000000000000 + | 0200000000000005 | Name | 0eaacf6f-394e-45e7-a958-9e10701b1711 | 0200000000000000 + | 0200000000000005 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000005 | Parent | 0200000000000003 | 0200000000000000 @@ -97,7 +97,7 @@ + | 0200000000000012 | Name | Maestros of Synth - Morro Rock Radio | 0200000000000000 + | 0200000000000012 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000012 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000012 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000012 | Group | Null | 0200000000000000 + | 0200000000000014 | Name | 04941c4c-7214-45de-9681-4b18c91cc28b | 0200000000000000 + | 0200000000000014 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000014 | Parent | 0200000000000012 | 0200000000000000 @@ -206,7 +206,7 @@ + | 0200000000000024 | Name | Maestros of Synth - Night FN | 0200000000000000 + | 0200000000000024 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000024 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000024 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000024 | Group | Null | 0200000000000000 + | 0200000000000026 | Name | 1838a296-fb33-4eca-9ffa-7cf9dbecbdad | 0200000000000000 + | 0200000000000026 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000026 | Parent | 0200000000000024 | 0200000000000000 @@ -303,7 +303,7 @@ + | 0200000000000034 | Name | Maestros of Synth - Pacific Dreams | 0200000000000000 + | 0200000000000034 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000034 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000034 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000034 | Group | Null | 0200000000000000 + | 0200000000000036 | Name | 1779f39f-b829-4628-95b9-60b33e98d922 | 0200000000000000 + | 0200000000000036 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000036 | Parent | 0200000000000034 | 0200000000000000 @@ -418,7 +418,7 @@ + | 0200000000000047 | Name | Maestros of Synth - Principales | 0200000000000000 + | 0200000000000047 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000047 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000047 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000047 | Group | Null | 0200000000000000 + | 0200000000000049 | Name | 485542b0-6f35-4ab5-bdd8-074292518e08 | 0200000000000000 + | 0200000000000049 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000049 | Parent | 0200000000000047 | 0200000000000000 @@ -497,7 +497,7 @@ + | 0200000000000054 | Name | Maestros of Synth - Radio Pebkac | 0200000000000000 + | 0200000000000054 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000054 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000054 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000054 | Group | Null | 0200000000000000 + | 0200000000000056 | Name | 12641980-0bb6-4bfc-98eb-081d305f8086 | 0200000000000000 + | 0200000000000056 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000056 | Parent | 0200000000000054 | 0200000000000000 @@ -606,7 +606,7 @@ + | 0200000000000066 | Name | Maestros of Synth - Radio Vexelstorm | 0200000000000000 + | 0200000000000066 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000066 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000066 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000066 | Group | Null | 0200000000000000 + | 0200000000000068 | Name | 0022aba5-fe2c-411e-a9b3-5133bac9da88 | 0200000000000000 + | 0200000000000068 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000068 | Parent | 0200000000000066 | 0200000000000000 @@ -709,7 +709,7 @@ + | 0200000000000077 | Name | Maestros of Synth - Ritual FM | 0200000000000000 + | 0200000000000077 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000077 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000077 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000077 | Group | Null | 0200000000000000 + | 0200000000000079 | Name | 3c90ddc2-3b63-4d4d-bf95-8eefceb437d4 | 0200000000000000 + | 0200000000000079 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000079 | Parent | 0200000000000077 | 0200000000000000 @@ -806,7 +806,7 @@ + | 0200000000000087 | Name | Maestros of Synth - Royal Blue Radio | 0200000000000000 + | 0200000000000087 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000087 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000087 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000087 | Group | Null | 0200000000000000 + | 0200000000000089 | Name | 2b6e73bf-f34a-46a0-8f87-3e32858f1af1 | 0200000000000000 + | 0200000000000089 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000089 | Parent | 0200000000000087 | 0200000000000000 @@ -873,7 +873,7 @@ + | 0200000000000092 | Name | Maestros of Synth - SAMIZDAT RADIO | 0200000000000000 + | 0200000000000092 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000092 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000092 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000092 | Group | Null | 0200000000000000 + | 0200000000000094 | Name | 0969fbd3-d49d-4164-a761-a3834d09ec3f | 0200000000000000 + | 0200000000000094 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000094 | Parent | 0200000000000092 | 0200000000000000 @@ -916,7 +916,7 @@ + | 0200000000000099 | Name | Maestros of Synth - The Dirge | 0200000000000000 + | 0200000000000099 | Loadout | 0200000000000002 | 0200000000000000 + | 0200000000000099 | Parent | 0200000000000001 | 0200000000000000 -+ | 0200000000000099 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000099 | Group | Null | 0200000000000000 + | 020000000000009B | Name | 0999a784-7fac-425b-b886-eb0c0d523579 | 0200000000000000 + | 020000000000009B | Loadout | 0200000000000002 | 0200000000000000 + | 020000000000009B | Parent | 0200000000000099 | 0200000000000000 diff --git a/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs b/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs index 03569e3c8..d424250b6 100644 --- a/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs +++ b/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs @@ -30,7 +30,7 @@ public async Task FilesInModFoldersAreMovedIntoMods() { LoadoutItemGroup = new LoadoutItemGroup.New(tx, modId) { - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, LoadoutItem = new LoadoutItem.New(tx, modId) { LoadoutId = loadout, @@ -39,7 +39,7 @@ public async Task FilesInModFoldersAreMovedIntoMods() }, ManifestId = new SMAPIManifestLoadoutFile.New(tx, out var fileId) { - IsIsManifestMarker = true, + IsManifestFile = true, LoadoutFile = new LoadoutFile.New(tx, fileId) { Hash = manifestHash, diff --git a/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs b/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs index cf5600282..4fba429b9 100644 --- a/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs +++ b/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs @@ -100,7 +100,7 @@ protected LoadoutItemGroupId AddEmptyGroup(ITransaction tx, LoadoutId loadoutId, { var mod = new LoadoutItemGroup.New(tx, out var id) { - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, LoadoutItem = new LoadoutItem.New(tx, id) { LoadoutId = loadoutId, diff --git a/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs b/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs index c2e9c787a..f364a5c37 100644 --- a/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs +++ b/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs @@ -93,7 +93,7 @@ protected ALibraryArchiveInstallerTests(IServiceProvider serviceProvider) : base var loadoutGroup = new LoadoutItemGroup.New(tx, out var groupId) { - IsIsLoadoutItemGroupMarker = true, + IsGroup = true, LoadoutItem = new LoadoutItem.New(tx, groupId) { Name = libraryItem.Name,