Example #1
0
        private async Task loadDetailsAsync(LibraryItem item)
        {
            try
            {
                if (item == null)
                {
                    return;
                }

                if (item.DetailsLoaded)
                {
                    return;
                }

                var details = await LibraryClient.Get(item.ID);

                if (details != null)
                {
                    item.UpdateFromDetails(details);
                    item.DetailsLoaded = true;
                }
            }
            catch (Exception ex)
            {
                //XXX : Handle error
                LoggerService.Instance.Log("ERROR: Library.loadDetailsAsync: " + ex);
            }
        }
Example #2
0
        private async Task getItems(bool cloudItemsOnly = false)
        {
            if (!cloudItemsOnly)
            {
                await getLocalItems();
            }
            else
            {
                await updateLocalItems();
            }

            var collection = await LibraryClient.Get();

            if (collection?.Entries != null)
            {
                if (CloudItems == null)
                {
                    CloudItems = new ObservableCollection <LibraryItem>();
                }

                var entries = new ObservableCollection <LibraryItem>(collection.Entries);
                switch (librarySort)
                {
                case LibrarySort.Alphabetical:
                    await entries.SortByTitle();

                    break;

                case LibrarySort.Recent:
                    await entries.SortByDate();

                    break;
                }

                var newItems = await CloudItems.UpdateItems(entries);

                if (Account != null && Account.SignedIn && Account.UserInfo != null &&
                    !string.IsNullOrEmpty(Account.UserInfo.Email))
                {
                    var cloud = CloudItems.ToList();
                    var email = Account.UserInfo.Email.ToLower();
                    if (!SharedSettingsService.Instance.GetBoolValue("AutoDownloadDBCreated" + email))
                    {
                        SharedSettingsService.Instance.SetBoolValue("AutoDownloadDBCreated" + email, true);
                        foreach (var cloudItem in cloud)
                        {
                            LocalLibraryService.Instance.CreateCloudItemId(cloudItem.ID, Account.UserInfo.Email);
                        }
                    }
                    else
                    {
                        foreach (var cloudItem in newItems)
                        {
                            if (
                                !LocalLibraryService.Instance.IsItemAddedForDownload(cloudItem.ID,
                                                                                     Account.UserInfo.Email))
                            {
                                LocalLibraryService.Instance.CreateCloudItemId(cloudItem.ID, Account.UserInfo.Email);
                                if (AutoDownload)
                                {
                                    LoggerService.Instance.Log("Library.getItems: Found new item for download: ID: " +
                                                               cloudItem.ID);
                                    await DownloadItem(cloudItem, false);
                                }
                            }
                        }
                    }
                }
            }

            if (LocalItems != null && CloudItems != null)
            {
                var local = LocalItems.ToList();
                var cloud = CloudItems.ToList();
                foreach (var localItem in local)
                {
                    var cloudItemForLocalItem =
                        cloud.FirstOrDefault(
                            item => item.ID == localItem.ID && localItem.Storage == LibraryItemStorage.AppLocal);
                    if (cloudItemForLocalItem != null)
                    {
                        cloudItemForLocalItem.LocalItem = localItem;
                        if (cloudItemForLocalItem.DownloadStatus != DownloadStatus.Downloading)
                        {
                            cloudItemForLocalItem.DownloadStatus = DownloadStatus.Completed;
                        }
                    }
                }
            }

            await sort(librarySort);

            OnPropertyChanged(nameof(CloudItemsCount));
        }