private List <Addon> UpdateAddons(List <Addon> existingAddons, List <Addon> newAddons) { var removedAddons = existingAddons .Where(existingAddon => !newAddons.Any(newAddon => existingAddon.Matches(newAddon))) .ToList(); var addedAddons = newAddons .Where(newAddon => !existingAddons.Any(existingAddon => existingAddon.Matches(newAddon))) .ToList(); var currentAddons = existingAddons .Where(existingAddon => newAddons.Any(newAddon => existingAddon.Matches(newAddon))) .ToList(); existingAddons.RemoveAll(addon => removedAddons.Any(removedAddon => removedAddon.Id == addon.Id)); existingAddons.AddRange(addedAddons); foreach (var existingAddon in existingAddons) { var matchingAddon = newAddons.FirstOrDefault(newAddon => newAddon.Matches(existingAddon)); if (matchingAddon == default) { continue; } existingAddon.Name = matchingAddon.Name; existingAddon.FolderName = matchingAddon.FolderName; existingAddon.DownloadUrl = matchingAddon.DownloadUrl; existingAddon.InstalledVersion = matchingAddon.InstalledVersion; existingAddon.ExternalUrl = matchingAddon.ExternalUrl; existingAddon.LatestVersion = matchingAddon.LatestVersion; existingAddon.ThumbnailUrl = matchingAddon.ThumbnailUrl; existingAddon.GameVersion = matchingAddon.GameVersion; existingAddon.Author = matchingAddon.Author; existingAddon.InstalledVersion = matchingAddon.InstalledVersion; } _addonRepository.DeleteItems(removedAddons); _addonRepository.SaveItems(existingAddons); return(existingAddons); }
private List <Addon> UpdateAddons(List <Addon> existingAddons, List <Addon> newAddons) { // Clear the dependency table, since rebuilding it is extra complicated. _dependencyRepository.RemoveAll(); foreach (var newAddon in newAddons) { var existingAddon = existingAddons .FirstOrDefault(ea => ea.ExternalId == newAddon.ExternalId && ea.ProviderName == newAddon.ProviderName); if (existingAddon == null) { continue; } newAddon.AutoUpdateEnabled = existingAddon.AutoUpdateEnabled; newAddon.IsIgnored = existingAddon.IsIgnored; } _addonRepository.DeleteItems(existingAddons); _addonRepository.SaveItems(newAddons); return(newAddons); }
private void RemoveAddons(WowClientType clientType) { var addons = GetAllStoredAddons(clientType); _addonRepository.DeleteItems(addons); }