public async Task LoadAllItems(BlogGroup group)
        {
            var cachedItems = await LoadCachedItems(group);

            group.ItemCount    = cachedItems.Count;
            group.NewItemCount = 0;
            var newItems = await LoadLiveItems(group);

            foreach (var item in newItems.Where(i => !cachedItems.Contains(i, new BaseItemComparer())))
            {
                var error = string.Empty;
                try
                {
                    var client = GetClient();
                    var page   = await client.GetStringAsync(item.PageUri);

                    item.ImageUriList = new ObservableCollection <Uri>(BlogUtility.ExtractImagesFromPage(page));
                    foreach (var image in item.ImageUriList)
                    {
                        ImageUriManager.AddImage(item.Id, image);
                    }
                }
                catch (Exception ex)
                {
                    error = ex.Message;
                }

                if (!string.IsNullOrEmpty(error))
                {
                    await _dialog.ShowDialogAsync(error);
                }
                cachedItems.Add(item);
                group.NewItemCount++;
                await _storage.SaveItem(group.Id.GetHashCode().ToString(), item);
            }

            foreach (var item in cachedItems.OrderByDescending(i => i.PostDate))
            {
                foreach (var image in item.ImageUriList)
                {
                    ImageUriManager.AddImage(item.Id, image);
                }
                group.Items.Add(item);
            }

            group.ItemCount = group.Items.Count();
        }
        private void LoadTestGroups()
        {
            var jeremyGroup = new BlogGroup
            {
                Id      = JEREMY_BLOG,
                PageUri = new Uri(JEREMY_BLOG, UriKind.Absolute),
                Title   = "Jeremy Likness' Blog",
                RssUri  =
                    new Uri("http://www.wintellect.com/CS/blogs/jlikness/rss.aspx",
                            UriKind.Absolute),
            };

            GroupList.Add(jeremyGroup);

            var item = new BlogItem
            {
                Id =
                    SAMPLE_BLOG,
                PageUri     = new Uri(SAMPLE_BLOG, UriKind.Absolute),
                Title       = "Windows 8: The Facts about ARM, Metro, and the Blue Stack",
                Description =
                    "Many eyes will be focused on Barcelona on February 29, 2012 when Microsoft releases the Windows 8 Consumer Preview or what many are calling the beta version of the new platform. You’ve probably heard quite a bit about the Metro interface. It has design...",
                PostDate     = DateTime.Now,
                ImageUriList = new ObservableCollection <Uri>(new[]
                {
                    new Uri(
                        "http://lh6.ggpht.com/-qhW3FfZ7vXI/TzScQ_3eEEI/AAAAAAAAAds/3en8ijjglEg/stacks_thumb%25255B1%25255D.jpg?imgmax=800",
                        UriKind.Absolute),
                    new Uri(
                        "http://lh5.ggpht.com/-mUJv5DN5sOQ/TzScRSjHfJI/AAAAAAAAAd8/XErEJslVnKI/stackclr_thumb%25255B1%25255D.png?imgmax=800",
                        UriKind.Absolute),
                    new Uri(
                        "http://lh3.ggpht.com/-yCXImOFtSrc/TzScR2uTZ-I/AAAAAAAAAeM/43a7SGj5Uwo/stacklanguage_thumb%25255B1%25255D.png?imgmax=800",
                        UriKind.Absolute)
                }),
                Group = jeremyGroup
            };

            jeremyGroup.Items.Add(item);
        }
        private async Task <IList <BlogItem> > LoadCachedItems(BlogGroup group)
        {
            var retVal = new List <BlogItem>();

            var groupFolder = group.Id.GetHashCode().ToString();

            foreach (var item in await _storage.ListItems(groupFolder))
            {
                try
                {
                    var post = await _storage.RestoreItem <BlogItem>(groupFolder, item);

                    post.Group = group;
                    retVal.Add(post);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.ToString());
                }
            }

            return(retVal);
        }
 private async Task <IList <BlogItem> > LoadLiveItems(BlogGroup group)
 {
     return(await _syndicationHelper.LoadItemsAsync(group));
 }