internal async Task UploadFinished(string parentId, string name, bool withError)
{
BackgroundUpload uploader;
var id = GetFileId(parentId, name);
_uploadsLock.Wait();
try
{
uploader = _uploads[id];
if (withError)
{
_cache.Remove(id);
}
else
{
_cache.Set(id, uploader.Item, _defaultCacheTimeSpan);
}
_uploads.Remove(id);
}
finally
{
_uploadsLock.Release();
}
if (!withError && uploader.ItemChanges != null)
{
var updatedItem = await Service.UpdateAsync(Drive.Id, uploader.Item.Id, uploader.ItemChanges, CancellationToken.None);
_cache.Set(id, updatedItem, _defaultCacheTimeSpan);
}
}