/// #######################################################################################
        public async Task <bool> ShowRatingReviewDialog()
        {
            StoreContext             _storeContext = StoreContext.GetDefault();;
            StoreRateAndReviewResult result        = await _storeContext.RequestRateAndReviewAppAsync();

            switch (result.Status)
            {
            case StoreRateAndReviewStatus.Succeeded:
                await LottiePlayer.PlayAsync(0, 1, false);

                break;

            case StoreRateAndReviewStatus.CanceledByUser:
                break;

            case StoreRateAndReviewStatus.Error:
            case StoreRateAndReviewStatus.NetworkError:
                await new MessageDialog("Something went wrong.").ShowAsync();
                break;

            default:
                break;
            }
            // There was an error with the request, or the customer chose not to
            // rate or review the app.
            return(false);
        }
        public async Task <object> ExecuteAsync(CancellationToken cancellationToken)
        {
            // Do you enoy the app?
            ContentDialogResult dialogResult = await _windowManager.ShowMessageDialogAsync(
                LanguageManager.Instance.RateAndReviewApp.EnjoyingMessage,
                LanguageManager.Instance.RateAndReviewApp.EnjoyingCloseButtonText,
                LanguageManager.Instance.RateAndReviewApp.EnjoyingPrimaryButtonText,
                title : LanguageManager.Instance.RateAndReviewApp.EnjoyingTitle,
                defaultButton : ContentDialogButton.Primary)
                                               .ConfigureAwait(true);

            if (dialogResult == ContentDialogResult.Primary)
            {
                // Yes!
                // Would you mind rating it?
                dialogResult = await _windowManager.ShowMessageDialogAsync(
                    LanguageManager.Instance.RateAndReviewApp.RateMessage,
                    LanguageManager.Instance.RateAndReviewApp.RateCloseButtonText,
                    LanguageManager.Instance.RateAndReviewApp.RatePrimaryButtonText,
                    LanguageManager.Instance.RateAndReviewApp.RateSecondaryButtonText,
                    LanguageManager.Instance.RateAndReviewApp.RateTitle,
                    defaultButton : ContentDialogButton.Primary)
                               .ConfigureAwait(true);

                if (dialogResult == ContentDialogResult.Primary)
                {
                    // Yes!
                    StoreContext storeContext = StoreContext.GetDefault();

                    StoreRateAndReviewResult result = await TaskHelper.RunOnUIThreadAsync(async() =>
                    {
                        return(await storeContext.RequestRateAndReviewAppAsync());
                    }).ConfigureAwait(false);

                    if (result.Status == StoreRateAndReviewStatus.Succeeded)
                    {
                        // do not ask again.
                        _settingsProvider.SetSetting(SettingsDefinitions.UserRatedAndReviewedTheApp, true);
                    }
                }
                else if (dialogResult == ContentDialogResult.Secondary)
                {
                    // Maybe later
                }
                else
                {
                    // No, thanks
                    // do not ask again.
                    _settingsProvider.SetSetting(SettingsDefinitions.UserRatedAndReviewedTheApp, true);
                }
            }
            else
            {
                // Not really
                // Would you give a feedback?
                dialogResult = await _windowManager.ShowMessageDialogAsync(
                    LanguageManager.Instance.RateAndReviewApp.FeedbackMessage,
                    LanguageManager.Instance.RateAndReviewApp.FeedbackCloseButtonText,
                    LanguageManager.Instance.RateAndReviewApp.FeedbackPrimaryButtonText,
                    title : LanguageManager.Instance.RateAndReviewApp.FeedbackTitle,
                    defaultButton : ContentDialogButton.Primary)
                               .ConfigureAwait(true);

                if (dialogResult == ContentDialogResult.Primary)
                {
                    // Ok, sure
                    await TaskHelper.RunOnUIThreadAsync(async() =>
                    {
                        await Launcher.LaunchUriAsync(new Uri("https://github.com/veler/pazword/issues/new/choose"));
                    }).ConfigureAwait(false);
                }

                // do not ask again.
                _settingsProvider.SetSetting(SettingsDefinitions.UserRatedAndReviewedTheApp, true);
            }

            return(null);
        }
Exemplo n.º 3
0
 private async void RateAppBtn_Click(object sender, RoutedEventArgs e)
 {
     var storeContext = StoreContext.GetDefault();
     StoreRateAndReviewResult result = await storeContext.RequestRateAndReviewAppAsync();
 }