Archived
1
0

Updated StoreInterop class and ads appearing conditions

This commit is contained in:
Michael Gordeev
2019-11-10 21:34:01 +03:00
parent 1853d18fab
commit acd63a948e
7 changed files with 71 additions and 16 deletions
+24 -10
View File
@@ -1,24 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Services.Store;
namespace FoxTube.Core.Controllers
{
public static class StoreInterop
{
public static bool AdsDisabled => false;
public static string GetProPrice()
public static bool AdsDisabled { get; private set; } = true;
public static string Price { get; private set; }
public static async Task UpdateStoreState()
{
return "$4.99";
StoreProductQueryResult requset = await StoreContext.GetDefault().GetAssociatedStoreProductsAsync(new[] { "Durable" });
if (requset.Products["9NP1QK556625"].IsInUserCollection)
return;
Price = requset.Products["9NP1QK556625"].Price.FormattedPrice;
AdsDisabled = false;
}
public static void PurchaseApp()
public static async Task<bool> PurchaseApp()
{
if (!AdsDisabled)
// TODO: Add purchase validation
return;
StorePurchaseResult request = await StoreContext.GetDefault().RequestPurchaseAsync("9NP1QK556625");
switch (request.Status)
{
case StorePurchaseStatus.AlreadyPurchased:
case StorePurchaseStatus.Succeeded:
AdsDisabled = true;
return true;
default:
return false;
}
}
}
}
+4
View File
@@ -123,6 +123,7 @@
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="Controllers\StoreInterop.cs" />
<Compile Include="Helpers.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
@@ -130,6 +131,9 @@
<Version>6.2.9</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Models\" />
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
+14
View File
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FoxTube.Core
{
public static class Helpers
{
public static Uri ToUri(this string str) =>
string.IsNullOrWhiteSpace(str) ? null : new Uri(str);
}
}
+5 -2
View File
@@ -1,4 +1,5 @@
using Windows.ApplicationModel.Activation;
using FoxTube.Core.Controllers;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;
namespace FoxTube
@@ -8,8 +9,10 @@ namespace FoxTube
public App() =>
InitializeComponent();
protected override void OnLaunched(LaunchActivatedEventArgs e)
protected override async void OnLaunched(LaunchActivatedEventArgs e)
{
await StoreInterop.UpdateStoreState();
if (!e.PrelaunchActivated && Window.Current.Content == null)
Window.Current.Content = new MainPage();
Window.Current.Activate();
+2 -1
View File
@@ -1,4 +1,5 @@
using FoxTube.Controls.Cards;
using FoxTube.Core.Controllers;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@@ -16,7 +17,7 @@ namespace FoxTube.Controls
{
empty.Opacity = 0;
if (ItemsCount % 5 == 0 && ItemsCount > 0)
if (!StoreInterop.AdsDisabled && ItemsCount % 5 == 0 && ItemsCount > 0)
Items.Add(new AdvertCard());
Items.Add(item);
}
+7
View File
@@ -1,5 +1,6 @@
using Microsoft.Services.Store.Engagement;
using System;
using Windows.ApplicationModel.Core;
namespace FoxTube.Helpers
{
@@ -12,5 +13,11 @@ namespace FoxTube.Helpers
if(HasFeedbackHub)
await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync();
}
public static void CloseApp() =>
CoreApplication.Exit();
public static async void RestartApp(string args = "") =>
await CoreApplication.RequestRestartAsync(args);
}
}
+15 -3
View File
@@ -5,6 +5,7 @@ using System;
using Windows.ApplicationModel.Core;
using Windows.Foundation.Metadata;
using Windows.UI;
using Windows.UI.Popups;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@@ -41,7 +42,7 @@ namespace FoxTube
LeaveFeedback.Visibility = Utils.HasFeedbackHub ? Visibility.Visible : Visibility.Collapsed;
RemoveAds.Visibility = StoreInterop.AdsDisabled ? Visibility.Collapsed : Visibility.Visible;
if (!StoreInterop.AdsDisabled)
RemoveAds.Content += $" ({StoreInterop.GetProPrice()})";
RemoveAds.Content += $" ({StoreInterop.Price})";
}
void NavigationView_DisplayModeChanged(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewDisplayModeChangedEventArgs args)
@@ -88,8 +89,19 @@ namespace FoxTube
void LeaveFeedback_Click(object sender, RoutedEventArgs e) =>
Utils.OpenFeedbackHub();
void RemoveAds_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) =>
StoreInterop.PurchaseApp();
async void RemoveAds_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
bool success = await StoreInterop.PurchaseApp();
if (success)
{
MessageDialog dialog = new MessageDialog("Thanks for purchasing full version of the app (^∇^) In order to complete changes we need to reopen it. But you can do it later (some elements may be broken)", "Thank you for your purchase!");
dialog.Commands.Add(new UICommand("Restart", (command) => Utils.RestartApp()));
dialog.Commands.Add(new UICommand("Later"));
dialog.CancelCommandIndex = 1;
dialog.DefaultCommandIndex = 0;
await dialog.ShowAsync();
}
}
public static void Navigate(Type pageType)
{