Esempio n. 1
0
        public ItemsViewModel()
        {
            UserID           = -1;
            Title            = "Browse";
            Jokes            = new ObservableRangeCollection <Joke>();
            LoadItemsCommand = new Command(async() => await ExecuteLoadItemsCommand());

            MessagingCenter.Subscribe <NewItemPage, Joke>(this, "AddJoke", async(obj, item) =>
            {
                var _item    = item as Joke;
                var newJokes = new List <Joke>();
                newJokes.Add(item);
                Jokes.AddRange(newJokes);
                await JokeInitializer.AddItemAsync(_item);
            });

            MessagingCenter.Subscribe <ItemDetailPage, Joke>(this, "DeleteJoke", async(obj, item) =>
            {
                var _item = item as Joke;
                //Jokes.Add(_item);
                var jokeToDelete = new List <Joke>();
                foreach (var el in Jokes)
                {
                    if (el.JokeID == _item.JokeID)
                    {
                        jokeToDelete.Add(el);
                        break;
                    }
                }
                Jokes.RemoveRange(jokeToDelete);
                await JokeInitializer.DeleteItemAsync(_item);
            });
        }
Esempio n. 2
0
        async Task ExecuteLoadItemsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                if (UserID > 0)
                {
                    Jokes.Clear();
                    var jokes = await JokeInitializer.GetItemsAsync(true, UserID);

                    Jokes.ReplaceRange(jokes);
                }
                else
                {
                    Jokes.Clear();
                    var jokes = await JokeInitializer.GetItemsAsync(true);

                    Jokes.ReplaceRange(jokes);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                MessagingCenter.Send(new MessagingCenterAlert
                {
                    Title   = "Error",
                    Message = "Unable to load items.",
                    Cancel  = "OK"
                }, "message");
            }
            finally
            {
                IsBusy = false;
            }
        }