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); } }
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)); }