public async Task <List <Conference> > GetConferences(string token, Priority priority) { var cache = BlobCache.LocalMachine; if (priority == Priority.UserInitiated) { BlobCache.LocalMachine.InvalidateAll().Subscribe(); } var cachedConferences = cache.GetAndFetchLatest("conferences", () => GetRemoteConferencesAsync(priority), offset => { TimeSpan elapsed = DateTimeOffset.Now - offset; return(elapsed > new TimeSpan(hours: 24, minutes: 0, seconds: 0)); }); var conferences = await cachedConferences.FirstOrDefaultAsync(); var schedules = await _schedulesService.GetSchedules(priority); if (schedules != null) { foreach (var schedule in schedules) { var conference = conferences.SingleOrDefault(c => c.Slug == schedule.Conference.Slug); if (conference != null) { conference.IsAddedToSchedule = true; } } } return(conferences); }
public async Task LoadSchedules(Priority priority) { var schedules = await _schedulesService .GetSchedules(priority) .ConfigureAwait(false); var conferences = schedules.Select(s => s.Conference).ToList(); this.MyConferences = new ObservableCollection <Conference> (conferences); }