internal static async Task DownloadAndStore(IPlayerClient client, string sourceId, ManifestEntry entry, SyncManifest newManifest, string downloadFolder, DownloadProgress progress) { Exception exception = null; try { var syncModel = await client.GetSyncModelAsync(sourceId, entry.ModelPath, entry.Hash); if (syncModel != null) { // Replace model name with local model paths syncModel.Name = entry.ModelPath; SetReferencedSyncModelPath(syncModel, newManifest); var fullPath = Path.Combine(downloadFolder, entry.ModelPath); var directory = Path.GetDirectoryName(fullPath); await RunFileIOOperation(async() => { Directory.CreateDirectory(directory); await PlayerFile.SaveAsync(syncModel, fullPath); }); } } catch (Exception ex) { exception = ex; } if (exception != null) { progress.errors.Enqueue(new DownloadError(exception, entry)); } progress.ReportCompleted(); }