Skip to content

Instantly share code, notes, and snippets.

@LucasMoffitt
Created June 12, 2014 11:00
Show Gist options
  • Select an option

  • Save LucasMoffitt/74356e3c11e3e4542c5c to your computer and use it in GitHub Desktop.

Select an option

Save LucasMoffitt/74356e3c11e3e4542c5c to your computer and use it in GitHub Desktop.
Windows 8 Review Helper
public class ReviewHelper
{
private const int RunCountBeforePrompt = 6;
public async void SuggestReview()
{
var version = Package.Current.Id.Version;
var appVersion = string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision);
var savedVersion = SettingsManager.Get<string>("Version");
if (appVersion != savedVersion)
{
SettingsManager.Set("Version", appVersion);
SettingsManager.Set("RunCount", 0);
}
var runCount = SettingsManager.Get<int>("RunCount");
if (runCount > RunCountBeforePrompt)
return;
if (runCount < RunCountBeforePrompt)
{
runCount++;
SettingsManager.Set("RunCount", runCount);
return;
}
runCount++;
SettingsManager.Set("RunCount", runCount);
var reviewReminder = new MessageDialog("It looks like you’ve used this app a few times now, would you like to leave a review or rating to let us know what you think? We’d love to hear from you and it should only take a second or two.", "So... What do you think?");
var reviewItNow = new UICommand("Sure, i'll review it now!");
reviewReminder.Commands.Add(reviewItNow);
var doNotWant = new UICommand("No Thanks");
reviewReminder.Commands.Add(doNotWant);
if (await reviewReminder.ShowAsync() == reviewItNow)
Windows.System.Launcher.LaunchUriAsync(new Uri(string.Format("ms-windows-store:REVIEW?PFN={0}", Package.Current.Id.FamilyName)));
}
}
[TestClass]
public class ReviewHelperTest
{
public ReviewHelperTest()
{
ResetSettings();
}
[TestMethod]
public void RunCountIncrementsAfterPromptingForReview()
{
var reviewHelper = new ReviewHelper();
reviewHelper.SuggestReview();
Assert.AreEqual(SettingsManager.Get<int>("RunCount"), 1);
}
[TestMethod]
public void RunCountResetsAfterVersionChange()
{
var reviewHelper = new ReviewHelper();
reviewHelper.SuggestReview();
reviewHelper.SuggestReview();
reviewHelper.SuggestReview();
reviewHelper.SuggestReview();
Assert.AreEqual(SettingsManager.Get<int>("RunCount"), 4);
SettingsManager.Set("Version", "1.1.1.1");
reviewHelper.SuggestReview();
Assert.AreEqual(SettingsManager.Get<int>("RunCount"), 1);
}
private void ResetSettings()
{
SettingsManager.Set("Version", string.Empty);
SettingsManager.Set("RunCount", string.Empty);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment