Exemple #1
0
        private async Task RecursivelyUpdateParent(SkyDriveDataCommon item)
        {
            var source = await SkyDriveDataSource.GetInstance();

            if (item.UniqueId == source.Root)
            {
                return;
            }
            var updatedItem = await UpdateItem(item);

            if (updatedItem != null)
            {
                //update parent
                await RecursivelyUpdateParent(FolderCollection[updatedItem.Parent_id]);
            }
        }
Exemple #2
0
        private async Task <SkyDriveDataCommon> GetUpdatedMetadata(SkyDriveDataCommon item)
        {
            SkyDriveDataSource source = await SkyDriveDataSource.GetInstance();

            SkyDriveDataCommon updatedItem;

            if (item.Type == SkyDriveItemType.Folder)
            {
                updatedItem = await source.GetFolder(item.UniqueId);
            }
            else
            {
                updatedItem = await source.GetFile(item.UniqueId);
            }
            return(updatedItem);
        }
Exemple #3
0
        private async Task <SkyDriveDataCommon> UpdateItem(SkyDriveDataCommon item)
        {
            var updatedItem = await GetUpdatedMetadata(item);

            if (updatedItem != null)
            {
                if (item.Type == SkyDriveItemType.File)
                {
                    //file
                    var file = FolderCollection[item.Parent_id].Items.FirstOrDefault(a => a.UniqueId == item.UniqueId);
                    if (file != null)
                    {
                        //update file information from server
                        file.Size         = updatedItem.Size;
                        file.Updated_time = updatedItem.Updated_time;
                        file.Parent_id    = updatedItem.Parent_id;
                        file.Description  = updatedItem.Description;
                        //update parent
                        await RecursivelyUpdateParent(FolderCollection[updatedItem.Parent_id]);
                    }
                }
                else
                {
                    //folder
                    var            cachedFolder       = FolderCollection[item.UniqueId];
                    var            cachedFolderParent = FolderCollection[item.Parent_id];
                    SkyDriveFolder folderToUpdate     = cachedFolderParent.Subalbums.FirstOrDefault(a => a.UniqueId == item.UniqueId);
                    if (folderToUpdate != null)
                    {
                        int index = cachedFolderParent.Subalbums.IndexOf(folderToUpdate);
                        cachedFolderParent.Subalbums.RemoveAt(index);
                        cachedFolderParent.Subalbums.Insert(index, (SkyDriveFolder)updatedItem);
                    }
                    cachedFolder.Title        = updatedItem.Title;
                    cachedFolder.Updated_time = updatedItem.Updated_time;
                    cachedFolder.Count        = ((SkyDriveFolder)updatedItem).Count;
                    cachedFolder.Size         = ((SkyDriveFolder)updatedItem).Size;
                    cachedFolder.Parent_id    = updatedItem.Parent_id;
                }
            }
            return(updatedItem);
        }