private void RefreshMods(object param = null) { try { // Refresh only if last updated more than 30 seconds ago if (lastUpdated < DateTime.Now.AddSeconds(-30)) { IsLoading = true; log.Info("Loading mods from Trovesaurus API"); TrovesaurusApi.RefreshModList(); TrovesaurusMods.Clear(); foreach (TroveMod mod in TrovesaurusApi.ModList) { TrovesaurusMods.Add(new TroveModViewModel(mod)); } lastUpdated = DateTime.Now; log.Info("Loading mod list complete"); } else { log.InfoFormat("Please wait {0} to refresh the mod list again", lastUpdated.AddSeconds(30).Subtract(DateTime.Now).Humanize()); } } catch (Exception ex) { log.Error("Error refreshing mods", ex); } finally { IsLoading = false; } }
public DesignTimeGetMoreModsViewModel() : base() { foreach (TroveMod mod in JsonConvert.DeserializeObject <List <TroveMod> >(Resources.DesignTimeTroveMods)) { TrovesaurusMods.Add(new TroveModViewModel(mod)); } BuildTypesCollections(); }
protected void BuildTypesCollections() { var textInfo = CultureInfo.CurrentCulture.TextInfo; Types.Clear(); Types.Add(Strings.GetMoreModsViewModel_AllTypes); foreach (var type in from m in TrovesaurusMods group m by m.DataObject.Type into g orderby g.First().DataObject.Type select textInfo.ToTitleCase(g.First().DataObject.Type.ToLower())) { Types.Add(type); } SubTypes.Clear(); SubTypes.Add(Strings.GetMoreModsViewModel_AllSubTypes); foreach (var subtype in from m in TrovesaurusMods where !string.IsNullOrEmpty(m.DataObject.SubType) group m by m.DataObject.SubType into g orderby g.First().DataObject.SubType select textInfo.ToTitleCase(g.First().DataObject.SubType.ToLower())) { SubTypes.Add(subtype); } Formats.Clear(); Formats.Add(Strings.GetMoreModsViewModel_AllFormats); //var formats = TrovesaurusMods.SelectMany(m => m.DataObject.Downloads).GroupBy(d => d.Format); foreach (var format in from d in TrovesaurusMods.SelectMany(m => m.DataObject.Downloads) group d by d.Format into g orderby g.First().Format select g.First().Format) { Formats.Add(format); } }