private static void LoadCache() { CacheData cacheData = new CacheData(); CacheNews newsData = new CacheNews(); try { var launchDataString = DependencyService.Get<IStoreCache>().LoadCache(CacheType.LaunchData); cacheData = launchDataString.ConvertToObject<CacheData>(); } catch (Exception) { cacheData.NextLaunch = new LaunchData {CacheTimeOut = DateTime.Now}; cacheData.CacheRockets = new List<CacheRocket>(); cacheData.LaunchRangeList = new LaunchRangeList { CacheTimeOut = DateTime.Now, LaunchPairs = new List<LaunchData>() }; cacheData.PeopleInSpace = new CachePeople() { Astronouts = new List<Person>(), CacheTimeOut = DateTime.Now }; } try { var newsDataString = DependencyService.Get<IStoreCache>().LoadCache(CacheType.NewsData); newsData = newsDataString.ConvertToObject<CacheNews>(); } catch (Exception) { newsData = new CacheNews { NewsFeeds = new List<NewsFeed>(), CacheTimeOut = DateTime.Now }; } CacheManager.UpdateCache(cacheData, newsData); }
public static void UpdateCache(CacheData cacheData, CacheNews newsData) { NextLaunch = cacheData?.NextLaunch; CachedRockets = cacheData?.CacheRockets; CachedLaunches = cacheData?.LaunchRangeList; People = cacheData?.PeopleInSpace; CachedCacheNewsFeed = newsData; }
public static void ClearCache() { NextLaunch = new LaunchData(); CachedRockets = new List<CacheRocket>(); CachedLaunches = new LaunchRangeList { CacheTimeOut = DateTime.Now.AddDays(-1), LaunchPairs = new List<LaunchData>() }; CachedCacheNewsFeed = new CacheNews { NewsFeeds = new List<NewsFeed>(), CacheTimeOut = DateTime.Now }; TrackedAgencies = new List<TrackedAgency>(); }
public static async Task<List<NewsFeed>> TryGetNewsFeed() { if (CachedCacheNewsFeed?.NewsFeeds?.Count != 0 && CachedCacheNewsFeed?.CacheTimeOut > DateTime.Now) return CachedCacheNewsFeed.NewsFeeds; var newsFeed = new List<NewsFeed>(); if (App.Settings.FollowSpaceNews) { var spaceNews = await ApiManager.GetNewsFromSpaceNews(); newsFeed = newsFeed.Concat(spaceNews).Distinct().DistinctBy(x => x.Title).ToList(); } if (App.Settings.FollowSpaceFlightNow) { var spaceFlightNow = await ApiManager.GetNewsFromSpaceFlightNow(); newsFeed = newsFeed.Concat(spaceFlightNow).DistinctBy(x => x.Title).ToList(); } if (App.Settings.FollowNasaSpaceFlight) { var nasaSpaceFlight = await ApiManager.GetNewsFromNasaSpaceFlight(); newsFeed = newsFeed.Concat(nasaSpaceFlight).DistinctBy(x => x.Title).ToList(); } if (CachedCacheNewsFeed?.NewsFeeds == null || CachedCacheNewsFeed?.NewsFeeds.Count == 0) CachedCacheNewsFeed = new CacheNews { NewsFeeds = newsFeed.OrderByDescending(x => x.Published).Take(20).ToList(), CacheTimeOut = DateTime.Now.AddHours(4) }; return CachedCacheNewsFeed.NewsFeeds; }