private async void GetWishlist()
        {
            if (!string.IsNullOrEmpty(_username) && _password.Length > 0)
            {
                Globals.StatusBar.IsDbProcessing   = true;
                Globals.StatusBar.IsWorkProcessing = true;
                Globals.StatusBar.ProgressText     = "Loading Data...";
                UInt32[] dbIdList = { };
                using (var context = new DatabaseContext())
                {
                    //gets a list of all vnids that are in the VnWishlist where the userId is the logged in user
                    List <uint> idEntry = (from v in context.VnWishList where v.UserId.Equals(_userId) select v.VnId).ToList();
                    List <uint> idList  = idEntry.ToList();

                    //gets a list of titles of all items in VnIdList which contain an id from the above vnlist,
                    //which is any item in the wishlist table
                    List <string> entry = (from first in context.VnIdList
                                           join second in idList on first.VnId equals second
                                           select first.Title).ToList();

                    if (entry.Count > 0)
                    {
                        _userListCollection.InsertRange(entry);
                    }
                    if (idList.Count > 0)
                    {
                        dbIdList = idList.ToArray();
                    }
                }

                List <Tuple <uint, string> > dbItemsToAdd  = new List <Tuple <uint, string> >();
                List <VnWishList>            wishListItems = new List <VnWishList>();
                bool removeItems = false;
                using (Vndb client = new Vndb(Username, Password))
                {
                    bool           hasMore = true;
                    RequestOptions ro      = new RequestOptions();
                    int            page    = 1;
                    List <UInt32>  idList  = new List <uint>();
                    //get the list of all ids on the wishlist
                    int errorCounter = 0;
                    while (hasMore)
                    {
                        ro.Page  = page;
                        ro.Count = 100;
                        try
                        {
                            if (dbIdList.Length > 0)
                            {
                                VndbResponse <Wishlist> wishlist = await client.GetWishlistAsync(VndbFilters.UserId.Equals(_userId)& VndbFilters.VisualNovel.NotEquals(dbIdList), VndbFlags.FullWishlist, ro);

                                if (wishlist != null && wishlist.Count > 0)
                                {
                                    hasMore = wishlist.HasMore;
                                    idList.AddRange(wishlist.Select(wish => wish.VisualNovelId));
                                    //dbWishlistToAdd.AddRange(wishlist);
                                    wishListItems.AddRange(wishlist.Select(item => new VnWishList()
                                    {
                                        UserId   = item.UserId,
                                        VnId     = item.VisualNovelId,
                                        Priority = item.Priority.ToString(),
                                        Added    = item.AddedOn.ToString(CultureInfo.InvariantCulture)
                                    }));
                                    page++;
                                }
                                else if (wishlist != null && wishlist.Count == 0)
                                {
                                    wishlist = await client.GetWishlistAsync(VndbFilters.UserId.Equals(_userId), VndbFlags.FullWishlist, ro);

                                    if (wishlist != null)
                                    {
                                        hasMore = wishlist.HasMore;
                                        idList.AddRange(wishlist.Select(wish => wish.VisualNovelId));
                                        //dbWishlistToAdd.AddRange(wishlist);
                                        wishListItems.AddRange(wishlist.Select(item => new VnWishList()
                                        {
                                            UserId   = item.UserId,
                                            VnId     = item.VisualNovelId,
                                            Priority = item.Priority.ToString(),
                                            Added    = item.AddedOn.ToString(CultureInfo.InvariantCulture)
                                        }));
                                        page++;
                                        removeItems = true;
                                    }
                                }
                                else
                                {
                                    HandleError.HandleErrors(client.GetLastError(), errorCounter);
                                    errorCounter++;
                                }
                            }
                            else
                            {
                                var wishlist = await client.GetWishlistAsync(VndbFilters.UserId.Equals(_userId), VndbFlags.FullWishlist, ro);

                                if (wishlist != null)
                                {
                                    hasMore = wishlist.HasMore;
                                    idList.AddRange(wishlist.Select(wish => wish.VisualNovelId));
                                    //dbWishlistToAdd.AddRange(wishlist);
                                    wishListItems.AddRange(wishlist.Select(item => new VnWishList()
                                    {
                                        UserId   = item.UserId,
                                        VnId     = item.VisualNovelId,
                                        Priority = item.Priority.ToString(),
                                        Added    = item.AddedOn.ToString(CultureInfo.InvariantCulture)
                                    }));
                                    page++;
                                }
                                else
                                {
                                    HandleError.HandleErrors(client.GetLastError(), errorCounter);
                                    errorCounter++;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Globals.Logger.Error(ex);
                            throw;
                        }
                    }
                    //get names from ids on wishlist, and add them to ObservableCollection
                    hasMore = true;
                    page    = 1;
                    while (hasMore)
                    {
                        ro.Page  = page;
                        ro.Count = 25;
                        try
                        {
                            var data = await client.GetVisualNovelAsync(VndbFilters.Id.Equals(idList.ToArray()), VndbFlags.Basic, ro);

                            if (data != null)
                            {
                                hasMore = data.HasMore;
                                foreach (var item in data)
                                {
                                    _userListCollection.Add(item.Name);
                                    dbItemsToAdd.Add(new Tuple <uint, string>(item.Id, item.Name));
                                }
                                page++;
                            }
                            else
                            {
                                HandleError.HandleErrors(client.GetLastError(), errorCounter);
                                errorCounter++;
                            }
                        }
                        catch (Exception ex)
                        {
                            Globals.Logger.Error(ex);
                            throw;
                        }
                    }
                    client.Dispose();
                }
                AddToIdListDb(dbItemsToAdd);
                AddWishlistToDb(wishListItems, removeItems);

                Globals.StatusBar.ProgressText     = "Done";
                Globals.StatusBar.IsDbProcessing   = false;
                Globals.StatusBar.IsWorkProcessing = false;
                await Task.Delay(1500);

                Globals.StatusBar.ProgressText = string.Empty;
                IsUserInputEnabled             = true;
            }
        }