private async Task <List <Addon> > ScanAddons( WowClientType clientType, Action <Exception> onScanError) { var addonFolders = await _warcraftService.ListAddons(clientType); foreach (var provider in _providers) { try { await provider.Scan( clientType, _wowUpService.GetClientAddonChannelType(clientType), addonFolders.Where(af => af.MatchingAddon == null && af.Toc != null)); } catch (Exception ex) { _analyticsService.Track(ex, $"Addon scan failed {provider.Name}"); onScanError?.Invoke(new Exception($"Failed to scan from {provider.Name}")); } } Log.Debug($"Scanned {addonFolders.Count()} folders"); var matchedAddonFolders = addonFolders.Where(af => af.MatchingAddon != null); var matchedGroups = matchedAddonFolders.GroupBy(af => $"{af.MatchingAddon.ProviderName}{af.MatchingAddon.ExternalId}"); return(matchedGroups .Select(g => g.First().MatchingAddon) .ToList()); }
private async Task <List <Addon> > ScanAddons(WowClientType clientType) { var addonFolders = await _warcraftService.ListAddons(clientType); foreach (var provider in _providers) { try { await provider.Scan( clientType, _wowUpService.GetDefaultAddonChannel(), addonFolders.Where(af => af.MatchingAddon == null && af.Toc != null)); } catch (Exception ex) { _analyticsService.Track(ex, $"Addon scan failed {provider.Name}"); } } var matchedAddonFolders = addonFolders.Where(af => af.MatchingAddon != null); var matchedGroups = matchedAddonFolders.GroupBy(af => $"{af.MatchingAddon.ProviderName}{af.MatchingAddon.ExternalId}"); return(matchedGroups .Select(g => g.First().MatchingAddon) .ToList()); }
private async Task <List <Addon> > GetLocalAddons(WowClientType clientType) { var addonFolders = await _warcraftService.ListAddons(clientType); return(await MapAll(addonFolders, clientType)); }