public static ChaseOutcome Probe(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto)
        {
            var chaser       = new Chaser();
            var chaseOutcome = chaser.Chase(ratingDetailsDto, extensionDetailsDto);

            return(chaseOutcome);
        }
예제 #2
0
        internal ChaseOutcome Validate(ExtensionDetailsDto extensionDetailsDto)
        {
            //TODO validate name & author > 3 long

            var outcome = ChaseOutcome.Unknown;

            if (string.IsNullOrWhiteSpace(extensionDetailsDto?.AuthorName))
            {
                outcome = ChaseOutcome.InvalidCallAsAuthorNameCannotBeBlank;
            }
            else
            {
                if (string.IsNullOrWhiteSpace(extensionDetailsDto?.ExtensionName))
                {
                    outcome = ChaseOutcome.InvalidCallAsExtensionNameCannotBeBlank;
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(extensionDetailsDto?.MarketPlaceUrl))
                    {
                        outcome = ChaseOutcome.InvalidCallAsMarketplaceUrlCannotBeBlank;
                    }
                    else
                    {
                        if (!extensionDetailsDto.MarketPlaceUrl.ToLower()
                            .StartsWith(ChaseSettings.MarketplaceUrlPrefix.ToLower()))
                        {
                            outcome = ChaseOutcome.InvalidCallAsMarketplaceUrlIsNotTheVisualStudioMarketplaceDomain;
                        }
                    }
                }
            }

            return(outcome);
        }
예제 #3
0
        /// <summary>
        /// Validates the request and conditionally displays a pop-up to user asking for an online rating / review
        /// </summary>
        /// <param name="ratingDetailsDto">Parameter data related to the request for ratings</param>
        /// <param name="extensionDetailsDto">Parameter data related to the Visual Studio extension</param>
        /// <returns>The result of the package invocation</returns>
        public ChaseOutcome Chase(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto)
        {
            var outcome = Validate(extensionDetailsDto);

            if (outcome == ChaseOutcome.Unknown)
            {
                InaugrualInvocation(ratingDetailsDto);
                outcome = ValidateRatingDetailsDto(ratingDetailsDto.RatingRequestCount, ratingDetailsDto.PreviousRatingRequest);

                if (outcome == ChaseOutcome.Unknown)
                {
                    var ratingDecider    = new RatingDecider();
                    var shouldShowDialog = ratingDecider.ShouldShowDialog(ratingDetailsDto);

                    if (shouldShowDialog)
                    {
                        ShowDialog(ratingDetailsDto, extensionDetailsDto);
                        outcome = _ratingHyperLinkClicked ? ChaseOutcome.SuccessfullCallAndDialogShownToUserUrlClicked : ChaseOutcome.SuccessfullCallAndDialogShownToUserUrlNotClicked;
                    }
                    else
                    {
                        outcome = ChaseOutcome.SuccessfullCallButDialogNotShownToUser;
                    }
                }
            }

            return(outcome);
        }
예제 #4
0
        private void ShowDialog(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto)
        {
            ratingDetailsDto.RatingRequestCount++;
            var ratingDialog = new RatingDialog(extensionDetailsDto, ratingDetailsDto.RatingRequestCount);

            ratingDialog.Show();
            _ratingHyperLinkClicked = ratingDialog.RatingHyperLinkClicked;
            PersistRatingDetails(ratingDetailsDto);
        }
        private ChaseOutcome ValidateTest(ExtensionDetailsDto extensionDetailsDto)
        {
            //Arrange
            var sut = new Chaser();

            //Act
            var actual = sut.Validate(extensionDetailsDto);

            return(actual);
        }
        public void Hunt(IRatingDetailsDto ratingDetailsDto)
        {
            var extensionDetailsDto = new ExtensionDetailsDto
            {
                AuthorName     = Vsix.Author,
                ExtensionName  = Vsix.Name,
                MarketPlaceUrl = "https://marketplace.visualstudio.com/items?itemName=GregTrevellick.DrainTheSwamp"
            };

            Probe(ratingDetailsDto, extensionDetailsDto);
        }
        public void Hunt(IRatingDetailsDto ratingDetailsDto)
        {
            var extensionDetailsDto = new ExtensionDetailsDto
            {
                AuthorName     = Vsix.Author,
                ExtensionName  = Vsix.Name,
                MarketPlaceUrl = "https://marketplace.visualstudio.com/items?itemName=GregTrevellick.SolutionOpenPopUp"
            };

            ChaserGateway.Probe(ratingDetailsDto, extensionDetailsDto);
        }
 internal RatingDialog(ExtensionDetailsDto extensionDetailsDto, int ratingRequestCount)
 {
     InitializeComponent();
     _extensionDetailsDto = extensionDetailsDto;
     InitializeRatingRequest(ratingRequestCount);
 }