示例#1
0
        public async void AttachVideoFromFile(StorageFile file)
        {
            bool notify = AttachmentUploads.Count == 0;

            var videoAttachment = new VideoAttachmentUpload();
            var fileStream      = await file.OpenReadAsync();

            var stream = fileStream.CloneStream();

            fileStream.Dispose();

            videoAttachment.Stream   = stream.AsStreamForRead();
            videoAttachment.FileName = file.Name;

            AttachmentUploads.Add(videoAttachment);

            UploadVideoAttachment(videoAttachment);

            if (notify)
            {
                RaisePropertyChanged("AttachmentUploads");
            }
        }
示例#2
0
        private async void UploadVideoAttachment(VideoAttachmentUpload attachment)
        {
            attachment.IsUploading = true;

            _uploadsEvent.Reset();

            try
            {
                var uploadInfos = await ServiceLocator.Vkontakte.Video.Save(isPrivate : true);

                attachment.Stream.Seek(0, SeekOrigin.Begin);

                if (attachment.CancellationToken.IsCancellationRequested)
                {
                    return;
                }

                var uploadResponse = await ServiceLocator.Vkontakte.Video.Upload(uploadInfos.UploadUrl, attachment.FileName, attachment.Stream);

                if (attachment.CancellationToken.IsCancellationRequested)
                {
                    return;
                }

                if (uploadResponse != null)
                {
                    var videos = await ServiceLocator.Vkontakte.Video.Get(new List <string>() { ViewModelLocator.Main.CurrentUser?.Id + "_" + uploadResponse.VideoId });

                    if (attachment.CancellationToken.IsCancellationRequested)
                    {
                        return;
                    }

                    if (videos != null && !videos.Items.IsNullOrEmpty())
                    {
                        attachment.VkVideo = videos.Items.First();
                    }

                    attachment.IsUploaded = true;
                }
            }
            catch (VkAccessDeniedException)
            {
                Messenger.Default.Send(new LoginStateChangedMessage()
                {
                    IsLoggedIn = false
                });

                Navigator.Main.Navigate(typeof(LoginView), clearHistory: true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Unable to upload video attachment");
            }
            finally
            {
                attachment.IsUploading = false;

                UpdatePendingAttachments();
            }
        }