public void UpdateCustomRepoServerInfo(IContentManager modList, SixRepoServer repoServer, string url, SixRepo repo) { if (modList == null) { throw new ArgumentNullException(nameof(modList)); } if (repoServer == null) { throw new ArgumentNullException(nameof(repoServer)); } if (url == null) { throw new ArgumentNullException(nameof(url)); } if (repo == null) { throw new ArgumentNullException(nameof(repo)); } UpdateSharedRepoInfo(url, repo); var rMods = repoServer.RequiredMods; var optionalMods = repoServer.AllowedMods.Where(x => !SixRepoServer.SYS.Contains(x)) .DistinctBy(x => x.ToLower()) .ToList(); var requiredMods = rMods.Where(x => !SixRepoServer.SYS.Contains(x)).DistinctBy(x => x.ToLower()).ToArray(); Name = GetNameFromServerOrRepo(repoServer, repo); Mods = requiredMods.ToList(); SkipServerMods = rMods.None(SixRepoServer.SYS.Contains); RequiredMods = requiredMods.Where(x => !optionalMods.Contains(x, StringComparer.CurrentCultureIgnoreCase)).ToList(); OptionalMods = optionalMods; DisabledItems.AddWhenMissing(optionalMods.Where(x => !requiredMods.Contains(x, StringComparer.CurrentCultureIgnoreCase) && !AdditionalMods.Contains(x, StringComparer.CurrentCultureIgnoreCase)), StringComparison.CurrentCultureIgnoreCase); AdditionalMods.AddWhenMissing(optionalMods, StringComparison.CurrentCultureIgnoreCase); Image = String.IsNullOrWhiteSpace(repoServer.Image) ? repo.Config.Image : repoServer.Image; ImageLarge = String.IsNullOrWhiteSpace(repoServer.ImageLarge) ? repo.Config.ImageLarge : repoServer.ImageLarge; CustomRepoUuid = repoServer.Uuid; CustomRepoApps = repoServer.Apps.Where(x => repo.Config.Apps.ContainsKey(x)) .Select(x => repo.Config.Apps[x]).ToArray(); IsOpen = repoServer.IsOpen; ForceModUpdate = repoServer.ForceModUpdate; HandleModsetMods(modList); UpdateState(); }
static string GetNameFromServerOrRepo(SixRepoServer repoServer, SixRepo repo) => String.IsNullOrWhiteSpace(repoServer.Name) ? GetNameFromRepo(repo) : repoServer.Name;