public async Task LoadSubreddits() { var subreddits = await _offlineService.RetrieveOrderedThings("pivotsubreddits"); PivotItems.Add(new SubredditSelectorViewModel(_baconProvider)); if (subreddits == null || subreddits.Count() == 0) { subreddits = new List <TypedThing <Subreddit> > { new TypedThing <Subreddit>(SubredditInfo.GetFrontPageThing()) } } ; foreach (var sub in subreddits) { if (sub.Data is Subreddit && ((Subreddit)sub.Data).Id != null) { var message = new SelectSubredditMessage(); message.Subreddit = new TypedThing <Subreddit>(sub); ChangeSubreddit(message, false); } } Messenger.Default.Send <SelectIndexMessage>( new SelectIndexMessage { TypeContext = typeof(MainPageViewModel), Index = 0 } ); }
protected SubredditInfo GetSubredditInfo(string subredditName) { SubredditInfo toReturn = Utility.MakeDefaultSubredditInfo(); if (_subredditInfoContext is null) { return(toReturn); } var subsQuery = from m in _subredditInfoContext.SubredditInfo select m; var results = subsQuery.Where(sub => sub.SubredditName == subredditName); if (results.Count() != 1) { SubredditInfo subredditInfo = RetrieveSubredditInfo(subredditName); if (!(subredditInfo is null)) { _subredditInfoContext.Add(subredditInfo); _subredditInfoContext.SaveChanges(); toReturn = subredditInfo; } } else { toReturn = results.ToList().Cast <SubredditInfo>().ElementAt(0); } return(toReturn); }
public PostManager(Post post, SubredditInfo subredditInfo, ETHBotDBContext context) { Post = post; SubredditInfo = subredditInfo; ETHBotDBContext = context; LoadDBRecord(); }
public void RetrieveUpdatedSubredditIcons(List <string> subredditsToCheck) { if (subredditsToCheck is null || !CreateRedditClient()) { IsUpdatingSubredditIcons = false; Utility.Print("Error Updating Subreddits"); return; } IsGettingSubredditIcons = true; foreach (string subredditName in subredditsToCheck) { SubredditInfo subInfo = RetrieveSubredditInfo(subredditName); UpdatedSubreddits.Add(subInfo); System.Threading.Thread.Sleep(700); // Sleep to avoid overloading the Reddit Api } IsGettingSubredditIcons = false; }
public void LoadSubredditInfo() { // TODO overwrite info from db -> over init items SubredditInfo = ETHBotDBContext.SubredditInfos.SingleOrDefault(i => i.SubredditName == SubredditName); if (SubredditInfo == null) { ETHBotDBContext.SubredditInfos.Add(new SubredditInfo() { SubredditDescription = Subreddit.Description, SubredditName = Subreddit.Name, IsNSFW = Subreddit.Over18 ?? false // TODO correct to assume false othwerwise? }); ETHBotDBContext.SaveChanges(); } // TODO Check if null SubredditInfo = ETHBotDBContext.SubredditInfos.SingleOrDefault(i => i.SubredditName == SubredditName); OldestPost = SubredditInfo.OldestPost; NewestPost = SubredditInfo.NewestPost; }
private SubredditInfo RetrieveSubredditInfo(string subredditName) { if (!CreateRedditClient()) { return(Utility.MakeDefaultSubredditInfo()); } try { Utility.Print("GETTING SUBREDDIT: " + subredditName); Subreddit subredditAbout = RedditClient.Subreddit(subredditName).About(); string primaryColor = !String.IsNullOrEmpty(subredditAbout.PrimaryColor) ? subredditAbout.PrimaryColor : GenerateSubredditColor(subredditName); string communityIcon = ""; string iconImg = ""; string url = Utility.DefaultSubredditIcon; bool isNsfw = false; if (!(subredditAbout.SubredditData.CommunityIcon is null)) // Reddit's current icon system { communityIcon = subredditAbout.SubredditData.CommunityIcon; if (communityIcon.Contains("&")) { communityIcon = communityIcon.Replace("&", "&"); } } if (!(subredditAbout.SubredditData.IconImg is null)) // Reddit's old icon system (used as a backup and in outlier cases such as User posts) { iconImg = subredditAbout.SubredditData.IconImg.ToString(); if (iconImg.Contains("&")) { iconImg = iconImg.Replace("&", "&"); } } if (!String.IsNullOrEmpty(iconImg) || !String.IsNullOrEmpty(communityIcon)) // Try and use new system, but if not available, use old one. { url = !String.IsNullOrEmpty(communityIcon) ? communityIcon : iconImg; } bool?isOver18 = subredditAbout.SubredditData.Over18; if (!(isOver18 is null) && (bool)isOver18) { isNsfw = true; } return(new SubredditInfo { SubredditName = subredditName, IconUrl = url, PrimaryColor = primaryColor, IsNsfw = isNsfw }); } catch (Exception) { Utility.Print("Could not get Subreddit: " + subredditName + ". Will be using backup"); } // Only to be used if the subreddit was unable to be reached SubredditInfo backup = Utility.MakeDefaultSubredditInfo(); backup.SubredditName = subredditName; backup.PrimaryColor = GenerateSubredditColor(subredditName); backup.IconUrl = Utility.DefaultSubredditIcon; backup.IsDead = true; return(backup); }