private async Task TakeVideo()
        {
            bool permissionResult = await _permissionService.AskPermission();

            if (permissionResult)
            {
                IsLoading = true;
                var model = await _mediaHelper.TakeVideoAsync().ConfigureAwait(false);

                if (model != null)
                {
                    model.NoteId  = _noteId;
                    model.IsVideo = true;

                    var videoName =
                        model.VideoPath.Substring(
                            model.VideoPath.LastIndexOf(@"/", StringComparison.InvariantCulture) + 1);
                    var imageName = videoName.Substring(0, videoName.Length - 4) + "_thumb.jpg";

                    byte[] imageContent =
                        _mediaService.GenerateThumbImage(model.VideoPath,
                                                         ConstantsHelper.ThumbnailTimeFrame);

                    byte[] resizedImage = _mediaService.ResizeImage(imageContent,
                                                                    ConstantsHelper.ResizedImageWidth,
                                                                    ConstantsHelper.ResizedImageHeight);

                    string path      = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                    string imagePath = Path.Combine(path, imageName);

                    File.WriteAllBytes(imagePath, resizedImage);
                    model.ImagePath = imagePath;
                    model.Thumbnail = imagePath;

                    await _transformHelper.ResizeAsync(imagePath, model).ConfigureAwait(false);

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        GalleryItemModels.Add(model);
                    });
                }
            }
            Device.BeginInvokeOnMainThread(() =>
            {
                IsLoading = false;
            });
        }
        private async void MultiMediaPickerServiceOnMediaPickedCompleted(object sender, IList <MediaFile> e)
        {
            _multiMediaPickerService.OnMediaPickedCompleted -= MultiMediaPickerServiceOnMediaPickedCompleted;

            IsLoading = true;

            foreach (var item in e)
            {
                var model = await GetGalleryItemModelFromMediaFile(item)
                            .ConfigureAwait(false);

                Device.BeginInvokeOnMainThread(() =>
                {
                    lock (Obj)
                    {
                        GalleryItemModels.Add(model);
                    }
                });
            }

            IsLoading = false;
        }
        private async Task TakePhoto()
        {
            bool permissionResult = await _permissionService.AskPermission();

            if (permissionResult)
            {
                IsLoading = true;
                try
                {
                    var model = await _mediaHelper.TakePhotoAsync();

                    if (model != null)
                    {
                        GalleryItemModels.Add(model);
                    }
                }
                catch (Exception ex)
                {
                    await UserDialogs.Instance.AlertAsync(ex.Message);
                }
            }
            IsLoading = false;
        }