示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        private void RemoveAddons(WowClientType clientType)
        {
            var addons = GetAllStoredAddons(clientType);

            _addonRepository.DeleteItems(addons);
        }