コード例 #1
0
        private async Task <IEnumerable <SessionGroup> > Load()
        {
            Username = await CardboardKnight.Username();

            var plays = await CardboardKnight.RetrievePlays();

            if (!plays.Any())
            {
                plays = await CardboardKnight.FetchPlays();
            }

            var user = await CardboardKnight.Username();

            foreach (var p in plays)
            {
                p.User = user;
            }

            var results = plays
                          .GroupBy(p => p.Date, p => p, (key, g) => new SessionGroup(g.ToList())
            {
                Date = key
            })
                          .OrderByDescending(i => i.Date);

            Sessions = new ObservableCollection <SessionGroup>(results);

            return(Sessions);
        }
コード例 #2
0
        public async Task <List <Game> > Load()
        {
            var results = await CardboardKnight.FetchHotness().ConfigureAwait(false);

            Hotness = new MvxObservableCollection <Game>(results);
            await Load(false).ConfigureAwait(false);

            return(Hotness.ToList());
        }
コード例 #3
0
        private async Task Load(Play p)
        {
            if (p.Game == null)
            {
                p.Game = await CardboardKnight.RetrieveGame(p.GameId);

                Play = p;
            }
        }
コード例 #4
0
        private async Task OnLogoutConfirm(WarningPopupMessage message)
        {
            _messenger.Unsubscribe <WarningPopupMessage>(_token);

            if (message.Confirmed)
            {
                await CardboardKnight.Logout();

                await _navigationService.Navigate <LoginViewModel>();
            }
        }
コード例 #5
0
        private async Task OnRatingMessage(RatingResultMessage message)
        {
            _messenger.Unsubscribe <RatingResultMessage>(_token);

            if (message.Success)
            {
                await CardboardKnight.RateGameForUser(Game, message.Value, message.Review);

                Game.UserRating = message.Value;
                await UpdateGame(Game);
            }
        }
コード例 #6
0
        public async Task AddGame()
        {
            if (Game == null)
            {
                return;
            }

            bool success = Game.InCollection ? await CardboardKnight.RemoveGameFromUser(Game) : await CardboardKnight.AddGameToUser(Game);

            if (success)
            {
                await CardboardKnight.StoreGame((Game)Game);
            }
        }
コード例 #7
0
        private async Task AttemptLogin()
        {
            await Task.Delay(1000);

            Success = await CardboardKnight.Login(Username, Password);

            if (Success)
            {
                await _navigationService.Navigate <RootViewModel>(); //This feels *very*  wrong. Find documentation on modal dialogs for MvvmCross.
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
コード例 #8
0
        private async Task Appearing()
        {
            string username;

            username = await CardboardKnight.Username();

            if (string.IsNullOrEmpty(username)) // if no user name, launch the login experience
            {
                await _navigationService.Navigate <LoginViewModel>();
            }
            else
            {
                await _navigationService.Navigate <MenuViewModel>();

                await _navigationService.Navigate <HomeViewModel>();
            }
        }
コード例 #9
0
        private async Task Load(bool forced)
        {
            try
            {
                IList <Game> games = new List <Game>();
                if (forced)
                {
                    IsBusy = true;

                    var results = await CardboardKnight.GetTop100().ConfigureAwait(false);

                    foreach (var g in results)
                    {
                        games.Add(await CardboardKnight.StoreGame(g).ConfigureAwait(false));
                    }
                }
                else
                {
                    var r = await CardboardKnight.RetrieveGames();

                    var g = r.FirstOrDefault();

                    //This is a *really* ugly query
                    games = r.Where(g => g.Ranks.Any(rank => rank.Category == Category.All && rank.Position >= 1 && rank.Position <= 100))
                            .OrderBy(g => g.Ranks.FirstOrDefault(rank => rank.Category == Category.All).Position)
                            .ToList();

                    if (games.Count < 100)
                    {
                        await Load(true);

                        return;
                    }
                }
                Top100 = new MvxObservableCollection <Game>(games);
            }
            catch (Exception ex)
            {
                //TODO: some sort of logging
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #10
0
        public async Task Load(int id)
        {
            Fetched = true;

            var existing = await CardboardKnight.RetrieveGame(id);

            if (existing != null && !string.IsNullOrEmpty(existing.Description)) //assumption is if the description is added, the game has been completely downloaded via the games page.
            {
                Game = existing;
            }
            else
            {
                var g = await CardboardKnight.FetchGame(id);

                Game = await CardboardKnight.StoreGame((Game)g);
            }

            await SetupVideos();
        }
コード例 #11
0
        private async Task SetupVideos()
        {
            Videos = new VideosViewModel(Game);

            var results = await CardboardKnight.GetVideos(Game.Id);

            //var results = await CardboardKnight.VideosDb.GetVideoByGame(Game.Id).ConfigureAwait(false);
            var videos = new ObservableCollection <Video>(results);

            foreach (var v in results)
            {
                if (v.UserId == "247565")//watch it played
                {
                    Game.HasRodney = true;
                    RodneyVideo    = v.Link;
                }
            }

            Videos.Videos = videos;
        }
コード例 #12
0
        private async Task <List <Game> > Load(bool forced)
        {
            List <Game> games = new List <Game>();

            try
            {
                if (forced)
                {
                    var results = await CardboardKnight.GetTop100(category : Category);

                    foreach (var g in results)
                    {
                        games.Add(await CardboardKnight.StoreGame((Game)g));
                    }
                }
                else
                {
                    //  This now has issues with multiple-top - 100 lists, and wouldn't allow for paging.
                    //  For now, just fetch the list every time, no caching.

                    //var r = await CardboardKnight.RetrieveGames();
                    //games = r
                    //        .Where(g => g.Rank >= 1 && g.Rank <= 100)
                    //        .OrderBy(g => g.Rank)
                    //        .ToList();

                    //if (games.Count < 100)
                    //{
                    return(await Load(true));

                    //}
                }
                Games = new ObservableCollection <Game>(games);
            }
            catch (Exception ex)
            {
                //Debug.WriteLine(ex);
            }
            return(games);
        }
コード例 #13
0
        public async Task ForceUpdate()
        {
            var g = await CardboardKnight.FetchGame(Game.Id);

            Game = await CardboardKnight.StoreGame(g);
        }
コード例 #14
0
 private async Task UpdateGame(Game g)
 {
     Game = await CardboardKnight.StoreGame((Game)g);
 }
コード例 #15
0
 private async Task <List <Game> > Search(string t)
 {
     Games = new ObservableCollection <Game>(await CardboardKnight.Search(t));
     return(Games.ToList());
 }