예제 #1
0
 public static async void SaveArticleIndexData(ArticlePageWorkMode mode, List <MalNewsUnitModel> data)
 {
     try
     {
         await Task.Run(async() =>
         {
             var folder =
                 await
                 ApplicationData.Current.LocalFolder.CreateFolderAsync(
                     "Articles",
                     CreationCollisionOption.OpenIfExists);
             var json =
                 JsonConvert.SerializeObject(new Tuple <DateTime, List <MalNewsUnitModel> >(DateTime.UtcNow, data));
             var file =
                 await
                 folder.CreateFileAsync(mode == ArticlePageWorkMode.Articles ? "mal_article_index.json" : "mal_news_index.json",
                                        CreationCollisionOption.ReplaceExisting);
             await FileIO.WriteTextAsync(file, json);
         });
     }
     catch (Exception)
     {
         //magic
     }
 }
예제 #2
0
        private static async void UpdateNewsTile(ArticlePageWorkMode mode)
        {
            var news = await new MalArticlesIndexQuery(mode).GetArticlesIndex();

            try
            {
                var updater = TileUpdateManager.CreateTileUpdaterForSecondaryTile(mode == ArticlePageWorkMode.Articles ? ArticlesTileId : NewsTileId);
                updater.EnableNotificationQueue(true);
                updater.Clear();
                foreach (var malNewsUnitModel in news.Take(5))
                {
                    var tileContent = new TileContent
                    {
                        Visual = new TileVisual
                        {
                            TileMedium = GenerateTileBindingMedium(malNewsUnitModel),
                            TileWide   = GenerateTileBindingWide(malNewsUnitModel),
                        }
                    };
                    if (!ViewModelLocator.Mobile)
                    {
                        tileContent.Visual.TileLarge = GenerateTileBindingLarge(malNewsUnitModel);
                    }
                    updater.Update(new TileNotification(tileContent.GetXml()));
                }
            }
            catch (Exception)
            {
                //can carsh due to unknown reasons
            }
            _tileUpdateSemaphore?.Release();
            NotificationTaskManager.StartNotificationTask(BgTasks.Tiles, false);
        }
예제 #3
0
 public MalArticlesIndexQuery(ArticlePageWorkMode mode)
 {
     _mode   = mode;
     Request =
         WebRequest.Create(Uri.EscapeUriString(mode == ArticlePageWorkMode.Articles ? "http://myanimelist.net/featured" : "http://myanimelist.net/news"));
     Request.ContentType = "application/x-www-form-urlencoded";
     Request.Method      = "GET";
 }
예제 #4
0
 public MalArticlesIndexQuery(ArticlePageWorkMode mode)
 {
     _mode = mode;
     Request =
         WebRequest.Create(
             Uri.EscapeUriString(mode == ArticlePageWorkMode.Articles
                 ? "https://myanimelist.net/featured"
                 : "https://myanimelist.net/news"));
     Request.ContentType = "application/x-www-form-urlencoded";
     Request.Method = "GET";
 }
예제 #5
0
 public static async Task <List <MalNewsUnitModel> > RetrieveArticleIndexData(ArticlePageWorkMode mode)
 {
     try
     {
         return(await DataCacheService.RetrieveData <List <MalNewsUnitModel> >(mode == ArticlePageWorkMode.Articles
                                                                               ? "mal_article_index.json"
                                                                               : "mal_news_index.json", "Articles", 1));
     }
     catch (Exception)
     {
         //No file
     }
     return(null);
 }
예제 #6
0
 public static async void SaveArticleIndexData(ArticlePageWorkMode mode, List <MalNewsUnitModel> data)
 {
     try
     {
         await Task.Run(async() =>
         {
             await
             DataCacheService.SaveData(data,
                                       mode == ArticlePageWorkMode.Articles ? "mal_article_index.json" : "mal_news_index.json",
                                       "Articles");
         });
     }
     catch (Exception)
     {
         //magic
     }
 }
예제 #7
0
        public static async Task <List <MalNewsUnitModel> > RetrieveArticleIndexData(ArticlePageWorkMode mode)
        {
            try
            {
                var folder =
                    await
                    ApplicationData.Current.LocalFolder.CreateFolderAsync("Articles",
                                                                          CreationCollisionOption.OpenIfExists);

                var file = await folder.GetFileAsync(mode == ArticlePageWorkMode.Articles? "mal_article_index.json" : "mal_news_index.json");

                var data = await FileIO.ReadTextAsync(file);

                var tuple =
                    JsonConvert.DeserializeObject <Tuple <DateTime, List <MalNewsUnitModel> > >(data);
                return(CheckForOldDataDetails(tuple.Item1, 1) ? tuple.Item2 : null);
            }
            catch (Exception)
            {
                //No file
            }
            return(null);
        }
 public ArticlesPageTabFragment(bool initBindings, ArticlePageWorkMode mode) : base(initBindings)
 {
     _mode     = mode;
     ViewModel = ViewModelLocator.MalArticles;
 }
예제 #9
0
        public async void TestArticlesIndexQuery(ArticlePageWorkMode mode)
        {
            var articles = await new MalArticlesIndexQuery(mode).GetArticlesIndex(true);

            Assert.False(articles.Count == 0);
        }
예제 #10
0
 private static async void UpdateNewsTile(ArticlePageWorkMode mode)
 {
     var news = await new MalArticlesIndexQuery(mode).GetArticlesIndex();
     try
     {
         var updater = TileUpdateManager.CreateTileUpdaterForSecondaryTile(mode == ArticlePageWorkMode.Articles ? ArticlesTileId : NewsTileId);
         updater.EnableNotificationQueue(true);
         updater.Clear();
         foreach (var malNewsUnitModel in news.Take(5))
         {
             var tileContent = new TileContent
             {
                 Visual = new TileVisual
                 {
                     TileMedium = GenerateTileBindingMedium(malNewsUnitModel),
                     TileWide = GenerateTileBindingWide(malNewsUnitModel),
                 }
             };
             if (!ViewModelLocator.Mobile)
                 tileContent.Visual.TileLarge = GenerateTileBindingLarge(malNewsUnitModel);
             updater.Update(new TileNotification(tileContent.GetXml()));
         }
     }
     catch (Exception)
     {
         //can carsh due to unknown reasons
     }
     _tileUpdateSemaphore?.Release();
     NotificationTaskManager.StartNotificationTask(BgTasks.Tiles, false);
 }
예제 #11
0
 public async void TestArticlesIndexQuery(ArticlePageWorkMode mode)
 {
     var articles = await new MalArticlesIndexQuery(mode).GetArticlesIndex(true);
     Assert.False(articles.Count == 0);
 }