private async Task UploadChangedDeckImages(IReadOnlyList <StorageFile> files) { var remoteItems = await syncInstance.GetChildrenInRemoteFolder(Constant.DEFAULT_DECK_IMAGE_FOLDER_SYNC_PATH); var localCacheItems = await deckImageCacheFolder.GetFilesAsync(); foreach (var file in files) { if (file.Name == DeckInformation.DEFAULT_IMAGE_NAME) { continue; } var cacheItem = DeckInformation.TryGetCacheItem(localCacheItems, file.Name); long localFileDateCreated = 0; if (cacheItem != null) { localFileDateCreated = long.Parse(cacheItem.Name.Split(DeckInformation.IMAGE_NAME_SEPARATOR)[1]); } bool isHasFile = false; foreach (var item in remoteItems) { var splitString = item.Name.Split(DeckInformation.IMAGE_NAME_SEPARATOR); if (splitString.Length != 2) { continue; } string name = splitString[0]; long itemDateCreated = long.Parse(splitString[1]); if (name == file.Name) { if (itemDateCreated < localFileDateCreated) { await syncInstance.DeleteItemWithPathAsync(Constant.DEFAULT_DECK_IMAGE_FOLDER_SYNC_PATH + "/" + item.Name); await UploadDeckImageFile(file, localFileDateCreated); } isHasFile = true; remoteItems.Remove(item); break; } } if (!isHasFile) { await UploadDeckImageFile(file, localFileDateCreated); } } await DeleteUnusedDeckImagesOnServer(remoteItems); }
private async Task DownloadChangedDeckImages(List <StorageFile> files) { var remoteItems = await syncInstance.GetChildrenInRemoteFolder(Constant.DEFAULT_DECK_IMAGE_FOLDER_SYNC_PATH); var localCacheItems = await deckImageCacheFolder.GetFilesAsync(); foreach (var item in remoteItems) { var splitString = item.Name.Split(DeckInformation.IMAGE_NAME_SEPARATOR); if (splitString.Length != 2) { continue; } string name = splitString[0]; long dateCreated = long.Parse(splitString[1]); bool isHasFile = false; foreach (var file in files) { if (name == file.Name) { var cacheFile = DeckInformation.TryGetCacheItem(localCacheItems, name); long localDateCreated = 0; if (cacheFile != null) { localDateCreated = long.Parse(cacheFile.Name.Split(DeckInformation.IMAGE_NAME_SEPARATOR)[1]); } if (dateCreated > localDateCreated) { await ChangeDeckImage(item, name, dateCreated); } isHasFile = true; files.Remove(file); break; } } if (!isHasFile) { await ChangeDeckImage(item, name, dateCreated); } } await DeleteLocalUnusedDeckImage(files); }
private async Task UploadAllDeckImages(IReadOnlyList <StorageFile> files) { var localCacheItems = await deckImageCacheFolder.GetFilesAsync(); foreach (var file in files) { if (file.Name == DeckInformation.DEFAULT_IMAGE_NAME) { continue; } var cacheItem = DeckInformation.TryGetCacheItem(localCacheItems, file.Name); if (cacheItem == null) { continue; } long localFileDateCreated = long.Parse(cacheItem.Name.Split(DeckInformation.IMAGE_NAME_SEPARATOR)[1]); await UploadDeckImageFile(file, localFileDateCreated); } }