Ejemplo n.º 1
0
        public MarkdownAccessoryViewModel(
            IImgurService imgurService,
            IMediaPickerFactory mediaPicker,
            IAlertDialogFactory alertDialogFactory,
            IDefaultValueService defaultValueService)
        {
            PostToImgurCommand = ReactiveCommand.CreateAsyncTask(async _ => {
                if (!defaultValueService.GetOrDefault(IMGUR_UPLOAD_WARN, false))
                {
                    defaultValueService.Set(IMGUR_UPLOAD_WARN, true);
                    await alertDialogFactory.Alert("Please Read!", IMGUR_UPLOAD_WARN_MESSAGE);
                }

                var photo        = await mediaPicker.PickPhoto();
                var memoryStream = new MemoryStream();
                await photo.Save(Splat.CompressedBitmapFormat.Jpeg, 0.8f, memoryStream);
                using (alertDialogFactory.Activate("Uploading..."))
                {
                    var model = await imgurService.SendImage(memoryStream.ToArray());
                    if (model == null || model.Data == null || model.Data.Link == null)
                    {
                        throw new InvalidOperationException("Unable to upload to Imgur. Please try again later.");
                    }
                    return(model.Data.Link);
                }
            });

            PostToImgurCommand.ThrownExceptions
            .Where(x => !(x is TaskCanceledException))
            .Subscribe(x => alertDialogFactory.Alert("Upload Error", x.Message));
        }
Ejemplo n.º 2
0
        public MarkdownAccessoryViewModel(
            IImgurService imgurService, 
            IMediaPickerFactory mediaPicker, 
            IAlertDialogFactory alertDialogFactory,
            IDefaultValueService defaultValueService)
        {
            PostToImgurCommand = ReactiveCommand.CreateAsyncTask(async _ => {
                if (!defaultValueService.GetOrDefault(IMGUR_UPLOAD_WARN, false))
                {
                    defaultValueService.Set(IMGUR_UPLOAD_WARN, true);
                    await alertDialogFactory.Alert("Please Read!", IMGUR_UPLOAD_WARN_MESSAGE);
                }

                var photo = await mediaPicker.PickPhoto();
                var memoryStream = new MemoryStream();
                await photo.Save(Splat.CompressedBitmapFormat.Jpeg, 0.8f, memoryStream);
                using (alertDialogFactory.Activate("Uploading..."))
                {
                    var model = await imgurService.SendImage(memoryStream.ToArray());
                    if (model == null || model.Data == null || model.Data.Link == null)
                        throw new InvalidOperationException("Unable to upload to Imgur. Please try again later.");
                    return model.Data.Link;
                }
            });

            PostToImgurCommand.ThrownExceptions
                .Where(x => !(x is TaskCanceledException))
                .Subscribe(x => alertDialogFactory.Alert("Upload Error", x.Message));
        }
Ejemplo n.º 3
0
 public GistCommentViewModel(IApplicationService applicationService, IImgurService imgurService,
                             IMediaPickerFactory mediaPicker, IAlertDialogFactory alertDialogFactory)
     : base(imgurService, mediaPicker, alertDialogFactory)
 {
     Title       = "Add Comment";
     SaveCommand = ReactiveCommand.CreateAsyncTask(
         this.WhenAnyValue(x => x.Text).Select(x => !string.IsNullOrEmpty(x)),
         async t => await applicationService.GitHubClient.Gist.Comment.Create(int.Parse(Id), Text));
     SaveCommand.Subscribe(x => Dismiss());
 }
Ejemplo n.º 4
0
 public IssueCommentViewModel(IApplicationService applicationService, IImgurService imgurService,
                              IMediaPickerFactory mediaPicker, IAlertDialogFactory alertDialogFactory)
     : base(imgurService, mediaPicker, alertDialogFactory)
 {
     Title       = "Add Comment";
     SaveCommand = ReactiveCommand.CreateAsyncTask(
         this.WhenAnyValue(x => x.Text).Select(x => !string.IsNullOrEmpty(x)),
         t => applicationService.GitHubClient.Issue.Comment.Create(RepositoryOwner, RepositoryName, Id, Text));
     SaveCommand.Subscribe(x => Dismiss());
 }
Ejemplo n.º 5
0
        public FeedbackComposerViewModel(
            IApplicationService applicationService, IImgurService imgurService,
            IMediaPickerFactory mediaPicker, IAlertDialogFactory alertDialogService)
        {
            this.WhenAnyValue(x => x.IsFeature).Subscribe(x => Title = x ? "New Feature" : "Bug Report");

            SubmitCommand = ReactiveCommand.CreateAsyncTask(
                this.WhenAnyValue(x => x.Subject).Select(x => !string.IsNullOrEmpty(x)),
                async _ =>
            {
                if (string.IsNullOrEmpty(Subject))
                {
                    throw new ArgumentException(string.Format("You must provide a title for this {0}!", IsFeature ? "feature" : "bug"));
                }

                var labels       = await applicationService.GitHubClient.Issue.Labels.GetForRepository(CodeHubOwner, CodeHubName);
                var createLabels = labels.Where(x => string.Equals(x.Name, IsFeature ? "feature request" : "bug", StringComparison.OrdinalIgnoreCase)).Select(x => x.Name).Distinct();

                var createIssueRequest = new Octokit.NewIssue(Subject)
                {
                    Body = Description
                };
                foreach (var label in createLabels)
                {
                    createIssueRequest.Labels.Add(label);
                }
                var createdIssue = await applicationService.GitHubClient.Issue.Create(CodeHubOwner, CodeHubName, createIssueRequest);

                _createdIssueSubject.OnNext(createdIssue);
                Dismiss();
            });

            PostToImgurCommand = ReactiveCommand.CreateAsyncTask(async _ =>
            {
                var photo        = await mediaPicker.PickPhoto();
                var memoryStream = new MemoryStream();
                await photo.Save(Splat.CompressedBitmapFormat.Jpeg, 0.8f, memoryStream);
                using (alertDialogService.Activate("Uploading..."))
                {
                    var model = await imgurService.SendImage(memoryStream.ToArray());
                    if (model == null || model.Data == null || model.Data.Link == null)
                    {
                        throw new InvalidOperationException("Unable to upload to Imgur. Please try again later.");
                    }
                    return(model.Data.Link);
                }
            });

            PostToImgurCommand.ThrownExceptions
            .Where(x => !(x is TaskCanceledException))
            .Subscribe(x => alertDialogService.Alert("Upload Error", x.Message));
        }
Ejemplo n.º 6
0
 public CommitCommentViewModel(IApplicationService applicationService, IImgurService imgurService,
                               IMediaPickerFactory mediaPicker, IAlertDialogFactory alertDialogFactory)
     : base(imgurService, mediaPicker, alertDialogFactory)
 {
     SaveCommand = ReactiveCommand.CreateAsyncTask(
         this.WhenAnyValue(x => x.Text).Select(x => !string.IsNullOrEmpty(x)),
         t =>
     {
         var commitComment = new Octokit.NewCommitComment(Text);
         return(applicationService.GitHubClient.Repository.RepositoryComments.Create(RepositoryOwner, RepositoryName, Node, commitComment));
     });
     SaveCommand.Subscribe(x => Dismiss());
 }
Ejemplo n.º 7
0
        public PullRequestCommentViewModel(IApplicationService applicationService, IImgurService imgurService,
                                           IMediaPickerFactory mediaPicker, IAlertDialogFactory alertDialogFactory)
            : base(imgurService, mediaPicker, alertDialogFactory)
        {
            Title       = "Add Comment";
            SaveCommand = ReactiveCommand.CreateAsyncTask(
                this.WhenAnyValue(x => x.Text).Select(x => !string.IsNullOrEmpty(x)),
                t =>
            {
                var req = new Octokit.PullRequestReviewCommentCreate(Text, null, null, 0);
                return(applicationService.GitHubClient.PullRequest.Comment.Create(RepositoryOwner, RepositoryName, Id, req));
            });

            SaveCommand.Subscribe(x => Dismiss());
        }
Ejemplo n.º 8
0
 protected MarkdownComposerViewModel(IImgurService imgurService, IMediaPickerFactory mediaPicker, IAlertDialogFactory alertDialogFactory)
 {
     PostToImgurCommand = ReactiveCommand.CreateAsyncTask(async _ =>
     {
         var photo        = await mediaPicker.PickPhoto();
         var memoryStream = new MemoryStream();
         await photo.Save(Splat.CompressedBitmapFormat.Jpeg, 0.8f, memoryStream);
         using (alertDialogFactory.Activate("Uploading..."))
         {
             var model = await imgurService.SendImage(memoryStream.ToArray());
             if (model == null || model.Data == null || model.Data.Link == null)
             {
                 throw new InvalidOperationException("Unable to upload to Imgur. Please try again later.");
             }
             return(model.Data.Link);
         }
     });
 }