private async Task SaveImage()
{
if (SelectedImage.Angle != 0)
{
Picture img = new Picture {ImageUri = SelectedImage.ImageUri, Angle = SelectedImage.Angle};
int imgPos = ThumbnailCollection.View.CurrentPosition;
IsImageSaving = true;
await _imageProvider.SaveImageAsync(img.ImageUri, img.Angle);
IsImageSaving = false;
_thumbnailCollection.RemoveAt(imgPos);
// delay to reclaim the deleted image memory
await Task.Delay(2);
_thumbnailCollection.Insert(imgPos, new Thumbnail { ImageUri = img.ImageUri });
Thumbnail selectedThumbnail =
_thumbnailCollection.First(thumbnail => thumbnail.ImageUri == img.ImageUri);
ThumbnailCollection.View.MoveCurrentTo(selectedThumbnail);
}
}