Beispiel #1
0
        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);
        }