public static ChaseOutcome Probe(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto) { var chaser = new Chaser(); var chaseOutcome = chaser.Chase(ratingDetailsDto, extensionDetailsDto); return(chaseOutcome); }
/// <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); }
private static void InaugrualInvocation(IRatingDetailsDto ratingDetailsDto) { if (IsInaugrualInvocation(ratingDetailsDto.RatingRequestCount, ratingDetailsDto.PreviousRatingRequest)) { ratingDetailsDto.PreviousRatingRequest = DateTime.Now; ratingDetailsDto.SaveSettingsToStorage(); } }
private void ShowDialog(IRatingDetailsDto ratingDetailsDto, ExtensionDetailsDto extensionDetailsDto) { ratingDetailsDto.RatingRequestCount++; var ratingDialog = new RatingDialog(extensionDetailsDto, ratingDetailsDto.RatingRequestCount); ratingDialog.Show(); _ratingHyperLinkClicked = ratingDialog.RatingHyperLinkClicked; PersistRatingDetails(ratingDetailsDto); }
internal bool ShouldShowDialog(IRatingDetailsDto ratingDetailsDto) { var exceededRatingRequestLimit = ExceededRatingRequestLimit(ratingDetailsDto.RatingRequestCount, ChaseSettings.RatingRequestLimit); var exceededChaseTimeGapLimit = ExceededRatingRequestGap(ratingDetailsDto.PreviousRatingRequest, ChaseSettings.RatingRequestGapInMonths, DateTime.Now); var shouldShowDialog = ShouldShowDialog(exceededRatingRequestLimit, exceededChaseTimeGapLimit); return(shouldShowDialog); }
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); }
private void PersistRatingDetails(IRatingDetailsDto ratingDetailsDto) { ratingDetailsDto.PreviousRatingRequest = DateTime.Now; ratingDetailsDto.SaveSettingsToStorage(); }